Интеграция 1С-Битрикс с Ozon (маркетплейс)
Ozon не работает через товарные фиды. В отличие от Яндекс.Маркет, где основной канал — YML-файл, Ozon требует загрузку товаров через Seller API. Это POST-запросы с JSON-телом, жёсткая система атрибутов по категориям и обязательная привязка к карточкам Ozon. Без API-интеграции управлять каталогом из 1С-Битрикс невозможно — ручное заполнение через личный кабинет при более чем 50 товарах нежизнеспособно.
Архитектура интеграции
Ozon Seller API (https://api-seller.ozon.ru/) — REST API с авторизацией через Client-Id и Api-Key. Ключи создаются в личном кабинете продавца: Настройки → API-ключи.
Основные группы методов:
-
/v3/product/import— загрузка и обновление товаров -
/v2/product/info/list— получение информации о товарах -
/v1/product/import/prices— обновление цен -
/v2/products/stocks— обновление остатков -
/v1/posting/fbs/list— список заказов FBS -
/v1/posting/fbs/ship— подтверждение отгрузки
Интеграция строится на стороне Битрикс как набор cron-агентов или обработчиков событий, которые отправляют запросы в API Ozon и принимают ответы.
Загрузка товаров: система атрибутов Ozon
Ключевая сложность Ozon — категорийная система атрибутов. Каждая категория (category_id) имеет свой набор обязательных и опциональных атрибутов. Получить их можно через /v1/description-category/attribute.
Пример для категории «Смартфоны»:
| Атрибут Ozon | attribute_id |
Обязательный | Поле в Битрикс |
|---|---|---|---|
| Бренд | 85 | Да | Свойство «Бренд» |
| Название | 4180 | Да | NAME |
| Модель | 9048 | Да | Свойство «Модель» |
| Цвет | 10096 | Да | Свойство из ТП |
| Объём памяти | — | Да | Свойство из ТП |
| Вес с упаковкой, г | 4382 | Да | Свойство или вычислимое |
| Габариты упаковки | 4383–4385 | Да | Свойства |
Значения-справочники. Многие атрибуты — не свободный текст, а выбор из справочника Ozon. Бренд «Samsung» — это конкретный option_value_id, который нужно найти через /v1/description-category/attribute/values. При маппинге свойств Битрикс на атрибуты Ozon необходимо создавать таблицу соответствий: значение свойства инфоблока → option_value_id Ozon.
Привязка к карточкам. Ozon объединяет одинаковые товары разных продавцов в одну карточку. Привязка происходит по штрихкоду (EAN), артикулу производителя или через ручную модерацию. Если товар уже есть в базе Ozon, ваш оффер привяжется к существующей карточке. Если нет — создаётся новая, которая проходит модерацию (1–3 дня).
Маппинг данных: инфоблок → Ozon API
Типичная схема маппинга для интеграционного модуля:
Инфоблок «Каталог» (iblock_id = N)
├── NAME → attribute_id 4180 (Название)
├── PROPERTY_BRAND → attribute_id 85 (Бренд, справочник)
├── PROPERTY_ARTICLE → offer_id (артикул продавца)
├── PROPERTY_BARCODE → barcode
├── DETAIL_TEXT → description (до 6000 символов)
└── DETAIL_PICTURE → images[] (до 15 фото, минимум 200×200)
Инфоблок ТП (iblock_id = M)
├── PROPERTY_COLOR → attribute_id 10096 (Цвет, справочник)
├── PROPERTY_SIZE → attribute_id (размер, зависит от категории)
└── Цена каталога → price / old_price
Маппинг хранится в настройках модуля интеграции (если используется готовый модуль из Marketplace) или в конфигурационном файле кастомного решения.
Синхронизация цен и остатков
Цены. Ozon работает с двумя ценами: price (цена продажи) и old_price (зачёркнутая). Разница должна быть не менее 5% — иначе Ozon не покажет скидку. Обновление через /v1/product/import/prices, лимит — 1000 товаров за запрос.
В Битрикс цены хранятся в таблице b_catalog_price. Для интеграции с Ozon выделяется отдельный тип цены (например, «Цена Ozon») или используется основная розничная. Агент синхронизации запускается по cron каждые 15–30 минут, выбирает товары с изменённой ценой (TIMESTAMP_X) и отправляет пакетный запрос.
Остатки. Метод /v2/products/stocks. Критично для FBS — если остаток в Ozon > 0, а на складе товара нет, вы получите штраф за отмену заказа. Синхронизация остатков должна быть максимально частой: каждые 5–15 минут для высокооборачиваемых товаров.
Для мультискладовости Ozon поддерживает передачу остатков по складам (warehouse_id). Каждый склад Ozon маппится на склад в Битрикс (если используется складской учёт модуля catalog).
Обработка заказов
Заказы FBS забираются через /v1/posting/fbs/list с фильтром status = awaiting_packaging. Обработчик:
- Получает список новых заказов.
- Создаёт заказ в Битрикс через
Bitrix\Sale\Order::create()с маппингом полей: товары, количество, адрес (если доступен), сумма. - При сборке заказа и передаче в доставку — вызывает
/v1/posting/fbs/shipс указаниемposting_numberи трек-номера.
Статусы заказа Ozon → Битрикс:
| Ozon | Действие в Битрикс |
|---|---|
awaiting_packaging |
Создание заказа, статус «Новый» |
awaiting_deliver |
Статус «Собран» |
delivering |
Статус «Отправлен» |
delivered |
Статус «Выполнен» |
cancelled |
Отмена заказа |
Типичные проблемы
Товар не прошёл модерацию. Причина #1 — неверный маппинг атрибутов. Проверьте через /v1/product/info/list поле status_description. Частая ошибка — бренд передан текстом, а не option_value_id.
Rate limiting. Ozon API ограничивает число запросов: ~60 запросов в минуту для большинства методов. При каталоге в 10 000+ товаров обновление цен нужно разбивать на пакеты с задержкой.
Расхождение остатков. Если заказ создан на Ozon, но агент синхронизации ещё не забрал его — остаток в Битрикс не уменьшился. Следующий запрос остатков отправит устаревшие данные. Решение: при получении заказа из Ozon сначала резервировать остаток в Битрикс, потом синхронизировать.
| Масштаб | Срок |
|---|---|
| До 500 товаров, простая структура | 5–7 дней |
| 500–5000, SKU, мультисклад | 1.5 недели |
| 5000+, полная автоматизация (заказы + остатки + статусы) | 2 недели |







