Уявіть: менеджер інтернет-магазину вручну заповнює дані для доставки в особистому кабінеті Ділових Ліній. На одне замовлення йде до 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С-Бітрікс з транспортними компаніями. Зв'яжіться з нами, щоб обговорити деталі вашого магазину.







