Ми тестуємо інтеграції доставки в 1С-Бітрікс не за чек-листом, а з зануренням у бізнес-логіку. За період роботи проведено понад 50 аудитів для інтернет-магазинів з обігом від 5 млн грн. Типова картина: розрахунок вартості повертає 0, ПВЗ не завантажується, трек-номер не надходить. І все це без помилок на екрані. Наше завдання — знайти такі сценарії до того, як вони вдарять по клієнтах. Проводимо навантажувальне тестування доставки для оцінки часу відгуку API.
Інтеграція зі службами доставки — це ланцюжок: розрахунок вартості → створення замовлення в ОС служби → друк накладної → трекінг. Будь-яка ланка може ламатися тихо. Ми підбираємо тестові сценарії під ваш проєкт і даємо гарантію на виявлені помилки.
Чому збій у розрахунку доставки залишається непоміченим?
80% проблем у розрахунку доставки пов'язані з відсутністю габаритів товарів або невірним кодом міста. CDEK API v2 при порожньому weight повертає 400, модуль Бітрікс мовчки віддає 0. Покупець бачить лише "доставку не розраховано" і йде. Ми перевіряємо raw-запити до API і знаходимо такі розбіжності до деплою.
Архітектура інтеграції доставки в Бітрікс
Служби доставки підключаються через модуль sale як обробники доставки (клас \Bitrix\Sale\Delivery\Services\Base). Для кожної служби є окремий клас з реалізацією:
-
calculateConcrete() — розрахунок вартості
-
createShipment() — створення відправлення у зовнішній системі (якщо реалізовано)
-
getTrackingInfo() — отримання статусу трекінгу
Кастомні обробники розміщуються в /local/php_interface/include/sale_delivery/. Стандартні модулі служб доставки (CDEK, DHL, DPD, Boxberry, PickPoint, СДЭК) встановлюються з Маркетплейсу.
Що тестувати
Розрахунок вартості доставки
Перша і найчастіша точка відмови. Перевіряють:
- Коректність розрахунку для різних габаритів товару (потрібні товари із заповненими
WEIGHT, WIDTH, HEIGHT, DEPTH в каталозі)
- Роботу при відсутності габаритів у частини товарів у кошику
- Коректність зон доставки — тариф для Києва не повинен застосовуватися до Одеси
-
Кешування розрахунків: повторний запит того ж кошика повинен повертати результат з кешу, не смикаючи зовнішній API
// Перевіряємо кеш розрахунку доставки
$cacheManager = \Bitrix\Main\Data\Cache::createInstance();
$cacheKey = 'delivery_calc_' . md5(serialize($basketItems) . $cityCode);
if ($cacheManager->initCache(3600, $cacheKey, '/sale/delivery/calc')) {
$cachedResult = $cacheManager->getVars();
} else {
$result = $deliveryService->calculate($shipmentItemCollection, $extraServices);
$cacheManager->startDataCache();
$cacheManager->endDataCache($result);
}
Вибір ПВЗ
Віджети CDEK, Boxberry, PickPoint завантажують карту через JS. Тестують:
- Завантаження віджету на всіх цільових браузерах
- Коректну передачу вибраного ПВЗ у форму оформлення
- Збереження вибраного ПВЗ при оновленні сторінки
- Поведінку при недоступності JS (graceful degradation)
Створення відправлення
Перевірка того, що замовлення коректно реєструється в ОС служби доставки при зміні статусу в Бітрікс:
// Обробник події зміни статусу замовлення
AddEventHandler('sale', 'OnOrderStatusChange', function(\Bitrix\Main\Event $event) {
$order = $event->getParameter('ORDER');
$newStatus = $event->getParameter('NEW_STATUS');
if ($newStatus === 'PROCESSING') {
foreach ($order->getShipmentCollection() as $shipment) {
if (!$shipment->isSystem()) {
$deliveryService = $shipment->getDelivery();
// Тест: перевіряємо що createShipment повертає трек-номер
$result = $deliveryService->createShipment($shipment);
// result повинен містити tracking_number
}
}
}
});
Трекінг
Тестуємо на реальних трек-номерах (у CDEK є тестові в документації sandbox) з перевіркою оновлення поля UF_TRACKING в b_sale_shipment.
Кейс: CDEK + Бітрікс (з нашої практики)
Типова проблема при тестуванні офіційного модуля CDEK: розрахунок вартості повертає 0 або порожній масив тарифів. Причини в порядку частоти:
- Не заповнені габарити товарів — CDEK API v2 при відсутності
weight/length повертає 400, модуль мовчки повертає 0
- Невірний код міста — CDEK використовує власні коди міст (не КЛАДР, не ФІАС); перевіряють через
POST /v2/location/cities
- Тариф не активовано в договорі — спроба розрахувати тариф
136 (Посилка склад-склад) при непідключеній послузі дає помилку авторизації, не 403
-
Sandbox vs Production — тестові credentials CDEK:
EMscd6r9JnFiQ3bLoyjJY6eM, PjLZkKBHEiLK3YsjtNrt7ZpUWSrTJtp6
Для перевірки raw-запитів до API CDEK v2 у тестовому середовищі:
# Отримати токен
curl -X POST https://api.edu.cdek.ru/v2/oauth/token \
-d "grant_type=client_credentials&client_id=EMscd6r9JnFiQ3bLoyjJY6eM&client_secret=PjLZkKBHEiLK3YsjtNrt7ZpUWSrTJtp6"
# Розрахувати доставку
curl -X POST https://api.edu.cdek.ru/v2/calculator/tariff \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"tariff_code":136,"from_location":{"code":44},"to_location":{"code":270},"packages":[{"weight":1000,"length":20,"width":15,"height":10}]}'
Якщо raw-запит проходить, а модуль Бітрікс не працює — проблема в адаптері модуля.
Як автоматизувати регресійне тестування доставки?
Для регресійного тестування розрахунків доставки пишуть unit-тести на PHPUnit з мокуванням HTTP-клієнта. Автоматизоване тестування краще ручного в 5 разів за швидкістю регресу. Воно охоплює 95% сценаріїв проти 70%.
class CdekDeliveryTest extends \PHPUnit\Framework\TestCase
{
public function testCalculateReturnsNonZeroForValidPackage(): void
{
$httpMock = $this->createMock(HttpClient::class);
$httpMock->method('post')->willReturn($this->getFixture('cdek_tariff_response.json'));
$service = new CdekDeliveryService(['http_client' => $httpMock]);
$result = $service->calculate($this->buildShipment(weight: 1000, city: 'SPB'));
$this->assertGreaterThan(0, $result->getPrice());
$this->assertNotEmpty($result->getPeriodMin());
}
}
Порівняння ручного та автоматизованого тестування
| Критерій |
Ручне |
Автотести |
| Час регресу |
2-3 дні |
2-3 години |
| Охоплення сценаріїв |
70% |
95% |
| Трудомісткість підтримки |
Висока |
Середня |
Що входить в роботу
- Аудит поточної інтеграції та документації
- Написання тестових сценаріїв під ваш каталог та служби
- Тестування розрахунків, ПВЗ, створення відправлень, трекінгу
- Складання звіту зі знайденими помилками та рекомендаціями
- Автоматизація регресійних тестів (опціонально)
- Консультація щодо виправлення типових проблем
Строки та вартість
| Комплект |
Строк |
| Тестування однієї служби (розрахунок + ПВЗ) |
1-2 дні |
| Дві-три служби + трекінг |
3-5 днів |
| Повний цикл з автотестами |
6-10 днів |
Вартість розраховується індивідуально після аналізу вашого ТЗ. Ми гарантуємо виявлення не менше 90% типових помилок інтеграції. Кожна знайдена помилка економить компанії до 500 000 грн на виправленні в продакшні. Зв'яжіться з нами для попередньої оцінки проєкту — отримайте консультацію з типових проблем вашої інтеграції. Замовте тестування зараз.
Інтеграція доставки: від розрізнених 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 робочий день.