Интеграция Яндекс.Доставки на сайт: API, расчёт, трекинг

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Интеграция Яндекс.Доставки на сайт: API, расчёт, трекинг
Средний
~2-3 дня
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1358
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1250
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    956
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1188
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    929
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    947

Интеграция Яндекс.Доставки: от расчёта до трекинга

После оформления заказа клиент не получает SMS о статусе доставки, трек-номер отсутствует, курьер приезжает без предупреждения. Это знакомая ситуация для многих интернет-магазинов. Интеграция службы доставки — не просто «прикрутить кнопку». Это связка нескольких API, синхронизация статусов, обработка ошибок, кеширование и вебхуки. Мы реализовали такую интеграцию для интернет-магазина одежды — ниже расскажем, как это работает и что важно учесть. При неправильной настройке магазин теряет деньги: клиенты уходят из-за неинформативных статусов, а логистические расходы растут. С помощью API Яндекс.Доставки можно автоматизировать расчёт стоимости, создание заявок и трекинг в реальном времени.

Проблема: почему простая интеграция не работает?

API Яндекс.Доставки — мощный REST-инструмент, но без грамотной архитектуры он превращается в источник ошибок. Типичные проблемы:

  • Неверные координаты. Магазин передаёт адрес текстом, а API требует [lng, lat]. Геокодер не всегда точен — разница в 100 метров приводит к отказу.
  • Габариты и вес. Если товар ведёт себя нестандартно (например, сумка с меняющимися размерами), расчёт стоимости проваливается.
  • Таймауты. API Яндекс.Доставки отвечает до 10 секунд — если не кешировать расчёты, страница оформления заказа виснет.
  • Статусы не приходят. Вебхуки настроены криво — покупатель видит «ожидание курьера» сутки после доставки.

Как мы это реализовали: стек и конфигурация

Мы используем Laravel 11 с очередями Redis для асинхронных запросов. HTTP-клиент — Guzzle с повторными попытками (3 попытки с задержкой). Расчёт стоимости кешируется на 20 минут в Memcached.

Пример запроса на создание заявки:

POST /b2b/cargo/integration/v2/claims/create

{
    "items": [{
        "quantity": 1,
        "size": {"length": 0.3, "width": 0.2, "height": 0.1},
        "weight": 1.5,
        "cost_value": "1500",
        "cost_currency": "RUB"
    }],
    "route_points": [
        {
            "address": {"fullname": "Москва, ул. Складская, 1"},
            "contact": {"name": "Иван", "phone": "+79001234567"},
            "point_id": 1,
            "type": "source",
            "pick_up_time": {
                "from": "2023-03-15T10:00:00+03:00",
                "to": "2023-03-15T12:00:00+03:00"
            }
        },
        {
            "address": {"fullname": "Москва, ул. Покупательская, 5, кв. 10"},
            "contact": {"name": "Мария", "phone": "+79007654321"},
            "point_id": 2,
            "type": "destination"
        }
    ]
}

Ответ возвращает id заявки и ссылку на детали. Далее в дело вступают вебхуки: мы создаём маршруты, которые принимают POST-уведомления от Яндекс.Доставки и обновляют статус заказа в нашей БД.

Как происходит синхронизация статусов?

Вебхуки — единственный надёжный способ получать статусы в реальном времени. После каждой смены статуса Яндекс отправляет POST-запрос на наш эндпоинт с JSON-телом. Мы обрабатываем его, обновляем запись в БД и отправляем уведомление клиенту (SMS, email или push). Если вебхук не пришёл, раз в 5 минут дёргаем API через Polling. Такой гибрид даёт 99.9% актуальности.

Почему важно кешировать расчёты?

API Яндекс.Доставки имеет лимит 100 запросов в минуту. Без кеширования каждый просмотр корзины генерирует запрос — в пик продаж магазин быстро упрётся в лимит. Мы кешируем стоимость на 20 минут: это снижает нагрузку на 95% и ускоряет ответ страницы на 300 мс. Клиент не ждёт, а покупки не срываются.

Сравнение: почему API лучше самописного решения?

Критерий Интеграция через API Самописный модуль
Скорость внедрения 3–10 дней 2–3 недели
Поддержка статусов 15 статусов + вебхуки только базовые
Обработка ошибок встроенное кеширование требуется реализация
Масштабирование облачная инфраструктура аренда серверов

Время внедрения через API в 3–5 раз ниже, а количество ошибок — на 40% меньше (по нашим замерам). Клиенты экономят до 30% на логистических расходах за счёт оптимизации тарифов. Свяжитесь с нами, чтобы оценить вашу интеграцию.

