Интеграция логистических сервисов DHL в мобильное приложение
DHL предоставляет развитую экосистему API через портал developer.dhl.com. В отличие от многих логистических операторов, документация качественная, sandbox-окружение доступно сразу после регистрации, а API следуют REST-конвенциям. Это не значит, что интеграция тривиальна — у DHL своя специфика.
Набор API DHL
DHL Group объединяет несколько подразделений, у каждого свой API:
| Подразделение | API | Назначение |
|---|---|---|
| DHL Express | Express API | Международная экспресс-доставка, создание отправлений, этикетки |
| DHL Parcel | Parcel DE/NL/BE API | Внутрирегиональная доставка в Европе |
| DHL eCommerce | Global Forwarding API | Трансграничная e-commerce доставка |
| DHL Supply Chain | — | Складские операции (корпоративный сегмент) |
Для большинства e-commerce мобильных приложений нужен DHL Express API (международные отправления) или DHL Parcel (доставка по Германии/Европе). Это разные базовые URL, разные форматы запросов, разные токены авторизации.
Авторизация
DHL Express API использует Basic Auth с учётными данными DHL аккаунта. В production нужен реальный аккаунт DHL Express с активированным API-доступом — sandbox и production используют разные credentials.
DHL Parcel (новый API) работает через OAuth 2.0 Client Credentials Flow. Получаем access_token через POST /oauth/token и используем в каждом запросе. Токен живёт 3600 секунд — кэшируем и обновляем автоматически.
Расчёт тарифов
Endpoint для расчёта стоимости DHL Express:
GET /rates?accountNumber={account}&originCountryCode=RU
&originCityName=Moscow&destinationCountryCode=DE
&destinationCityName=Berlin&weight=2.5&length=30
&width=20&height=15&plannedShippingDateAndTime=2024-01-15T09:00:00
Возвращает список продуктов (EXPRESS WORLDWIDE, EXPRESS 12:00 и т.д.) с ценами и сроками доставки. В мобильном приложении показываем пользователю сравнение вариантов в виде списка — не прячем за радиокнопки.
Критичный момент: вес и габариты. DHL считает volumetric weight: (длина × ширина × высота) / 5000. Берётся максимум из фактического и объёмного веса. Приложение должно объяснять пользователю почему итоговый вес больше введённого.
Создание отправления и этикетка
POST /shipments создаёт отправление и возвращает трек-номер и URL этикетки в формате PDF или ZPL (для термопринтеров). Для генерации этикетки в приложении на iOS используем WKWebView для рендеринга PDF или UIPrintInteractionController для прямой печати. На Android — PdfRenderer или интент на печать через PrintManager.
Трекинг в реальном времени
DHL Shipment Tracking API (GET /tracking/shipments?trackingNumber=...) возвращает полную историю событий с кодами и описаниями. Частота обновления: раз в 30 минут достаточно для большинства сценариев. Лимиты API в sandbox — 250 запросов в сутки.
Для push-уведомлений о статусе: DHL Tracking Webhook (доступен для enterprise-аккаунтов) отправляет события в реальном времени на ваш webhook URL. Альтернатива — polling через WorkManager / BGAppRefreshTask.
Сроки: интеграция трекинга и расчёта тарифов — 1-2 недели. Полный цикл создания отправлений с этикетками и вебхуками — 3-4 недели.







