Xistore.by
Электронная коммерция
Беларусь, Минск
Март 2022
Что мы сделали? Внедрили интеграцию с сервисом Яндекс Доставка через использование API.
API представляет собой набор правил, определяющих, как программы или приложения взаимодействуют между собой. Проще говоря, API — это связующее звено между различными технологиями или частями программного обеспечения. Благодаря API разработчики могут использовать уже готовые функции и методы, облегчая интеграцию и обеспечивая безопасность взаимодействия между различными системами.
Почему это важно? Компания Xistore.by приняла решение о внедрении доставки товаров через сервис Яндекс Доставка. Согласно статистике, этот сервис позволяет доставлять заказы в течение 30 минут по городу. Это означает, что после интеграции клиенты смогут оперативно получить товары, например, в качестве подарка, без необходимости посещать магазин или ждать свободного курьера компании.
Что такое Яндекс Доставка?
Яндекс Доставка — это сервис для бизнеса, который предоставляет возможность управлять доставками через личный кабинет или с помощью интеграции. Он предлагает быстрые и надежные решения как для частных лиц, так и для компаний. Сервис активно трансформирует рынок логистики, используя передовые технологии и данные: автоматически распределяет заказы среди курьеров, прогнозирует потребности и оптимизирует маршруты в режиме реального времени. Выбор исполнителя для заказа — сложный процесс, управляемый уникальными алгоритмами. Ежемесячно клиенты сервиса оформляют свыше 5 миллионов заказов.
Как это работает?
Перед внедрением решения мы совместно с клиентом разработали алгоритм для организации доставки через сервис Яндекс Доставка:
1. При оформлении заказа пользователь указывает адрес доставки.
2. Алгоритм обрабатывает введенный адрес и выполняет поиск магазина, который может выполнить доставку, учитывая часы работы, наличие товаров и их размеры.
3. Если подходящий магазин найден, на сайте отображается возможность доставки через Яндекс Доставку.
4. После подтверждения возможности доставки на этапе оформления заказа в системе Яндекс Доставка происходит предварительное бронирование, и клиенту предоставляется время для оплаты заказа онлайн.
5. Если заказ оплачен, его статус меняется на "Оплачен", и он становится доступен для курьеров сервиса Яндекс Доставка.
Чтобы избежать ошибок при вводе адреса на этапе оформления заказа, мы интегрировали API стороннего сервиса DaData. Теперь, когда пользователь вводит адрес доставки на сайте, DaData автоматически предлагает корректные варианты из существующих адресов, и пользователю остается лишь выбрать нужный:
Кроме приведения адресов к стандартному формату, API от DaData также позволяет получать координаты и город в удобном формате, что существенно облегчает дальнейшую работу с сервисом Яндекс Доставка.
После получения адреса и его координат мы определяем, нужно ли предлагать пользователю возможность доставки через Яндекс Доставку.
Проверяем, соответствует ли товар требованиям для Яндекс Доставки. Если он слишком крупный или тяжелый, эта опция недоступна.
Анализируем, входит ли указанный адрес в зону доставки: сверяем его с адресами всех магазинов в том же населенном пункте. Если подходящие магазины отсутствуют, возможность оформления через Яндекс Доставку скрывается.
Среди найденных магазинов проверяем наличие необходимого товара в нужном количестве. Если товар отсутствует, опция доставки также не показывается.
Используя координаты магазинов, определяем ближайший к адресу доставки.
Дополнительно проверяем, открыт ли магазин в момент оформления заказа. Если нет, возможность доставки через Яндекс Доставку не отображается.
На основании всех этих проверок на странице отображается возможность экспресс-доставки и ее стоимость.
Мы также рассматривали вариант добавления дополнительного параметра, который бы определял магазин с минимальной стоимостью доставки.
Однако этот вариант был отклонен по двум причинам:
1. Количество магазинов невелико, и в большинстве случаев (около 90%) доставка из ближайшего магазина будет дешевле.
2. API Яндекса не позволяет узнать точную стоимость доставки без оформления предварительного заказа. Для определения конечной суммы пришлось бы создавать предварительные заказы для каждого магазина, что привело бы к засорению личного кабинета Яндекс Доставки.
1. Определение формата передачи данных в API.
Определение формата передачи данных в API оказалось непростой задачей. Хотя у Яндекса есть неплохая документация, многие вопросы пришлось решать методом проб и ошибок. Документация не всегда достаточно детализирована, а некоторые сведения оказались неточными. Это было связано с тем, что на момент реализации проекта сервис только недавно вышел на рынок РБ и еще проходил процесс отладки.
Из-за этого возникли трудности с определением правильного формата передачи данных с сайта в API для создания заявки на доставку. Проблему удалось решить с помощью метода проб и ошибок, а также благодаря поддержке представителей Яндекса.
После того как формат данных был окончательно определен, оставалось лишь передать их с нашей стороны.
2. Дублирование заявок в рамках одного посещения и пересчет стоимости.
Возникла проблема с дублированием заявок в рамках одного сеанса. Например, если покупатель сначала выбирал «Яндекс Доставку» для расчета стоимости, затем переключался на другой тип доставки, а потом возвращался к Яндекс Доставке, система создавала два запроса к API, что приводило к появлению двух идентичных заявок в личном кабинете Яндекс Доставки. Эти дубликаты засоряли личный кабинет, а также могли вызвать недовольство у клиентов, так как стоимость доставки могла измениться при повторном запросе, даже если параметры заказа оставались неизменными.
Для решения этой проблемы мы разработали систему, которая предотвращает создание дублей заявок. Мы добавили уникальный ID к запросу API, который учитывает все параметры, указанные пользователем при оформлении заказа. При повторном выборе Яндекс Доставки система использует этот ID, чтобы обратиться к уже существующей заявке в личном кабинете, а не создавать новую.
Кроме того, для поддержания чистоты в личном кабинете Яндекс Доставки мы внедрили агент на cron, который регулярно получает список просроченных и неоформленных заявок через API и удаляет их.
Эти меры позволили избежать дублирования заявок и обеспечили отображение первоначальной стоимости доставки при повторном обращении к заявке с теми же параметрами.
Эта интеграция значительно повышает эффективность работы магазина, улучшает обслуживание клиентов и способствует формированию положительного имиджа бренда Xistore.by. Рассмотрим результаты интеграции для пользователей сайта и владельца бизнеса:
Результаты для пользователей сайта:
1) Удобство оформления заказа: Интеграция с DaData и прозрачное отображение вариантов доставки делают процесс заказа более комфортным и простым для пользователей.
2) Быстрая доставка: Благодаря Яндекс Доставке, покупатели могут получать свои заказы в пределах города всего за 30 минут, что обеспечивает высокий уровень обслуживания независимо от загруженности курьеров компании.
3) Стабильность стоимости доставки: Использование уникальных идентификаторов запросов предотвращает изменения стоимости доставки при повторных запросах, создавая надежные и предсказуемые условия для покупателей.
Результаты для владельца сайта:
1) Исключение ошибок в адресах: Интеграция с API DaData помогает стандартизировать адреса, что минимизирует вероятность ошибок со стороны пользователей и улучшает точность доставки.
2) Оптимизация доставки и логистики: Анализ зон доставки, выбор оптимальных магазинов и учет наличия товаров способствуют снижению затрат на доставку и улучшению финансовых показателей компании. Также, интеграция с Яндекс Доставкой разгрузила внутренний отдел доставки.
3) Повышение конкурентоспособности: Быстрая и удобная доставка через Яндекс Доставку предоставляет клиентам больше возможностей, что укрепляет позиции магазина Xistore.by на рынке.
Manao (Манао) с удовольствием обсудит вашу задачу