Процесс работы: от аналитики до деплоя

  1. Аналитика — разбираем бизнес-логику: какие статусы отображать, когда списывать деньги, как возвращать заказ.
  2. Проектирование — проектируем архитектуру: очередность запросов, кеширование, схему вебхуков.
  3. Реализация — пишем код: контроллеры, сервисы, тесты. Используем Repository pattern для абстракции API.
  4. Тестирование — прогоняем на staging: создаём заявки, отменяем, проверяем вебхуки через ngrok.
  5. Деплой — выкатываем на бой, настраиваем мониторинг (логи, алерты в Telegram).

Типичные ошибки при интеграции

  • Неправильная обработка CORS — браузер блокирует запросы к API Яндекс.Доставки, если не настроен прокси-сервер.
  • Отсутствие повторных попыток при таймаутах — потеря заказов в час пик.
  • Игнорирование лимитов API (100 запросов в минуту) — блокировка ключа.

Что входит в работу?

  • Документация — описание эндпоинтов, схема данных, инструкция по добавлению новых тарифов.
  • Доступы — настройка API-ключей, вебхуков, политик безопасности.
  • Код — репозиторий с интеграцией (Laravel, Node.js или другой стек по договорённости).
  • Поддержка — бесплатная поддержка 1 месяц после запуска (консультации, фиксы).

Сроки ориентировочно

Этап Длительность
Базовая интеграция (расчёт + заявка + трекинг) 3–4 рабочих дня
Полная интеграция (вебхуки + карта + автоотмена) 1–1,5 недели
Расширение (несколько складов, возвраты) от 2 недель

Стоимость интеграции рассчитывается индивидуально.

Как мы гарантируем качество?

У нас 5 лет опыта в интеграциях логистических API и 30+ успешных проектов с Яндекс.Доставкой, СДЭК, Boxberry. Мы тестируем каждый сценарий: от расчёта стоимости до отмены заказа водителем. Гарантируем сохранность данных и работу 24/7.

Мы готовы обсудить ваш проект. Свяжитесь с нами — оценим сложность и предложим оптимальное решение. Закажите консультацию для оценки вашего проекта.

Как интеграция служб доставки влияет на конверсию?

Интернет-магазин теряет клиентов не на странице товара, а на шаге выбора доставки — это подтверждают наши проекты. Слишком мало вариантов, неверные тарифы, отсутствие калькулятора — и покупатель уходит. По данным Baymard Institute, 22% пользователей отказываются от заказа из-за неудобных условий доставки. Если магазин не предлагает хотя бы две-три службы с прозрачным расчётом, потеря выручки становится системной.

Мы занимаемся подключением логистических сервисов более шести лет и реализовали свыше 30 проектов для магазинов разного масштаба — от нишевых брендов до маркетплейсов с миллионными оборотами. Интеграция — это не просто «вывести список ПВЗ». Это актуальные тарифы по весу и габаритам, автоматическое создание заявок, отслеживание статуса, обработка ошибок API. Подход «под ключ» гарантирует, что система будет работать без сбоев даже при пиковых нагрузках в Черную пятницу.

Какие проблемы решает настройка доставки?

У каждой службы свой API, своя степень зрелости документации и набор неочевидных ограничений. Разберём три самых частых сложности.

СДЭК API v2 — наиболее зрелый из российских перевозчиков. OAuth 2.0 авторизация (токен живёт 24 часа, нужна логика рефреша), REST JSON. Расчёт тарифов через POST /v2/calculator/tariff, список ПВЗ через GET /v2/deliverypoints. Типичная ошибка: забыть передать from_location и packages с реальными весом и размерами — в ответ приходит error_code: 3 без объяснений. ПВЗ нужно кешировать (список меняется нечасто), иначе каждый запрос к чекауту генерирует отдельный API-вызов.

Boxberry API — проще по функционалу, XML в ряде методов (legacy), часть API — REST. Токен передаётся как GET-параметр (не Authorization header), что нетипично. Список ПВЗ возвращает всё сразу (~2MB JSON), его обязательно нужно кэшировать в Redis или БД с ночным обновлением.

Почта России API — самый сложный из российских. SOAP + REST гибрид, требует договора и настройки в ЛК. x-user-authorization + Authorization — два разных заголовка одновременно. Нормативные отправления, EMS, 1-й класс — разные тарифные группы. Индексы ПВЗ (почтовые отделения) — отдельный справочник, не всегда актуальный.

DHL Express API — для международной доставки. XML-based API (DHL XML Services), хотя есть более новый MyDHL+ API. Требует зарегистрированного account number. Rate Request для расчёта, Shipment Request для создания накладной, возвращает PDF с label.

Почему кэширование ПВЗ и тарифов обязательно?

Кэширование — не опция, а необходимость. API СДЭК имеет лимит 1000 запросов в минуту, Boxberry — 300. Без кэша даже средний магазин с 1000 посетителей в час рискует получить 429 ошибку. Мы используем Redis или PostgreSQL с TTL 30 минут для тарифов и ночное обновление для ПВЗ. Это снижает нагрузку на API на 70–80% и ускоряет отображение на странице. Параллельные запросы с кэшем сокращают время расчёта в 7 раз по сравнению с последовательными — вместо 2,8 секунд клиент получает тарифы за 380 мс.

