Интеграция СДЭК с сайтом: пошаговое руководство для разработчиков

Когда количество заказов в интернет-магазине начинает измеряться десятками и сотнями в день, ручная обработка доставки становится неэффективной. Возникают ошибки в расчётах, задержки в обработке, теряются посылки — и всё это неизбежно ведёт к ухудшению клиентского опыта. Автоматизация доставки перестала быть просто удобным инструментом и превратилась в необходимость для любого растущего бизнеса.

Интеграция со СДЭК — это возможность полностью автоматизировать логистику: от расчёта стоимости доставки на этапе оформления заказа до автоматического создания заявки в системе перевозчика, отслеживания статусов и печати документов. Служба доставки СДЭК зарекомендовала себя как надёжный партнёр для интернет-бизнеса, располагая сетью из около 6000 пунктов выдачи заказов и предлагая гибкие решения для интеграции с онлайн-магазинами.

В этой статье мы подробно разберём пошаговую инструкцию по интеграции СДЭК с сайтом. Вы узнаете, как получить доступ к API, настроить авторизацию, реализовать основные методы, подключить веб-хуки для отслеживания статусов, а также как избежать типичных ошибок. Статья ориентирована на разработчиков, которые подключают СДЭК к интернет-магазину на любой CMS или самописной системе.

Что нужно знать перед началом интеграции

