Інтеграція 1С-Бітрікс зі службою доставки СДЕК

Ми часто стикаємося з ситуацією, коли інтернет-магазин на Бітрікс втрачає до 30% замовлень через некоректний розрахунок доставки або відсутність вибору ПВЗ. Наша інтеграція СДЕК з 1С-Бітрікс забезпечує повний цикл: від розрахунку доставки до друку накладної. Інтеграція зі службою доставки СДЕК виріш
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Інтеграція 1С-Бітрікс зі службою доставки СДЕК
Середній
~1-2 тижні

Наші компетенції:

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1454
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    1017
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    759
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    879
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    802
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1161

Ми часто стикаємося з ситуацією, коли інтернет-магазин на Бітрікс втрачає до 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 грн.

Приклад інтеграції з віджетом ПВЗ

Віджет викликається при кліку на кнопку вибору ПВЗ. Код відповіді вбудовується в приховане поле замовлення. В адміністративній частині відображається вибраний ПВЗ та статус доставки.

Процес роботи

  1. Аналітика — уточнюємо вимоги (тарифи, необхідність ПВЗ, обсяг замовлень).
  2. Проектування — визначаємо структуру сервісу, мапінг, кешування.
  3. Реалізація — пишемо код, налаштовуємо вебхуки, віджет.
  4. Тестування — перевіряємо на тестових замовленнях, імітуємо помилки.
  5. Деплой — переносимо на бойовий сервер, налаштовуємо моніторинг.

Строки орієнтовно

Склад Строк
Розрахунок вартості + створення замовлення 4–5 днів
+ Трекінг (вебхуки або polling) +2 дні
+ Віджет ПВЗ на сайті +2 дні
+ Накладна в адм. частині +1 день
Повний цикл до 10 днів

Вартість розраховується індивідуально. Щоб отримати точну оцінку, надішліть опис вашого магазину та необхідний функціонал. Ми безкоштовно проаналізуємо та запропонуємо рішення. Оцінимо ваш проект безкоштовно — пишіть нам.