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

Подключение СДЭК заканчивается не установкой модуля, а проверенным отправлением: расчёт соответствует коробке, заказ зарегистрирован, этикетка связана с ним, посылка принята перевозчиком, статус вернулся в магазин. На каждом этапе должны сохраняться идентификаторы, позволяющие найти отправление без повторного создания.
Выберите кабинет, модуль или API
| Способ | Когда рассматривать | Что проверить заранее |
|---|---|---|
| Личный кабинет | Небольшой поток, который удобно оформлять вручную | Кто переносит заказ и трек в систему магазина |
| Готовый модуль платформы | Поддерживает нужные операции и договорные услуги | Версия платформы, автор поддержки, расчёт, создание, этикетки, статусы, отмена |
| Собственная API-интеграция | Нужна особая логика и есть ресурс на сопровождение | Разработка, журнал ошибок, защита ключей и тестирование |
Наличие API у СДЭК не означает наличия готового модуля у любого конструктора. Проверьте совместимость именно своей платформы. Кабинет может быть достаточным решением: автоматизацию выбирают по измеренному ручному труду и риску ошибок.
По официальному порядку подключения сначала оформляют отношения с перевозчиком, затем получают необходимые учётные данные и настраивают выбранное решение. Условия доступа и набор услуг уточняйте для своего договора. API-ключи нельзя передавать в браузер покупателя или публиковать в коде страницы.
Подготовьте исходные данные
Нужны склад отправителя, способы вручения, согласованные услуги, контакты получателя, параметры упакованного груза и правила оплаты. Вес товара без коробки не равен весу посылки. Для нескольких мест храните параметры каждого места, если этого требует выбранная схема.
При выборе ПВЗ сохраняйте его идентификатор и адрес в заказе, а не только красивую надпись на карте. Перед оформлением сверяйте доступность пункта и услуги. Отдельно проверьте допустимость вложения, объявленную стоимость и наложенный платёж, если они используются. Настройку выбора точки разбирает статья о ПВЗ.
Учебные данные для прохода: склад в Казани, получение в ПВЗ Самары, одна коробка 30 × 20 × 10 см массой 1,2 кг, товар стоимостью 3 900 ₽. Это вымышленные параметры, а не тариф или обещание срока.
Проведите отправление по этапам
- Выполните расчёт для конкретных отправителя, получателя, даты, коробки и услуги. Сохраните ответ и условия, показанные покупателю.
- После подтверждения заказа создайте отправление. Свяжите внутренний номер заказа с идентификатором запроса, UUID и номером отправления по мере их получения.
- Получите итог обработки. Ответ API
ACCEPTEDозначает приём запроса, а не доказательство готового отправления. Проверяйте результат по документации метода и запросу информации. - Получите доступную печатную форму. Сверьте получателя, места и номер с физической коробкой.
- Передайте посылку по согласованному процессу. Напечатанная этикетка ещё не означает, что перевозчик принял груз.
- Верните статусы в магазин через предусмотренную интеграцией схему опроса или уведомлений. Сопоставьте первое принятие, движение и вручение с записью заказа.
- Отдельно проверьте отмену до движения и обратную отправку. Возврат после передачи — другой процесс, его нельзя изображать простым удалением записи.
Тестовая среда API отделена от рабочей. Тестовые ключи не подтверждают работу реального договора и сдачи груза; у СДЭК нет тестового личного кабинета, эквивалентного рабочему. Не смешивайте проверки программного обмена с пилотной перевозкой.
Не создавайте дубль после сбоя
| Ситуация | Проверка | Следующее действие |
|---|---|---|
| Есть UUID, затем опрос завершился таймаутом | Запросить информацию по сохранённой связи | Продолжить существующее отправление после подтверждения результата |
| Ответ создания потерян, итог неизвестен | Найти заказ по доступным идентификаторам и журналу, сверить кабинет | Остановить слепой повтор, выяснить наличие отправления |
Получен INVALID | Прочитать ошибку конкретного поля | Исправить данные и повторить по правилам метода |
| Отмена после начала движения | Проверить фактический статус и допустимую операцию | Использовать согласованный сценарий возврата, не удалять локальный след |
Учебная ситуация: запрос принят, UUID сохранён, следующий запрос состояния не ответил. Повторное создание может дать вторую отправку. Правильный результат упражнения — восстановить состояние существующего запроса. Если установить его нельзя, автоматический повтор остановлен и назначен разбор; покупателю не сообщают о передаче груза на основании одного ACCEPTED.
Заполните протокол приёмки
Заказ: TEST-CDEK-01
Груз: 1 место, 30×20×10 см, 1,2 кг
ПВЗ: действительный ID выбранного пункта, сверенный адрес
Расчёт: дата / услуга / сумма по договору / ответ сервиса
Связь: внутренний ID → UUID → номер отправления
Создание: результат обработки подтверждён, не только ACCEPTED
Этикетка: номер и получатель совпадают с коробкой
Передача: фактическое принятие перевозчиком подтверждено
Статус: обновился в магазине без второй отправки
Отмена и обратный путь: отдельные результаты тестов
Заменяйте параметры фактическими измерениями и ответами своей интеграции. Проверьте дополнительно неверный телефон, недоступный ПВЗ, изменение веса и повторный сигнал статуса. Дублирующее уведомление не должно повторно менять оплату или создавать отправку.
В этой инструкции разобран учебный процесс по документации, реальный аккаунт и перевозка за читателя не тестировались. Готовность магазина подтверждает ваш протокол. Если модуль считает цену, но не передаёт заказы, называйте автоматизированным только расчёт и оставьте ответственного за ручное оформление.
Согласованные цены и сроки перенесите в публичные условия доставки. Общую модель расходов можно проверить через расчёт стоимости доставки.
Можно ли начать с кабинета и подключить API позже?
Да. Сначала обеспечьте однозначную связь заказа и отправления и ручной контроль статусов. При переходе на интеграцию определите, кто оформляет уже существующие заказы, чтобы кабинет и модуль не создали их повторно.