Інтеграція 1С-Bitrix зі службою доставки Ozon Rocket
Ozon Rocket — логістична служба Ozon, відкрита для зовнішніх мерчантів. Використовує інфраструктуру Ozon: склади, сортувальні центри, кур'єрську мережу та пункти видачі (включаючи постамати). Для інтернет-магазинів на Bitrix це доступ до розвиненої мережі доставки з передбачуваними тарифами.
Доступні сервіси Ozon Rocket
- Кур'єрська доставка — до дверей, терміни залежать від напрямку
- Доставка в ПВЗ/постамати Ozon — понад 7000 точок по Росії
- Доставка наступного дня (Next Day) — для Москви, Санкт-Петербурга та низки міст
- Частковий викуп — покупець може прийняти частину позицій, решту повернути кур'єру
API Ozon Rocket
Ozon надає REST API для партнерів-інтеграторів. Базова URL: https://rocket.ozon.ru/api/logistics. Авторизація: Bearer-токен, отримуваний через API-ключ з особистого кабінету партнера.
Основні endpoints:
-
POST /v1/calculate— розрахунок вартості доставки -
POST /v1/orders— створення відправлення -
GET /v1/orders/{id}— статус відправлення -
GET /v1/pickup-points— список ПВЗ -
POST /v1/orders/{id}/cancel— скасування
Модуль доставки у Bitrix
Клас доставки — спадкоємець \Bitrix\Sale\Delivery\Services\Base. Додатково реалізуємо інтерфейс для підтримки ПВЗ: або через власний компонент, або через агрегатор ПВЗ, якщо він вже є на проекті.
Параметри в b_sale_delivery_service_params:
-
OZON_API_KEY— ключ з кабінету Ozon Rocket -
SELLER_ID— ідентифікатор продавця -
DEFAULT_WAREHOUSE_ID— склад-відправник -
PARTIAL_ACCEPT— дозволити частковий викуп (bool)
Розрахунок вартості
$calcRequest = [
'from' => ['warehouse_id' => $warehouseId],
'to' => [
'delivery_type' => 'to_address', // або 'to_pickup_point'
'address' => [
'city' => $city,
'street' => $street,
'house' => $house,
],
],
'packages' => [[
'weight' => $weightGram,
'length' => $lengthMm,
'width' => $widthMm,
'height' => $heightMm,
]],
'declared_value' => $assessedValue,
];
Ozon Rocket повертає кілька варіантів доставки з цінами та термінами. У calculateConcrete() вибираємо потрібний варіант згідно з настройками модуля або даємо покупцю на вибір через JavaScript на сторінці оформлення.
Особливість: частковий викуп
Одна з важливих особливостей Ozon Rocket — підтримка часткового викупу. При створенні відправлення кожна позиція замовлення передається окремо:
'items' => [
[
'sku' => $sku,
'name' => $name,
'quantity' => $qty,
'price' => $price,
'declared_price' => $price,
],
// ...
]
Кур'єр фіксує, які позиції прийняв покупець. У відповіді від Ozon Rocket приходить інформація про прийняті/повернені позиції — оновлюємо замовлення в Bitrix: видаляємо невикупані позиції, перераховуємо суму, створюємо повернення.
Логіка обробки часткового викупу вимагає настройки в b_sale_order та зв'язку з модулем оплати для коректного повернення грошей (при передплаті).
Створення відправлення
$response = $httpClient->post('/v1/orders', [
'seller_order_number' => 'SHOP-' . $bitrixOrderId,
'warehouse_id' => $warehouseId,
'delivery_type' => 'courier',
'recipient' => [
'name' => $recipientName,
'phone' => $phone,
],
'delivery_address' => $address,
'packages' => $packages,
'items' => $items,
'payment_method' => $isPrepaid ? 'prepaid' : 'cash_on_delivery',
'declared_value' => $assessedValue,
]);
$rocketOrderId = $response['order_id'];
Статуси та вебхуки
Ozon Rocket надсилає вебхуки на зареєстровану URL при зміні статусу. Перевіряємо підпис у заголовку X-Ozon-Signature. Маппінг статусів:
| Статус Ozon Rocket | Bitrix |
|---|---|
created |
Передано в доставку |
in_transit |
У пути |
arrived |
Очікує в ПВЗ / кур'єр у дверей |
delivered |
Доставлено |
partial_delivered |
Частковий викуп — потребує ручної обробки |
returned |
Повернення |
Графік
| Масштаб | Компоненти | Тривалість |
|---|---|---|
| Базова: розрахунок + заявки + статуси | Без часткового викупу | 4–5 днів |
| + Частковий викуп | Логіка перерахування замовлення + повернення | +3–4 дні |
| + Карта ПВЗ | HL-блок + віджет | +2–3 дні |







