Интеграция 1С-Битрикс с агрегатором доставок Dalli
Dalli Service — агрегатор и логистический оператор, специализирующийся на доставке для интернет-магазинов. Объединяет собственную курьерскую службу и партнёрских перевозчиков. Особенность: доставка в день оформления или на следующий день в Москве и Санкт-Петербурге, интеграция с маркетплейсами (Wildberries, Ozon, Яндекс.Маркет).
Что предоставляет Dalli API
Dalli API — REST, авторизация по токену. Документация на портале dalli.ru для партнёров.
Основные операции:
- Расчёт стоимости доставки
- Создание заявок (одиночных и пакетных)
- Получение статусов
- Список ПВЗ
- Получение этикеток (PDF)
- Регистрация вебхуков
Dalli работает преимущественно по модели: магазин передаёт заявки через API, Dalli распределяет между своей службой и партнёрами в зависимости от адреса и сроков.
Модуль доставки в Битрикс
Класс наследует \Bitrix\Sale\Delivery\Services\Base. Параметры в b_sale_delivery_service_params:
-
DALLI_TOKEN— токен API -
SENDER_ID— ID точки отправки (оформляется при подключении) -
DELIVERY_MODE—express(день-в-день / следующий день) илиstandard -
COD_ALLOWED— разрешён ли наложенный платёж
Расчёт стоимости
В calculateConcrete() передаём адрес, габариты, объявленную ценность. Dalli возвращает варианты с разными сроками (стандарт, экспресс) и ценами:
$calcResponse = $httpClient->post('/v1/calculate', [
'sender_id' => $senderId,
'address' => $recipientAddress,
'weight' => $weightGram,
'dimensions' => $dimensions,
'declared_value' => $declaredValue,
'delivery_types' => ['standard', 'express'],
]);
foreach ($calcResponse['variants'] as $variant) {
// $variant['type'], $variant['price'], $variant['delivery_date']
}
Если магазин предлагает два способа доставки (стандарт и экспресс), создаём два экземпляра модуля с разными DELIVERY_MODE в настройках.
Экспресс-доставка в день заказа
Ключевая особенность Dalli для Москвы и СПб. Работает при выполнении условий:
- Заказ принят до определённого времени (обычно до 14:00–15:00)
- Склад отправителя находится в зоне покрытия
- Товар физически готов к отправке
В calculateConcrete() проверяем текущее время: если date('H') >= $cutoffHour — экспресс-доставка сегодня недоступна, предлагаем доставку на следующий день.
$currentHour = (int) date('H');
$cutoffHour = 14; // Дата дедлайна из настроек модуля
if ($currentHour >= $cutoffHour) {
$deliveryDate = date('d.m.Y', strtotime('+1 day'));
$label = 'Доставка завтра, ' . $deliveryDate;
} else {
$deliveryDate = date('d.m.Y');
$label = 'Доставка сегодня, ' . $deliveryDate;
}
Создание заявки
$orderPayload = [
'sender_id' => $senderId,
'external_id' => 'SHOP-' . $bitrixOrderId,
'delivery_type' => $deliveryMode,
'recipient' => [
'name' => $name,
'phone' => $phone,
'address' => $address,
],
'packages' => [[
'weight' => $weightGram,
'dimensions' => $dimensions,
'items' => $items,
]],
'declared_value' => $declaredValue,
'cash_on_delivery'=> $codAmount,
'comment' => $comment,
];
Ответ: order_id в системе Dalli. Этикетку получаем через GET /orders/{id}/label.
Пакетное создание заявок
Если заказы накапливаются в течение дня, Dalli поддерживает POST /orders/batch — создание нескольких заявок одним запросом. Менеджер нажимает «Отправить в Dalli» в административной части Битрикс — скрипт собирает все заказы со статусом «Готов к отправке» и отправляет пакетом.
Статусы
Вебхуки: Dalli отправляет уведомления на URL мерчанта. Регистрируем в личном кабинете. Маппинг:
| Статус Dalli | Битрикс |
|---|---|
accepted |
Принят |
on_the_way |
В пути |
delivered |
Доставлен |
partially_delivered |
Частичный выкуп |
returned |
Возврат |
failed |
Ошибка доставки |
Сроки
| Масштаб | Состав | Срок |
|---|---|---|
| Базовая интеграция | Расчёт + заявки + статусы | 3–4 дня |
| + Экспресс-логика | Контроль времени, два способа | +1–2 дня |
| + Пакетная отправка | Интерфейс в админке + batch API | +2 дня |
| + ПВЗ | Загрузка + виджет | +2 дня |