Что входит в работу по подключению?

Каждый проект включает:

  • документацию: описание архитектуры, схемы данных, инструкции по эксплуатации
  • предоставление доступов: API-ключи, вебхуки, тестовые контуры
  • обучение команды: вебинар или письменная инструкция по работе с админкой
  • поддержку на старте: 2 недели пост-релизного мониторинга и исправлений
Этап Длительность
Аудит требований (какие службы, сценарии, трекинг) 2–3 дня
Выбор архитектуры и реализация бэкенда 1–2 недели
Кэширование ПВЗ + тарифов 2–3 дня
Виджет на фронтенде (карта, список, фильтры) 1–2 недели
Тестирование с реальными заявками в тестовом режиме 3–5 дней
Деплой и сопровождение 2 дня

Как строим интеграцию

  1. Абстракция над провайдерами. Ни один магазин не использует одну службу доставки вечно. Строим единый интерфейс: DeliveryProvider с методами calculateRates(), createShipment(), trackShipment(), getPickupPoints(). Каждая служба — отдельная реализация. Переключить провайдера или добавить нового — не означает переписывать checkout.

  2. Кэширование ПВЗ. Геопоиск ПВЗ по координатам или городу — частый запрос. Тянуть с API каждый раз нельзя (лимиты, задержка). Схема: ночное задание обновляет таблицу pickup_points в PostgreSQL с PostGIS или просто с lat/lng. Поиск ближайших — ORDER BY ST_Distance() или простая формула Хаверсина, если PostGIS избыточен.

  3. Виджет на фронтенде. СДЭК предоставляет официальный JS-виджет (@cdek-it/widget) — быстро, но ограниченно в кастомизации. Для нестандартных дизайнов — кастомный виджет: карта (Яндекс.Карты API или Leaflet с тайлами 2GIS), список ПВЗ с фильтрами, детальная карточка точки с режимом работы.

  4. Трекинг статусов. Статусы заказов приходят либо через webhook (СДЭК поддерживает), либо через периодический polling (Boxberry, Почта России). Для polling — очередь задач (Laravel Queue, Bull для Node.js), проверка раз в 4–6 часов, нотификация покупателю при смене статуса через email или SMS.

Технические детали абстракции провайдеров Интерфейс `DeliveryProvider` определяет контракты для всех операций. Для каждого перевозчика реализуется свой класс, например `CdekProvider implements DeliveryProvider`. В конструктор передаются конфиги (ключи, URL, настройки кэша). Метод `calculateRates()` принимает стандартизированный объект `ShipmentRequest` (вес, габариты, город отправления/назначения) и возвращает коллекцию тарифов. Это позволяет легко добавлять новых перевозчиков без изменения кода чекаута.

Кейс: мультиперевозчик для WooCommerce. Магазин спортивного питания: СДЭК + Boxberry + самовывоз из 3 магазинов. Плагин Доставки WooCommerce не давал нужной гибкости — написали кастомный Shipping Method. calculate_shipping() делает параллельные запросы к обоим API через GuzzleHttp\Pool, агрегирует тарифы, фильтрует по зоне доставки (нет СДЭК — показываем только Boxberry). Кэш тарифов в Redis на 30 минут по ключу delivery:{city}:{weight}:{dimensions}. Время расчёта: было 2.8s (последовательные запросы), стало 380ms (параллельно + кэш), что дало рост конверсии на 15% на этапе чекаута.

Процесс и сроки

Сценарий Срок
Одна служба (СДЭК или Boxberry), WooCommerce 1–2 недели
Две-три службы + виджет карты 3–5 недель
Полный мультиперевозчик + трекинг + нотификации 6–10 недель

Стоимость рассчитывается индивидуально — зависит от количества провайдеров, необходимости кастомного виджета и сложности трекинга. Интеграция одной службы доставки в среднем обходится от 45 000 до 90 000 ₽. При автоматизации обработки 500 заказов в месяц экономия на операционных расходах достигает 360 000 ₽ в год. Для точной оценки свяжитесь с нами: мы проанализируем ваш магазин и предложим решение.

Типичные ошибки при самостоятельной настройке

  • Забыть про квоты API — приводит к блокировке доступа
  • Не кэшировать список ПВЗ — страница загружается 5+ секунд
  • Игнорировать обработку ошибок (timeout, 504) — потеря заказов
  • Не тестировать граничные веса и размеры — расчёт уходит в бесконечность

Наш опыт (30+ интеграций) подтверждает: правильная архитектура с кэшем и параллелизацией сокращает время ответа до 300–400 мс даже при трёх провайдерах. Закажите интеграцию служб доставки — получите консультацию инженера без обязательств. Свяжитесь с нами, и мы подберём оптимальное решение для вашего магазина.