Прежде чем приступить к интеграции, важно убедиться, что у вас есть всё необходимое. Это сэкономит время и избавит от лишних вопросов в процессе работы.
  • Требования к разработчику
    Для успешной интеграции вам потребуются:
    • Базовое понимание REST API, HTTP-запросов, JSON и принципов авторизации через токены.
    • Навыки работы с выбранным языком программирования (PHP, Python, Ruby, Java, JavaScript и др.).
    • Доступ к серверу или хостингу для настройки веб-хуков и тестирования.
    • Опыт работы с системами управления сайтом (CMS), если вы планируете использовать готовый модуль.
    Если вы работаете с PHP, обратите внимание на официальные SDK. Например, для работы с API v2.0 требуется PHP 7.1 или выше. SDK использует спецификацию PSR-18 (HTTP-client), поэтому в качестве HTTP-клиента можно использовать любой клиент, поддерживающий данную спецификацию.
  • Что нужно получить от СДЭК
    Для доступа к API СДЭК необходимо:
    1. Заключить договор со СДЭК (для юридических лиц или индивидуальных предпринимателей). Доступ к API выдаётся только при наличии договора с компанией.
    2. Получить учётные данные для API: Для API v2.0 — client_id и client_secret. Эти данные создаются в личном кабинете СДЭК в разделе «Интеграция». Для устаревших версий API — Account и Secure Password.
    3. Доступ к личному кабинету СДЭК (https://lk.cdek.ru/) — здесь вы будете управлять ключами, настраивать веб-хуки и отслеживать заказы.
  • Версии API СДЭК
    СДЭК предлагает две версии API:
    • API v2.0 — современная версия, рекомендуется для всех новых интеграций. Использует OAuth 2.0 для авторизации. Базовый URL: https://api.cdek.ru/v2/.
    • XML API (v1.5) — устаревшая версия, поддерживается для обратной совместимости.
    В этой статье мы будем рассматривать API v2.0 как наиболее актуальный и функциональный вариант.
До 40% экономии на доставке
Оставьте заявку прямо сейчас и получите уникальное предложение по доставке для юридических лиц, ИП и самозанятых
Пошаговая инструкция по интеграции
Интеграция СДЭК с сайтом — процесс, который можно разбить на семь последовательных шагов. Следуйте им, и вы сможете настроить автоматическую доставку в своём интернет-магазине.
  • Шаг 1. Получение доступа к API СДЭК
    1. Авторизуйтесь в личном кабинете СДЭК по адресу https://lk.cdek.ru/.
    2. Перейдите в раздел «Интеграция» (https://lk.cdek.ru/integration).
    3. Нажмите кнопку «Создать новый ключ».
    4. Скопируйте и сохраните полученные client_id и client_secret в надёжном месте. Секретный ключ отображается только при создании — при его утере придётся генерировать новый.
    5. Для тестирования можно использовать тестовую среду https://api.edu.cdek.ru/ с общими тестовыми учётными данными, которые указаны в официальной документации.
    Важно: для боевого режима необходимо использовать ключи, полученные от реального договора. Тестовые ключи не работают в боевой среде.
  • Шаг 2. Выбор способа интеграции
    У вас есть два основных варианта интеграции.
    Вариант А: Готовый модуль для CMSЕсли ваш интернет-магазин работает на популярной CMS, самый быстрый способ — установить готовый модуль доставки.
    • WordPress + WooCommerce — официальный плагин CDEKDelivery:
    1. Установите плагин через меню «Плагины» в WordPress или загрузите архив в панели администратора.
    2. Активируйте плагин.
    3. Перейдите в WooCommerce → Настройки → Доставка и выберите «CDEKDelivery».
    4. Введите данные для подключения к API СДЭК и настройте параметры доставки. После установки модуля в настройках модуля необходимо указать Account и Secure Password из личного кабинета.
    • 1С-Битрикс — интеграция охватывает расчёт стоимости доставки по тарифам, создание заказов, получение накладных и трекинг. СДЭК предоставляет официальный SDK для PHP, что упрощает работу с API.
    • Другие CMS — модули доступны для OpenCart, PrestaShop, Magento 2 и других платформ.
    Вариант Б: Интеграция через API (для самописных систем)Если вы используете собственную CMS или хотите максимальной гибкости, разработайте собственный модуль, используя API v2.0. Для ускорения разработки можно использовать готовые SDK:
    • PHP SDK — cdek-it/sdk2.0, antistress-store/cdek-sdk-v2, neverfan/cdek-optimized-sdk2.
    • Ruby — cdek_api_client.
    • Другие языки — реализация HTTP-запросов напрямую к API.
  • Шаг 3. Настройка авторизации и получение токена
    API СДЭК v2.0 использует OAuth 2.0 для авторизации. Токен получается через POST-запрос на эндпоинт /v2/oauth/token с client_id и client_secret из личного кабинета.
    Параметры запроса (формат x-www-form-urlencoded):
    • grant_type = client_credentials
    • client_id = ваш идентификатор клиента
    • client_secret = ваш секретный ключ
    URL для запроса:
    • Тестовая среда: https://api.edu.cdek.ru/v2/oauth/token
    • Боевая среда: https://api.cdek.ru/v2/oauth/token
    Ответ сервера содержит JWT-токен, который необходимо передавать в заголовке Authorization: Bearer <токен> при всех последующих запросах.
    Важно: токен действует 3600 секунд (1 час). Его необходимо кэшировать и обновлять по истечении срока действия, а не запрашивать при каждом вызове API. Это снизит нагрузку на сервер и ускорит работу вашего сайта.
  • Шаг 4. Основные методы API
    После получения токена вы можете работать со следующими основными методами API:
    • Расчёт стоимости доставкиМетод: POST /v2/calculator/tariff — расчёт по одному тарифу.
    • Метод: POST /v2/calculator/tarifflist — расчёт по всем доступным тарифам.
    • Что передать: коды городов отправления и назначения, вес, габариты (длина, ширина, высота), код тарифа.
    • Что получить: стоимость доставки (total_sum) и сроки (deliveryPeriodMin, deliveryPeriodMax).
    • Создание заказаМетод: POST /v2/orders.
    • Что передать: данные отправителя и получателя, список мест (товаров), код тарифа, дополнительные услуги.
    • Что получить: UUID заказа в системе СДЭК и трек-номер для отслеживания.
    • Получение информации о заказеМетод: GET /v2/orders?cdek_number={n}.
    • Что получить: текущий статус, историю изменений, дату вручения.
    • Отмена заказаМетод: DELETE /v2/orders/{uuid}.
    • Печать документовМетод: POST /v2/print/orders — генерация накладной в формате PDF.
    • Также доступна печать штрих-кода места (наклейка на посылку).
    • Получение списка ПВЗМетод: GET /v2/deliverypoints.
    • Что передать: код города, тип пункта.
    • Что получить: адрес, телефон, режим работы, координаты для отображения на карте.
    • Получение списка городовМетод: GET /v2/location/cities.
    • Используется для поиска кода города по названию — необходимо для корректного расчёта стоимости доставки.
  • Шаг 5. Настройка веб-хуков для отслеживания статусов
    Веб-хуки позволяют автоматически получать уведомления об изменении статуса заказа без необходимости периодически опрашивать API.
    Как настроить веб-хуки:
    1. В личном кабинете СДЭК перейдите в раздел управления веб-хуками.
    2. Укажите URL вашего сайта, на который СДЭК будет отправлять POST-запросы при изменении статуса заказа.
    3. СДЭК отправляет JSON-уведомления — ваш скрипт должен обрабатывать эти данные и обновлять статус заказа в своей системе.
    Что нужно реализовать на своей стороне:
    • Эндпоинт для приёма веб-хуков (не требует авторизации).
    • Обработку входящих JSON-уведомлений — парсинг данных, обновление статуса заказа в базе данных, запись в историю.
    • Логирование всех входящих запросов для отладки.
    Веб-хуки — это наиболее эффективный способ отслеживания статусов, так как они работают в реальном времени и не создают лишней нагрузки на вашу систему.

  • Шаг 6. Тестирование интеграции
    Перед боевым запуском обязательно протестируйте интеграцию.
    Использование тестовой среды:
    • Базовый URL: https://api.edu.cdek.ru/.
    • В настройках модуля доставки включите тестовый режим (test_mode).
    • Используйте тестовые учётные данные, если они предусмотрены для вашего модуля.
    Проверьте следующие сценарии:
    1. Расчёт стоимости доставки для разных тарифов и городов.
    2. Создание заказа с разными типами тарифов (до ПВЗ, до двери, склад-дверь и т.д.).
    3. Отображение списка ПВЗ на карте при оформлении заказа.
    4. Получение статуса заказа через API и через веб-хуки.
    5. Частичная доставка (multi-seater mode) — распределение товаров по разным посылкам.
    6. Обработка ошибок — например, неверный код города, превышение допустимого веса и т.д.
    Проверка габаритов и веса: убедитесь, что при расчёте стоимости доставки передаются корректные габариты и вес товаров. Если в личном кабинете СДЭК задаются те же параметры, что и в заказе на сайте, значит интеграция работает корректно.
  • Шаг 7. Боевой запуск
    Когда тестирование завершено успешно, можно переходить к боевому режиму:
    1. Переключите тестовый режим на «Нет» (test_mode = No).
    2. Используйте боевые учётные данные (client_id и client_secret от реального договора).
    3. Настройте адрес и контактные данные вашего склада отправления.
    4. Задайте способ передачи посылок в СДЭК (самовывоз в ПВЗ или вызов курьера).
    5. Выполните один реальный заказ и полностью отследите его путь — от создания до вручения получателю.
    После успешного запуска система начнёт работать автоматически: расчёт стоимости доставки, создание заказов в СДЭК, отслеживание статусов и печать документов будут происходить без участия человека.

Примеры кода (для разных языков)

Ниже приведены примеры кода для реализации ключевых операций интеграции.

Частые ошибки при интеграции и их решение

  • Ошибка «Fail to get token»
    • Причина: модулю не удалось получить токен авторизации.
    • Решение: проверьте, что в настройках модуля указаны актуальные client_id и client_secret из личного кабинета СДЭК (раздел «Интеграция»). Убедитесь, что вы используете правильные учётные данные для боевой или тестовой среды.
  • Ошибка «v2_entity_not_found»
    • Причина: заказ с указанным UUID не найден в системе СДЭК.
    • Решение: проверьте правильность переданного UUID. Убедитесь, что заказ был успешно создан.
  • Неверный формат даты
    • Причина: дата и время передаются в неверном формате.
    • Решение: используйте формат UTC — YYYY-MM-DDThh:mm:ss.
  • Разделитель в числах
    • Причина: используется запятая вместо точки.
    • Решение: все дробные числа должны передаваться с точкой (например, 10.5, а не 10,5).
  • Не найден город
    • Причина: передан неверный код города или город отсутствует в справочнике.
    • Решение: используйте метод GET /v2/location/cities для поиска кода города по названию.
  • Ошибка 429 Too Many Requests
    • Причина: слишком много запросов к API за короткий промежуток времени.
    • Решение: обновите модуль до последней версии и проверьте условия использования API. Реализуйте кэширование токена и результатов расчётов.
  • Габариты не передаются
    • Причина: в некоторых версиях API не предусмотрена передача габаритов для каждого товара.
    • Решение: укажите габариты на уровне посылки (packages) или используйте стандартные значения в настройках модуля.
  • Заказ не создаётся при использовании тестовой среды
    • Причина: перепутаны URL тестовой и боевой среды.
    • Решение: для тестов используйте https://api.edu.cdek.ru/, для боевого режима — https://api.cdek.ru/.

Часто задаваемые вопросы

Заключение

Интеграция СДЭК с сайтом открывает перед интернет-магазином широкие возможности для автоматизации логистики. Расчёт стоимости доставки в реальном времени, автоматическое создание заказов, печать документов и отслеживание статусов — всё это перестаёт быть рутиной и становится частью автоматизированного бизнес-процесса.


Главные выводы:


  • Выберите подходящий способ интеграции: готовый модуль для CMS (быстро и просто) или кастомная разработка через API (максимальная гибкость).
  • Для доступа к API необходимо заключить договор со СДЭК и получить client_id и client_secret в личном кабинете.
  • API v2.0 использует OAuth 2.0 — токен действует 3600 секунд, его необходимо кэшировать.
  • Основные методы API: расчёт стоимости, создание заказа, получение информации, печать документов, список ПВЗ и городов.
  • Веб-хуки позволяют получать уведомления об изменении статусов в реальном времени.
  • Тщательное тестирование в тестовой среде — залог успешного боевого запуска.

Не откладывайте автоматизацию доставки на потом. Чем быстрее вы настроите интеграцию, тем больше сэкономите времени и денег, а ваши клиенты будут получать быструю и прозрачную доставку.


Начните интеграцию прямо сейчас — получите доступ к API в личном кабинете СДЭК или обратитесь в поддержку разработчиков.

Остались вопросы по доставке?