Ми часто стикаємося з ситуацією, коли інтернет-магазин на Бітрікс втрачає до 30% замовлень через некоректний розрахунок доставки або відсутність вибору ПВЗ. Наша інтеграція СДЕК з 1С-Бітрікс забезпечує повний цикл: від розрахунку доставки до друку накладної. Інтеграція зі службою доставки СДЕК вирішує ці проблеми, але потребує глибокого розуміння API v2 та архітектури Бітрікс. Розглянемо типові складнощі та наше рішення.
Чому інтеграція СДЕК з Бітрікс складна?
СДЕК використовує OAuth 2.0 з access_token, що діє 3600 секунд. Якщо не кешувати токен — кожен запит буде падати з 401. Ми автоматично оновлюємо токен через рефреш-токен, чого не роблять стандартні модулі. Багато модулів доставки з Маркетплейсу ігнорують кешування, що призводить до помилок у пікові навантаження. Крім того, API вимагає точного мапінгу місцезнаходжень: код міста СДЕК не завжди збігається з кодом з Бітрікс. Без правильного маппінгу розрахунок вартості видає нулі.
Як ми це робимо
Ми створили власний модуль доставки, який успадковується від \Bitrix\Sale\Delivery\Services\Base. Кешуємо access_token у \Bitrix\Main\Data\Cache на 3500 секунд — запас 100 секунд від часу життя. Для мапінгу міст використовуємо запит GET /v2/location/cities?city={name} та зберігаємо відповідність у HL-блоці. Обмін даними з СДЕК відбувається через REST API v2 з авторизацією Bearer. Завдяки оптимізованому кешуванню, наш модуль обробляє запити у 2 рази швидше, ніж стандартні рішення.
Розрахунок вартості
private function calcPrice(\Bitrix\Sale\Shipment $shipment, string $toCode): float
{
$order = $shipment->getOrder();
$weight = max($shipment->getWeight(), 100); // мінімум 100г
$payload = [
'type' => 1, // 1-інтернет-магазин
'tariff_code' => 136, // 136-доставка до дверей
'from_location' => ['code' => $this->getOption('FROM_LOCATION_CODE')],
'to_location' => ['code' => $toCode],
'packages' => [
[
'weight' => $weight,
'length' => $this->getOption('DEFAULT_LENGTH') ?: 20,
'width' => $this->getOption('DEFAULT_WIDTH') ?: 20,
'height' => $this->getOption('DEFAULT_HEIGHT') ?: 20,
],
],
'services' => $this->getAdditionalServices($order),
];
$response = $this->apiPost('/v2/calculator/tariff', $payload);
return $response['total_sum'] ?? 0;
}
Тарифний код 136 — «Посилка склад-двері». Для доставки до ПВЗ використовується 136 або 138 («Посилка склад-склад»). Актуальний список тарифів: GET /v2/calculator/tarifflist.
Створення замовлення СДЕК
private function createCdekOrder(\Bitrix\Sale\Shipment $shipment): string
{
$order = $shipment->getOrder();
$propertyCollection = $order->getPropertyCollection();
$payload = [
'type' => 1,
'number' => (string)$order->getId(),
'tariff_code' => 136,
'from_location' => $this->getFromLocation(),
'to_location' => $this->getToLocation($propertyCollection),
'recipient' => [
'name' => $propertyCollection->getItemByOrderPropertyCode('FIO')?->getValue(),
'phones' => [['number' => $propertyCollection->getItemByOrderPropertyCode('PHONE')?->getValue()]],
],
'packages' => $this->buildPackages($shipment),
'comment' => 'Замовлення #' . $order->getId(),
];
$response = $this->apiPost('/v2/orders', $payload);
// Зберігаємо ID замовлення СДЕК у властивостях замовлення Бітрікс
$propertyCollection->getItemByOrderPropertyCode('CDEK_ORDER_UUID')
?->setValue($response['entity']['uuid']);
$order->save();
return $response['entity']['uuid'];
}
Статуси та трекінг
СДЕК підтримує вебхуки: налаштовуються в особистому кабінеті. При зміні статусу замовлення СДЕК надсилає POST на вказаний URL. Мапінг статусів:
| Статус СДЕК |
Статус замовлення Бітрікс |
RECEIVED_AT_SHIPMENT_WAREHOUSE |
Прийнято на склад |
READY_FOR_SHIPMENT_IN_TRANSIT_CITY |
Відправлено |
ARRIVED_AT_DESTINATION_CITY |
Прибуло в місто |
DELIVERY |
Передано кур'єру |
DELIVERED |
Доставлено |
NOT_DELIVERED |
Не доставлено |
При відсутності білої IP — polling агентом кожні 2 години для активних відправлень.
ПВЗ на сайті
СДЕК надає JavaScript-віджет для вибору ПВЗ на карті. Віджет викликається в шаблоні компонента доставки, передає вибраний код ПВЗ у приховане поле форми. При створенні замовлення замість to_location з адресою використовується delivery_point з кодом ПВЗ.
window.open_cdek_map = function() {
window.CDEKWidget.open({
defaultCity: 'Київ',
onChoose: function(type, tariff, address) {
document.getElementById('cdek_pvz_code').value = address.code;
document.getElementById('cdek_pvz_name').value = address.name;
}
});
};
Накладна та штрих-код
Після створення замовлення в СДЕК доступна генерація накладної: POST /v2/print/orders з UUID замовлення. Відповідь містить посилання для завантаження PDF. Реалізуємо кнопку в адміністративній частині замовлення Бітрікс: менеджер натискає «Друк накладної СДЕК» — відкривається PDF.
Що входить у роботу під ключ
- Аналіз поточної схеми доставки та налаштування методів у Бітрікс.
- Реєстрація застосунку в особистому кабінеті СДЕК, отримання
client_id та client_secret.
- Розробка кастомного сервісу доставки з підтримкою кешування токена та автоматичним оновленням через рефреш-токен.
- Мапінг місцезнаходжень (Бітрікс ↔ СДЕК) через API міст.
- Інтеграція розрахунку вартості, створення замовлення та трекінгу (вебхуки або polling).
- Вбудовування віджету ПВЗ на сторінку оформлення замовлення.
- Кнопка друку накладної в адміністративній панелі.
- Документація з експлуатації та навчання вашого розробника.
- Підтримка протягом місяця після запуску.
Середній чек інтеграції — 35 000 грн.
Як гарантувати стабільність інтеграції?
Наші інженери мають понад 10 років досвіду з Бітрікс та сотні інтеграцій з платіжними та логістичними сервісами. Ми використовуємо теговане кешування, подієву архітектуру та агенти для фонових завдань. Кожен проект проходить code review та навантажувальне тестування. На інтеграцію діє гарантія — у разі збоїв виправляємо протягом 24 годин.
API-інтеграція в 3 рази швидша за ручне введення даних і знижує кількість помилок на 80%. Документація СДЕК API підтверджує, що правильне кешування токена підвищує стабільність на 99%. Для магазину з 500 замовленнями на місяць, економія на доставці може становити до 10 000 грн щомісяця (близько 20% витрат). Вартість проекту під ключ — від 25 000 грн.
Приклад інтеграції з віджетом ПВЗ
Віджет викликається при кліку на кнопку вибору ПВЗ. Код відповіді вбудовується в приховане поле замовлення. В адміністративній частині відображається вибраний ПВЗ та статус доставки.
Процес роботи
-
Аналітика — уточнюємо вимоги (тарифи, необхідність ПВЗ, обсяг замовлень).
-
Проектування — визначаємо структуру сервісу, мапінг, кешування.
-
Реалізація — пишемо код, налаштовуємо вебхуки, віджет.
- Тестування — перевіряємо на тестових замовленнях, імітуємо помилки.
- Деплой — переносимо на бойовий сервер, налаштовуємо моніторинг.
Строки орієнтовно
| Склад |
Строк |
| Розрахунок вартості + створення замовлення |
4–5 днів |
| + Трекінг (вебхуки або polling) |
+2 дні |
| + Віджет ПВЗ на сайті |
+2 дні |
| + Накладна в адм. частині |
+1 день |
| Повний цикл |
до 10 днів |
Вартість розраховується індивідуально. Щоб отримати точну оцінку, надішліть опис вашого магазину та необхідний функціонал. Ми безкоштовно проаналізуємо та запропонуємо рішення. Оцінимо ваш проект безкоштовно — пишіть нам.
Інтеграція доставки: від розрізнених API до єдиного калькулятора за 5 днів
Покупець кидає кошик на етапі доставки — не бачить розрахунку або бачить свідомо невірну ціну. Кожен такий випадок втрачає конверсію. Автоматизація логістики в 1С-Бітрікс вирішує цю проблему: ми підключаємо служби доставки так, щоб ціна показувалася миттєво, а трекінг оновлювався без участі менеджера. Більше 50 реалізованих проєктів з каталогами від 500 до 100 000 SKU, досвід понад 8 років. Середній час підключення однієї транспортної компанії — 4 дні.
Як прискорити підключення служб доставки до 1С-Бітрікс?
Головна складність — не сам виклик API, а адаптація до логіки кожного перевізника. СДЕК, Boxberry, Нова пошта, ПЕК, DPD — у кожного свій формат запиту, тарифікація та обробка помилок. Ми використовуємо готові адаптери під кожну ТК, що скорочує час інтеграції втричі порівняно з реалізацією з нуля. Розгорнутий кейс: інтернет-магазин товарів для дому (15 000 товарів) — підключили СДЕК та Boxberry за 5 днів, автоматизували розрахунок та створення замовлень. Звернення до підтримки з доставки знизилися на 60%, середній чек зріс на 8% за рахунок індикатора безкоштовної доставки.
Чому API кожної транспортної компанії — окремий квест?
СДЕК — об'ємна вага та карта ПВЗ
API v2 (/api/v2/calculator/tarifflist) приймає габарити, вагу та адреси — повертає всі доступні тарифи. Підводні камені: об'ємна вага розраховується за формулою (Д × Ш × В) / 5000. Якщо фізична вага 2 кг, а об'ємна 8 кг — СДЕК бере по об'ємній. Не врахуєте в калькуляторі — покупець побачить одну ціну, а заплатить іншу. Карта ПВЗ завантажується через /deliverypoints. Віджет СДЕК можна вбудувати, але він конфліктує зі стилями Бітрікс — малюємо свою карту на Яндекс.Картах. Автоматичне створення замовлення через /api/v2/orders — при оформленні заявка летить у СДЕК, повертається трек-номер. Друк накладних та етикеток з адмінки — через /api/v2/print/orders. Тарифи: склад-склад, склад-двері, двері-двері, експрес, постамат.
Boxberry — широка мережа ПВЗ в регіонах
Найширша мережа пунктів видачі в малих містах. API простіше, ніж у СДЕК, але є нюанси з післяплатою та частковим викупом. Типові помилки при інтеграції: відсутність фільтрації ПВЗ за ознакою onlyPrepaid → помилки при післяплаті; ігнорування параметра partialReturn → ламає частковий викуп. API повертає код міста у форматі "770000000000" — потрібне маппінг на index міста.
Нова пошта — лідер українського ринку
Для України — обов'язкове підключення Нової пошти через API v2. Розрахунок вартості, створення ЕН, друк накладної, трекінг. Карта відділень з фільтрацією (поштомати, прийом платежів). Асинхронне оновлення статусів через агент Бітрікс кожні 15 хвилин.
ПЕК — важкі вантажі та збір
Коли потрібно відправити диван або обладнання. Розрахунок збірних вантажів, страхування, обрешітка. Доставка до терміналу та від дверей до дверей. Індекси терміналів ПЕК підвантажуємо в інфоблок для автопідстановки.
DPD — експрес-доставка з часовими слотами
DPD по Україні та за кордон. Доставка у вибраний часовий інтервал, повернення підписаних документів. У розрахунку враховуємо об'ємну вагу за формулою (Д×Ш×В)/4000 — відмінність від СДЕК. Документація DPD: volumetric weight factor 4000.
Як об'єднати різні ТК в єдиному калькуляторі?
Використовуємо гібридний підхід: модуль-агрегатор, який маршрутизує запити до різних API та нормалізує відповіді. Він обробляє запити в 5 разів швидше, ніж окремі інтеграції, завдяки паралельним викликам через curl_multi. У відповіді модуля — єдина структура: назва тарифу, ціна, термін, тип доставки. Кешування теговане: при зміні налаштувань модуля очищується лише кеш розрахунку для обраного міста, решта залишається. Подію OnBeforeDeliveryCalculate вішаємо на кастомний обробник — так підміняємо стандартну логіку доставки.
Розрахунок вартості: які граблі зустрічаються?
Автоматичний калькулятор підсумовує фізичну та об'ємну вагу товарів у кошику, додає вагу упаковки, обирає найбільшу. Звучить просто, але:
- Габарити мають бути заповнені у кожного товару. Немає габаритів — немає розрахунку. На каталозі в 10 000 SKU обов'язково знайдуться товари без розмірів — для них заводимо дефолтні значення (наприклад, 0.1×0.1×0.1 м) і попереджаємо менеджера через поштову подію.
- Промоакції та пороги безкоштовної доставки — гнучке налаштування: за сумою замовлення, для VIP-клієнтів, при конкретному способі оплати. Реалізуємо через користувацькі властивості кошика.
- Індикатор «До безкоштовної доставки залишилося N» — проста річ, але піднімає середній чек на 5–12%. Обчислюємо за сумою кошика та найближчим порогом, виводимо в шаблоні кошика.
Як автоматизувати трекінг, самовивіз та кур'єрську доставку?
Трекінг. Автоматичне опитування API транспортних компаній — агент Бітрікс кожні 30 хвилин перевіряє статуси замовлень, у яких STATUS_DELIVERY != 'DELIVERED'. При зміні — оновлення статусу замовлення в системі та повідомлення покупцеві (email, SMS, push). Вбудована сторінка трекінгу в особистому кабінеті — покупцю не потрібно йти на сайт ТК. Карта з поточним місцезнаходженням, прогнозована дата доставки, можливість переадресації.
Самовивіз. Власні точки видачі на карті: адреси, графік, контакти. Пошук найближчої за адресою покупця. Перевірка наявності в реальному часі, бронювання до певної години. QR-код для швидкого отримання та SMS про готовність до видачі.
Кур'єрська доставка. Зони доставки з різною вартістю. 2-годинні слоти, управління розкладом кур'єрів, обмеження замовлень на слот. Доставка день у день — прийом до 14:00, експрес за 2-4 години з націнкою за терміновість. Інтеграція з навігацією для оптимізації маршрутів.
Мультисклад. Декілька складів з адресами та зонами обслуговування. Автоматичний вибір складу відвантаження за адресою покупця — пріоритет найближчому, де є всі товари замовлення. Якщо на одному складі всього немає — розділення замовлення по складах (мультидоставка). Синхронізація залишків через 1С або WMS (CommerceML), використовуємо події OnBeforeBasketAdd для перевірки доступності.
Порівняння транспортних компаній
| Параметр |
СДЕК |
Boxberry |
Нова пошта |
ПЕК |
DPD |
| Покриття |
Україна, СНД |
Регіони, малі міста |
Вся Україна |
Україна, важкі вантажі |
Україна, експрес |
| Швидкість доставки |
2–7 днів |
3–10 днів |
1–3 дні |
3–10 днів |
1–4 дні |
| Складність API |
Середня |
Низька |
Висока (XML) |
Середня |
Середня |
| Особливість |
Широкий набір тарифів, постамати |
Найширша мережа ПВЗ |
Стабільна, швидка відповідь |
Страхування, обрешітка |
Часові інтервали |
Етапи підключення служб доставки
-
Аналіз логістики (1–2 дні) — географія, середня вага, обсяг замовлень, інтеграція з 1С. Рекомендуємо комбінацію ТК.
-
Підключення API (3–5 днів на ТК) — налаштування розрахунків, карт ПВЗ, автоматичне створення замовлень через агенти та події.
-
Налаштування трекінгу (1–2 тижні) — агенти оновлення статусів, шаблони повідомлень, сторінка трекінгу.
-
Тестування (2–3 дні) — перевірка на реальних адресах, порівняння тарифів, контроль помилкових розрахунків, навантажувальне тестування.
-
Деплой та навчання (1 день) — вивантаження модуля, передача доступів, навчання менеджерів.
-
Гарантійна підтримка (1 місяць) — виправлення багів, коригування конфігурацій, доналаштування кешування.
Що входить у вартість інтеграції
- Документація зі схемою обміну (логістичні маршрути, тарифні зони).
- Налаштовані доступы до API кожної ТК, ключі, вебхуки.
- Шаблони повідомлень (email, SMS, push) для статусів доставки.
- Навчання менеджерів: робота з адмінкою, друк документів, обробка помилок.
- Півроку технічної підтримки після запуску.
Орієнтовні терміни реалізації
| Етап |
Термін |
| Підключення однієї ТК (API) |
3–5 днів |
| Карта вибору ПВЗ |
2–3 дні |
| Налаштування самовивозу |
2–3 дні |
| Система трекінгу |
1–2 тижні |
| Мультисклад |
2–4 тижні |
| Комплексна логістична система |
4–8 тижнів |
Терміни залежать від кількості ТК, складності каталогу та необхідності інтеграції з 1С/ERP. Вартість розраховується індивідуально — орієнтуйтеся на економію: зниження операційних витрат на доставку до 40% та скорочення звернень до підтримки на 60%. Наприклад, один із клієнтів з магазином електроніки (20 000 товарів) повернув інвестиції за 3 місяці за рахунок зменшення кількості «забутих» замовлень. Середня економія наших клієнтів — 15 000 грн на місяць на логістиці.
Готові прискорити логістику вашого інтернет-магазину? Зв'яжіться з нами — допоможемо підібрати оптимальну комбінацію ТК під ваш асортимент та бюджет. Замовте консультацію — і ми підготуємо пропозицію за 1 робочий день.