DPD традиционно используют магазины с курьерской доставкой и сетью терминалов самопривоза. В отличие от служб с REST-JSON, интеграция DPD с 1С-Битрикс строится на наборе SOAP-сервисов, и это накладывает свою специфику. Разбираем, как подключить расчёт, создание заказов и трекинг.
Набор сервисов DPD
API DPD разбит на отдельные SOAP-сервисы, каждый со своим WSDL. Это не единый JSON-эндпоинт, а несколько логических блоков.
- Geography — города, терминалы самопривоза и пункты приёма (методы вида
getCitiesCashPay,getTerminalsSelfDelivery2). - Calculator — расчёт стоимости (
getServiceCost2). - Order — создание заказов на доставку (
createOrder). - Tracking — статусы отправлений (
getStatesByClient,getStatesByDPDOrder). - Label — печать этикеток (
createLabelFile).
SoapClient, а в Битриксе логику удобно завернуть в отдельный класс сервиса, чтобы не дублировать авторизацию и обработку ошибок.Авторизация и учётные данные
Доступ к сервисам DPD выдаётся по паре реквизитов из личного кабинета: clientNumber (номер клиента) и clientKey (ключ). Эта пара передаётся в блоке auth практически каждого запроса.
Хранить ключи прямо в коде не стоит — выносите их в настройки модуля или в защищённый конфиг вне публичной директории. При отладке DPD предоставляет тестовые реквизиты и тестовый контур, на котором безопасно проверять создание заказов.
Расчёт стоимости и тарифы
Метод getServiceCost2 принимает города отправителя и получателя, вес, габариты и признак самопривоза/самодоставки. Возвращает список доступных тарифов со стоимостью и сроком.
| Код | Тариф | Назначение |
|---|---|---|
| CUR | DPD CLASSIC | Курьерская доставка до двери |
| PCL | DPD SHOP | Доставка до терминала/пункта выдачи |
| ECN | DPD ECONOMY | Экономичная доставка |
| OPT | DPD OPTIMUM | Оптимальный по цене и сроку |
Из ответа магазин показывает клиенту релевантные варианты. Как и у других служб, точность зависит от заполненных весов и габаритов в каталоге — пустые размеры дают неверную цену.
Терминалы и выбор пункта
Для доставки до пункта нужен список терминалов самопривоза. Его отдаёт география — метод getTerminalsSelfDelivery2 возвращает адреса, координаты, ограничения по весу и габаритам, режим работы.
- Кэшируем список терминалов локально и обновляем по расписанию агентом.
- Выводим их на карту на шаге доставки.
- По выбору сохраняем код терминала в свойство заказа.
- Фильтруем терминалы по весу и габаритам посылки.
У DPD нет универсального готового виджета карты «как у СДЭК», поэтому карту с точками чаще собирают на своей стороне — на данных географического сервиса.
Создание заказов и этикетки
После оплаты заказ уходит в DPD методом createOrder. В запросе — отправитель, получатель, состав, габариты, выбранный тариф и терминал. В ответе приходит номер заказа DPD, который сохраняется в свойство заказа как трек-номер.
Этикетку печатают методом createLabelFile — сервис возвращает файл наклейки для отправления. Это убирает ручное оформление в личном кабинете.
- Сохраняйте номер заказа DPD сразу — по нему идёт весь дальнейший трекинг.
- Логируйте ответы SOAP: коды ошибок DPD помогают быстро понять, что не так с адресом или тарифом.
- Обрабатывайте отказы: неверный город или недоступный тариф вернутся ошибкой, её надо показать менеджеру.
Статусы доставки
Трекинг у DPD построен на выборке событий. Метод getStatesByClient отдаёт изменения статусов по всем заказам клиента с момента последнего запроса — это удобнее, чем опрашивать каждый заказ отдельно.
В Битриксе заводится агент, который периодически забирает новые события, сопоставляет их с заказами по номеру DPD и меняет статусы. Клиенту показываем понятные этапы: принят, в пути, прибыл в пункт, вручён.
Итог
Интеграция DPD с 1С-Битрикс — это работа с набором SOAP-сервисов: география и терминалы, расчёт getServiceCost2, создание заказов createOrder, печать этикеток и выборка статусов getStatesByClient. Специфика SOAP требует аккуратной обработки XML, логирования и разделения тестового и боевого контуров.
Мы в B2Bsite подключаем DPD с корректным расчётом по реальным габаритам, картой терминалов на данных географического сервиса, автоматическим созданием заказов и синхронизацией статусов. При необходимости объединяем DPD с другими службами в едином окне доставки и связываем с 1С и CRM.
Частые вопросы
Чем интеграция DPD отличается от СДЭК или Boxberry?
DPD работает по набору SOAP-сервисов с XML-запросами, тогда как СДЭК и Boxberry используют REST-JSON. Логику удобно завернуть в отдельный класс сервиса, аккуратно обрабатывая WSDL, ошибки и разделяя тестовый и боевой контуры.
Что нужно для доступа к API DPD?
Пара реквизитов из личного кабинета: номер клиента clientNumber и ключ clientKey. Они передаются в блоке авторизации почти каждого запроса. Для отладки DPD выдаёт тестовые реквизиты и тестовый контур.
Как рассчитать стоимость доставки?
Методом getServiceCost2: передаются города отправителя и получателя, вес, габариты и признак доставки до двери или терминала. В ответе приходит список доступных тарифов со стоимостью и сроком.
Есть ли у DPD готовый виджет пунктов?
Универсального виджета карты, как у СДЭК, нет. Список терминалов самопривоза берут методом географического сервиса, кэшируют и выводят на карту, собранную на стороне сайта.
Как создать заказ на доставку?
Методом createOrder: в запросе передаются отправитель, получатель, состав, габариты, тариф и терминал. В ответе приходит номер заказа DPD, который сохраняется как трек-номер, а этикетка печатается методом createLabelFile.
Как отслеживать статусы?
Метод getStatesByClient отдаёт изменения статусов по всем заказам клиента с момента последнего запроса. Агент в Битриксе периодически забирает события и обновляет статусы заказов.
Можно ли связать DPD с 1С и CRM?
Да. Номер заказа и статусы доставки прокидываются в учётную систему, чтобы менеджеры видели движение отправлений без входа в личный кабинет перевозчика.
Поможем с настройкой и поддержкой Интеграции и связки систем
Поможем с настройкой, доработкой и поддержкой Интеграции и связки систем.