Представьте: менеджер интернет-магазина вручную заполняет данные для доставки в личном кабинете Деловых Линий. На один заказ уходит до 15 минут. При 50 заказах в день — это более 12 часов чистой рутины. Ошибки в адресах, потерянные статусы, пересорт по габаритам — типичная картина без API-интеграции. Мы автоматизируем этот процесс: расчёт стоимости, создание заказов и трекинг — через REST API Деловых Линий. Один из клиентов — магазин мебели — после внедрения сократил время обработки заказа с 15 до 2 минут и снизил операционные затраты на доставку на 15%. Экономия на ручном труде — до 40 000 руб./мес.
Почему важна автоматизация доставки через API?
Без интеграции магазины тратят до 20% рабочего времени на ручную обработку доставки. Деловые Линии — крупнейшая транспортная компания с сетью из 2000+ терминалов. Их API с JWT-авторизацией позволяет гибко управлять отправлениями. Мы выполнили более 30 проектов по интеграции 1С-Битрикс с транспортными компаниями, гарантируем стабильную работу и обновление при изменениях API. Подробнее о протоколе читайте в официальной документации REST API Деловых Линий.
Как автоматизировать доставку через интеграцию с Деловыми Линиями?
Как устроено API Деловых Линий? — интеграция 1с битрикс
Базовый URL: https://api.dellin.ru/v3/. Авторизация двухэтапная: сначала получаем session token через /v3/auth/login.json, затем используем его в заголовке Cookie: session=TOKEN или параметром.
private function getSession(): string
{
$cacheKey = 'dellin_session_' . md5($this->appKey);
$cached = \Bitrix\Main\Data\Cache::createInstance();
if ($cached->startDataCache(3600 * 8, $cacheKey, '/dellin')) {
$response = $this->httpPost('/v3/auth/login.json', [
'appkey' => $this->appKey,
'login' => $this->login,
'password' => $this->password,
]);
$session = $response['data']['sessionID'] ?? '';
$cached->endDataCache(['session' => $session]);
}
return $cached->getVars()['session'];
}
Сессия живёт 8+ часов. Кэшируем на 8 часов, чтобы не авторизоваться при каждом расчёте.
Пример запроса расчёта стоимости:
private function calcCost(
string $fromCity,
string $toCity,
float $weightKg,
float $volumeM3
): float {
$response = $this->apiPost('/v3/calculator.json', [
'appkey' => $this->appKey,
'sessionID' => $this->getSession(),
'delivery' => [
'deliveryType' => ['type' => 'auto'],
'arrival' => ['variant' => 'address'],
'dispatch' => ['variant' => 'terminal'],
],
'cargo' => [
'quantity' => 1,
'weight' => $weightKg,
'volume' => $volumeM3,
'totalEnvelopesWeight' => 0,
],
'members' => [
'from' => ['terminalID' => $this->findTerminalId($fromCity)],
'to' => ['city' => $toCity],
],
]);
return (float)($response['data']['price'] ?? 0);
}
Параметр delivery.dispatch.variant: terminal означает, что магазин сам привезёт груз на терминал. arrival.variant: address — доставка покупателю до двери. Комбинации variant влияют на цену: терминал-терминал дешевле, адрес-адрес дороже.
Поиск терминала по городу
public function findTerminalId(string $cityName): string
{
$response = $this->apiPost('/v3/public/terminals.json', [
'appkey' => $this->appKey,
]);
foreach ($response['data']['terminals'] ?? [] as $terminal) {
if (mb_stripos($terminal['city']['name'], $cityName) !== false) {
return $terminal['id'];
}
}
return '';
}
Список терминалов большой — кэшируем результат поиска на сутки.
Создание заказа
public function createOrder(\Bitrix\Sale\Shipment $shipment): string
{
$order = $shipment->getOrder();
$props = $order->getPropertyCollection();
$payload = [
'appkey' => $this->appKey,
'sessionID' => $this->getSession(),
'delivery' => [
'deliveryType' => ['type' => 'auto'],
'dispatch' => ['variant' => 'terminal'],
'arrival' => [
'variant' => 'address',
'address' => [
'search' => $props->getItemByOrderPropertyCode('ADDRESS')?->getValue(),
],
],
],
'cargo' => $this->buildCargo($shipment),
'members' => [
'from' => ['terminalID' => $this->getOption('FROM_TERMINAL_ID')],
'to' => [
'contactPersons' => [[
'name' => $props->getItemByOrderPropertyCode('FIO')?->getValue(),
'phone' => $props->getItemByOrderPropertyCode('PHONE')?->getValue(),
]],
],
],
'payment' => [
'type' => 'cash',
'payer' => 'receiver',
],
];
$response = $this->apiPost('/v3/orders.json', $payload);
return (string)($response['data']['orderID'] ?? '');
}
Параметр payment.payer: receiver — доставку оплачивает получатель. sender — отправитель (магазин). Выбор зависит от бизнес-модели магазина.
Трекинг заказов
public function getOrderState(string $orderId): array
{
$response = $this->apiPost('/v3/orders/state.json', [
'appkey' => $this->appKey,
'sessionID' => $this->getSession(),
'orders' => [['orderID' => $orderId]],
]);
$state = $response['data'][0] ?? [];
return [
'status' => $state['orderState']['name'] ?? '',
'deliveryDate' => $state['deliveryDate'] ?? '',
];
}
Деловые Линии не поддерживают вебхуки для трекинга. Агент Битрикс раз в 3–4 часа опрашивает статус активных отправлений.
Какие особенности для крупногабаритных товаров?
Деловые Линии поддерживают паллетные отправления. Для магазинов мебели или строительных материалов нужно разделять отправления на несколько мест с индивидуальными габаритами. Поле cargo.oversizedWeight используется для нестандартных мест (> 80 кг или > 3 м в длину). В одном из проектов интернет-магазина мебели мы столкнулись с проблемой неправильного расчёта габаритов: товары приходили к покупателю с повреждениями. После внедрения интеграции с указанием параметров oversizedWeight и паллетной группировки количество возвратов снизилось на 15%.
Как происходит интеграция: пошаговый процесс?
- Аналитика — изучаем ваш каталог, типы доставки, настройки 1С-Битрикс.
- Проектирование — выбираем методы API, определяем маппинг полей.
- Реализация — пишем код расчёта, создания заказов, трекинга.
- Тестирование — проверяем на тестовых заказах, замеряем время ответа.
- Деплой — выкатываем на боевой, настраиваем агенты.
- Документация и обучение — передаём инструкции, обучаем менеджеров.
Что входит в работу по интеграции?
- Регистрация приложения в личном кабинете Деловых Линий.
- Настройка авторизации и кэширования сессии.
- Реализация расчёта стоимости на странице корзины.
- Создание заказов из административной панели.
- Трекинг с уведомлениями о смене статуса.
- Техническая поддержка 30 дней после запуска.
| Доставка | Вариант | Средняя стоимость (условная) | Сроки |
|---|---|---|---|
| Терминал → Терминал | Самовывоз | Низкая | 3–5 дн |
| Терминал → Адрес | До двери | Средняя | 3–5 дн |
| Адрес → Адрес | Курьер | Высокая | 2–4 дн |
Сколько времени занимает интеграция?
| Состав работ | Срок |
|---|---|
| Авторизация + расчёт + маппинг терминалов | 3–4 дня |
| + Создание заказов + трекинг | +2 дня |
| + Габаритный расчёт + паллеты | +1 день |
Какие типичные ошибки допускают при интеграции?
Распространённые косяки и как их избежать
- Игнорирование кэширования сессии — частые авторизации приводят к блокировке.
- Неправильный маппинг городов — терминал не находится.
- Отсутствие обработки ошибок API — заказ не создаётся без уведомления. Например, при превышении лимитов запросов API возвращает код 429, который нужно обрабатывать с повторной попыткой.
- Забывают про oversized параметры для тяжёлых грузов.
Закажите интеграцию сегодня — получите бесплатную консультацию и оценку проекта. У нас более 5 лет опыта в интеграции 1С-Битрикс с транспортными компаниями. Свяжитесь с нами, чтобы обсудить детали вашего магазина.







