Интеграция 1С-Битрикс со службой доставки Ozon Rocket
Ozon Rocket — логистическая служба Ozon, открытая для внешних мерчантов. Использует инфраструктуру Ozon: склады, сортировочные центры, курьерскую сеть и пункты выдачи (в том числе постаматы). Для магазинов на Битрикс это доступ к развитой сети доставки с предсказуемыми тарифами.
Доступные сервисы Ozon Rocket
- Курьерская доставка — до двери, сроки зависят от направления
- Доставка в ПВЗ/постаматы Ozon — более 7000 точек по России
- Доставка на следующий день (Next Day) — для Москвы, Санкт-Петербурга и ряда городов
- Частичный выкуп — покупатель может принять часть позиций, остальное вернуть курьеру
API Ozon Rocket
Ozon предоставляет REST API для партнёров-интеграторов. Базовый URL: https://rocket.ozon.ru/api/logistics. Авторизация: Bearer-токен, получаемый через API-ключ из личного кабинета партнёра.
Основные эндпоинты:
-
POST /v1/calculate— расчёт стоимости доставки -
POST /v1/orders— создание отправления -
GET /v1/orders/{id}— статус отправления -
GET /v1/pickup-points— список ПВЗ -
POST /v1/orders/{id}/cancel— отмена
Модуль доставки в Битрикс
Класс доставки — наследник \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 приходит информация о принятых/возвращённых позициях — обновляем заказ в Битрикс: убираем невыкупленные позиции, пересчитываем сумму, создаём возврат.
Логика обработки частичного выкупа требует настройки в 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 | Битрикс |
|---|---|
created |
Передан в доставку |
in_transit |
В пути |
arrived |
Ожидает в ПВЗ / курьер у двери |
delivered |
Доставлен |
partial_delivered |
Частичный выкуп — требует ручной обработки |
returned |
Возврат |
Сроки
| Масштаб | Состав | Срок |
|---|---|---|
| Базовая: расчёт + заявки + статусы | Без частичного выкупа | 4–5 дней |
| + Частичный выкуп | Логика пересчёта заказа + возвраты | +3–4 дня |
| + Карта ПВЗ | HL-блок + виджет | +2–3 дня |







