СДЭК — самая частая служба доставки, которую мы подключаем к интернет-магазинам на 1С-Битрикс. Способов интеграции несколько, и от выбора зависят точность расчёта, поддержка ПВЗ и объём ручной работы менеджеров. Разбираем варианты с точки зрения интегратора и показываем, где каждый из них уместен.
Три способа подключить СДЭК
На практике интеграция СДЭК с 1С-Битрикс сводится к трём сценариям. Каждый решает свой набор задач и по-разному нагружает поддержку.
| Способ | Что даёт | Когда выбирать |
|---|---|---|
| Официальный модуль СДЭК из Маркетплейса | Расчёт, виджет ПВЗ, создание заказов и накладных из административной части | Типовой магазин, стандартный процесс отгрузки |
| Стороннее решение (ipol, «Аспро» и др.) | Гибкие тарифы, дополнительные обработчики, свои настройки округления | Нужны нестандартные правила расчёта или несколько складов |
| Прямая интеграция по API 2.0 | Полный контроль логики, связка с 1С и CRM, свой виджет карты | Высокие обороты, кастомный чекаут, обмен статусами |
В основе любого варианта лежит штатный модуль sale и сущность «Служба доставки» (Bitrix\Sale\Delivery). Модуль СДЭК регистрируется как обработчик доставки и добавляет свои профили: склад-склад, склад-дверь, дверь-дверь и обратные комбинации.
Как устроен API СДЭК 2.0
Современная интеграция строится на СДЭК API 2.0. Доступ выдаётся в личном кабинете: вы получаете пару account и secure_password, по которым запрашивается OAuth-токен на эндпоинте /v2/oauth/token. Токен живёт около часа, поэтому его нужно кэшировать и обновлять по истечении.
- Расчёт тарифа —
/v2/calculator/tariffи/calculator/tarifflist: передаёте код тарифа, габариты, вес и коды городов. - Создание заказа —
/v2/orders: формирует отправление и возвращает UUID и трек-номер. - Пункты выдачи —
/v2/deliverypoints: список ПВЗ и постаматов с координатами. - Вебхуки — регистрируются на
/v2/webhooksи присылают смену статусов на ваш URL.
account/secure_password. Отлаживайте создание накладных именно на нём, чтобы не плодить фейковые отправления в боевом кабинете.Расчёт стоимости и сроков в корзине
Ключевой момент — корректный расчёт в момент оформления. СДЭК считает тариф по кодам городов (не по названиям), поэтому нужно надёжно определить город получателя. Используйте виджет ПВЗ, который возвращает city_code, либо справочник населённых пунктов СДЭК.
Обязательно передавайте реальные габариты. Если у товаров в каталоге не заполнены WIDTH, HEIGHT, LENGTH и WEIGHT, расчёт пойдёт по значениям по умолчанию и клиент увидит заниженную или завышенную цену.
- Определяем город и код ПВЗ получателя.
- Собираем корзину: суммарный вес и габариты мест.
- Дёргаем калькулятор по выбранным тарифам.
- Показываем варианты: до двери и до ПВЗ, с разными сроками.
Виджет ПВЗ и постаматов
Выбор пункта выдачи на карте — то, ради чего покупатели любят СДЭК. У службы есть готовый JS-виджет карты, который встраивается в шаг доставки. Он отдаёт выбранный ПВЗ: код, адрес, режим работы, признак приёма наличных и примерки.
Технически это выглядит так: виджет пишет выбранный пункт в скрытое поле формы, а при отправке заказа код ПВЗ сохраняется в свойство заказа (например, CDEK_PVZ_CODE). При создании накладной этот код уходит в поле delivery_point запроса на /v2/orders.
- Кэшируйте список ПВЗ локально — их тысячи, дёргать API на каждый показ карты нельзя.
- Фильтруйте постаматы по габаритам: не всё влезает в ячейку.
- Обновляйте справочник пунктов по расписанию через агент Битрикса.
Накладные, статусы и связка с CRM
После оплаты заказ нужно передать в СДЭК как отправление. При прямой интеграции менеджер жмёт кнопку в карточке заказа, а обработчик отправляет POST на /v2/orders и сохраняет вернувшийся трек-номер в заказ. Печать наклейки идёт запросом на /v2/print/orders, который отдаёт PDF.
Статусы доставки лучше принимать вебхуками, а не опросом: СДЭК шлёт события «принят», «в пути», «прибыл в ПВЗ», «вручён». Обработчик вебхука меняет статус заказа в Битриксе и, при необходимости, шлёт уведомление клиенту.
| Операция | Эндпоинт | Что сохраняем |
|---|---|---|
| Создание отправления | /v2/orders | UUID, трек-номер |
| Печать наклейки | /v2/print/orders | PDF-наклейка |
| Трекинг | Вебхуки | Статус заказа |
Подводные камни
За годы внедрений накопился список мест, где интеграция СДЭК чаще всего ломается.
- Несовпадение городов. Одноимённые города в разных регионах дают неверный тариф. Опирайтесь на коды, а не на строки.
- Просроченный токен. Если не обновлять OAuth-токен, расчёт молча возвращает ошибку авторизации. Логируйте ответы API.
- Нулевые габариты. Пустые размеры товара ломают калькулятор — задайте значения по умолчанию для категорий.
- Наложенный платёж. Для отправлений с оплатой при получении нужен корректный признак
delivery_recipient_costи договор с СДЭК на такую услугу. - Обновления модуля. После апдейта стороннего модуля проверяйте, не слетели ли кастомные обработчики и правила округления.
Итог
Для типового магазина хватает официального модуля СДЭК из Маркетплейса: он закрывает расчёт, ПВЗ и накладные из коробки. Как только появляются нестандартные правила тарификации, несколько складов, связка с 1С и CRM или высокий поток заказов — выигрывает прямая интеграция по API 2.0 с кэшированием, вебхуками и логированием.
Мы в B2Bsite подключаем СДЭК под конкретный процесс магазина: настраиваем расчёт по реальным габаритам, встраиваем виджет ПВЗ, автоматизируем накладные и трек-номера, связываем доставку с 1С и CRM. Если СДЭК — не единственная служба, собираем расчёт всех перевозчиков в едином окне чекаута.
Частые вопросы
Какой модуль СДЭК выбрать для Битрикса?
Для стандартного магазина подойдёт официальный модуль СДЭК из Маркетплейса 1С-Битрикс. Если нужны нестандартные тарифы, несколько складов или связка с 1С и CRM, надёжнее прямая интеграция по API 2.0.
Нужен ли договор со СДЭК для интеграции?
Да. Доступ к API 2.0 и боевым тарифам выдаётся в личном кабинете после заключения договора. Для отладки у СДЭК есть тестовый контур с отдельными учётными данными.
Почему расчёт доставки показывает неверную цену?
Чаще всего причина в незаполненных габаритах и весе товаров либо в неверном определении города получателя. СДЭК считает по кодам городов, поэтому опирайтесь на выбор ПВЗ или справочник населённых пунктов.
Можно ли давать выбор пункта выдачи на карте?
Да, у СДЭК есть готовый JS-виджет карты ПВЗ и постаматов. Он встраивается в шаг доставки и возвращает код выбранного пункта, который сохраняется в свойство заказа.
Как отслеживать статус доставки в заказе?
Оптимально принимать вебхуки СДЭК: служба присылает события смены статуса на ваш URL, обработчик меняет статус заказа в Битриксе. Опрос API по расписанию — запасной вариант.
Как автоматизировать создание накладных?
Обработчик отправляет заказ на эндпоинт /v2/orders, получает трек-номер и сохраняет его в заказ, а наклейку печатает через /v2/print/orders. Это убирает ручной ввод данных в личном кабинете.
Поддерживается ли наложенный платёж?
Да, но услуга оплаты при получении должна быть подключена в договоре со СДЭК, а в запросе на создание заказа нужно корректно передать стоимость к получению с получателя.
Поможем с настройкой и поддержкой Интеграции и связки систем
Поможем с настройкой, доработкой и поддержкой Интеграции и связки систем.