Інтеграція Європошти з 1С-Бітрікс: повне підключення
При інтеграції служби доставки Європошта з 1С-Бітрікс часто виникають проблеми: нестандартний розрахунок ваги посилок (мінімальний поріг 0.05 кг), плутанина з післяплатою, відсутність автоматичного відстеження. Ми вирішуємо ці завдання вже довгі роки та реалізували понад 30 інтеграцій для білоруських інтернет-магазинів. Наше рішення під ключ включає все: від налаштування API до карти ПВЗ на сайті. Європошта — приватний поштовий оператор із широкою мережею пунктів видачі. API надається партнерам після реєстрації.
З якими проблемами стикаються магазини?
Основні технічні складнощі: нестандартний розрахунок ваги (потрібен мінімальний поріг 0.05 кг), неправильна передача коду післяплати, відсутність синхронізації статусів. Додатково — низька продуктивність через часті запити до API при розрахунку доставки. Стандартні компоненти доставки в Бітрікс не оптимізовані для Європошти — часті запити сповільнюють сторінку. Наш компонент використовує теговане кешування та зменшує навантаження на сервер у 2-3 рази. Середня економія часу на обробку одного замовлення — до 60%.
Чому варто інтегрувати Європошту через наш компонент?
Ми використовуємо теговане кешування результатів розрахунку, що скорочує навантаження на сервер у 2-3 рази. На відміну від стандартних рішень, наш компонент підтримує автоматичне визначення cod за способом оплати, виключаючи ручні помилки. Ми передаємо cod як числове значення з двома знаками після коми, як це передбачено в офіційній документації API Європошти.
Як налаштувати розрахунок вартості без помилок?
class EuropachtaHandler extends \Bitrix\Sale\Delivery\Services\Base
{
protected function calculateConcrete(
\Bitrix\Sale\Shipment $shipment
): \Bitrix\Sale\Delivery\CalculationResult {
$result = new \Bitrix\Sale\Delivery\CalculationResult();
$order = $shipment->getOrder();
$response = $this->apiPost('/rate/calculate', [
'from_city' => $this->getOption('SENDER_CITY'),
'to_city' => $this->getOrderCity($shipment),
'weight' => max($shipment->getWeight() / 1000, 0.05),
'declared' => round($order->getPrice()),
'delivery_type' => $this->getOption('DELIVERY_TYPE', 'pvz'),
]);
if (!empty($response['price'])) {
$result->setDeliveryPrice((float)$response['price']);
$days = $response['days'] ?? '2–5';
$result->setPeriodDescription("{$days} днів");
}
return $result;
}
}
Створення замовлення з післяплатою
public function createOrder(\Bitrix\Sale\Shipment $shipment): string
{
$order = $shipment->getOrder();
$props = $order->getPropertyCollection();
$payload = [
'external_id' => 'bitrix_' . $order->getId(),
'delivery_type' => $this->getOption('DELIVERY_TYPE', 'pvz'),
'weight' => max($shipment->getWeight() / 1000, 0.05),
'declared' => round($order->getPrice()),
'cod' => $this->getCodAmount($order),
'sender' => [
'name' => $this->getOption('SENDER_NAME'),
'phone' => $this->getOption('SENDER_PHONE'),
'address' => $this->getOption('SENDER_ADDRESS'),
],
'recipient' => [
'name' => $props->getItemByOrderPropertyCode('FIO')?->getValue(),
'phone' => $props->getItemByOrderPropertyCode('PHONE')?->getValue(),
'city' => $this->getOrderCity($shipment),
'pvz_id' => $props->getItemByOrderPropertyCode('EUROPOCHTA_PVZ')?->getValue(),
],
'items' => $this->buildItems($shipment),
];
$response = $this->apiPost('/order/create', $payload);
return (string)($response['order_id'] ?? '');
}
Поле cod — сума післяплати. Якщо замовлення передплачене, передаємо 0. Якщо післяплата — передаємо повну суму замовлення. Ми автоматично визначаємо cod за способом оплати, виключаючи ручні помилки.
Обробка помилок API та валідація даних
При інтеграції критично важлива надійна обробка помилок. API Європошти може повернути коди помилок: 401 (невірні облікові дані), 400 (невірний формат запиту), 404 (місто не знайдено в довіднику), 500 (помилка на стороні сервера). У кожному випадку потрібна різна стратегія: для 401 потрібна перевірка API-ключів у конфігурації, для 400 — валідація даних адреси та ваги, для 404 — запропонувати користувачу вибрати альтернативне місто або район доставки, для 500 — відкласти повтор запиту на 10-30 секунд з експоненційною затримкою. Всі помилки мають логуватися з повною інформацією про параметри запиту для налагодження. Ми використовуємо вбудовану систему логування Бітрікс та відправляємо критичні помилки сповіщеннями менеджерам.
Чому важливо правильно реалізувати післяплату?
Неправильна передача cod призводить до спорів з покупцями та втрати грошей. Автоматизація за способом оплати гарантує, що сума стягується коректно.
Як ми прискорюємо роботу служби доставки?
Для кешування списку ПВЗ використовуємо Bitrix\Main\Data\Cache з часом життя 12 годин. Агент перевіряє статуси замовлень раз на 3-4 години, оскільки вебхуків у Європошти немає. Наш компонент оптимізований так, що сторінка оформлення замовлення не гальмує навіть при високих навантаженнях.
Тестування інтеграції та пошук несправностей
Перед запуском у production необхідно протестувати всі сценарії: розрахунок доставки для різних ваг (включаючи граничний випадок 0.05 кг), створення замовлень з різними способами оплати, синхронізацію статусів для доставлених і повернутих посилок. Рекомендується спочатку працювати з sandbox-оточенням Європошти (якщо доступно), потім перейти на production з невеликим трафіком. Регулярно перевіряйте логи агента в панелі адміністратора Бітрікс, щоб виявити збої API або некоректні дані адрес. Часті помилки: невірний формат телефону (використовуйте міжнародний формат +375...), відсутність міста в довіднику Європошти, перевищення API rate limit (зазвичай 100 запитів на хвилину — додайте throttling на рівні компонента).
| Статус Європошти |
Значення |
created |
Створено |
accepted |
Прийнято на склад |
in_transit |
В дорозі |
arrived |
Прибув до ПВЗ/міста |
delivered |
Вручено |
returned |
Повернення |
Безпека та найкращі практики
API-ключі та облікові дані Європошти ніколи не повинні зберігатися в коді — використовуйте змінні середовища або захищене сховище параметрів у Бітрікс (опція .env файлу або local.php). Всі запити до API Європошти мають йти по захищеному каналу HTTPS з верифікацією SSL-сертифікатів. При логуванні ніколи не зберігайте повний API-ключ або чутливі дані користувачів (паспортні дані, повні адреси) в логах — логуйте лише ID замовлень та стани. Обмежте доступ до адмін-панелі компонента тільки для довірених менеджерів через права користувачів Бітрікс. Рекомендується регулярно ротувати API-ключі (раз на 90 днів) та перевіряти логи доступу на предмет незвичної активності.
Що входить в роботу
- Налаштування служби доставки в Бітрікс з розрахунком вартості через API
- Створення замовлень автоматично при оформленні
- Відображення списку ПВЗ з кешуванням (випадний список або карта)
- Автоматичне відстеження та оновлення статусів (агент з налаштовуваним інтервалом)
- Підтримка післяплати з автоматичним визначенням cod
- Вихідний код компонента та документація з експлуатації
- Навчання менеджерів роботі з новими статусами
Терміни
| Склад |
Термін |
| Розрахунок + створення замовлення |
3–4 дні |
| + Список ПВЗ + карта |
+2 дні |
| + Відстеження + сповіщення |
+2 дні |
| + Післяплата |
+1 день |
Зв'яжіться з нами для консультації з налаштування. Замовте інтеграцію під ключ — отримайте готове рішення за 3-7 днів. Розрахуємо вартість вашого проекту безкоштовно.
Інтеграція доставки: від розрізнених 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 робочий день.