Алексей Ковалёв: Для успешного бизнеса важно использовать разные каналы и площадки для продажи своих товаров. Одной из важнейших площадок являются маркетплейсы, которые с каждым годом становятся всё популярнее у покупателей. О том, как самостоятельно настроить передачу заказов из OZON в ПланФикс, и с какими «подводными камнями» здесь можно столкнуться, рассказывает руководитель проекта Corden Денис Велижанин. Передаю ему слово.
Денис Велижанин: Здравствуйте всем! Начну с того, что у нас есть маленький интернет-магазин со своей продукцией, а точнее с одним товаром одного наименования. Монобрендовый, как это называется. Все заказы с нашего сайта на Тильде к нам попадают в ПланФикс, и там мы их обрабатываем: «В работу», «К отгрузке» , «Отгружено», «Отправлено» и т.д.
И вот мы решили, наконец-то, выложить наш товар на маркетплейсе OZON по модели FBS (сами отвозим на пункт выдачи заказов). Выложить-то выложили, но мы, разумеется, захотели, чтобы все заказы из OZON попадали тоже в ПланФикс. Почитав чат энтузиастов мы не нашли действующего решения этой задачи, т.к. те, кто задавал вопрос про OZON, столкнулись с такой же проблемой, как и мы.
Проблема номера заказа
Казалось бы очевидно, обрабатываем Правилом e-mail входящее письмо о новом заказе, достаем из него номер заказа и дальше по API обрабатываем заказ. Но вот незадача: от OZON приходят уведомления на e-mail c номером заказа, но этот номер там указан неполностью:
Т.е. номер 557***39-0018 неполный, т.к. после «0018» идет всегда какое-то рандомное число — может идти 1 или 5, или 06, или другое. Следовательно, получить данные об этом заказе по API не представляется возможным, т.к. система просто не знает такого номера.
Получаем список заказов
Думали, что может верный номер заказа вшит где-нибудь в ссылку в письме, но нет — тоже мимо… Так как заказов у нас не много, то пришла в голову идея: по API можно получить список заказов полученных в определенный промежуток времени вот этим методом — https://api-seller.ozon.ru/v3/posting/fbs/list:
{
"dir": "ASC",
"filter": {
"delivery_method_id": [ ],
"fbpFilter": "string",
"last_changed_status_date": {
"from": "{{Задача.Дата создания::ФорматироватьДату=yyyy-MM-dd}}T{{Инфоблок.ДатаЗаказаОзон}}:00.878Z",
"to": "{{Задача.Дата создания::ФорматироватьДату=yyyy-MM-dd}}T23:59:59.878Z"
},
"order_id": 0,
"provider_id": [
],
"since": "{{Задача.Дата создания::ФорматироватьДату=yyyy-MM-dd}}T{{Инфоблок.ДатаЗаказаОзон}}:00.878Z",
"status": "awaiting_packaging",
"to": "{{Задача.Дата создания::ФорматироватьДату=yyyy-MM-dd}}T23:59:59.878Z",
"warehouse_id": [
]
},
"limit": 1,
"offset": 0,
"with": {
"analytics_data": true,
"barcodes": true,
"financial_data": true,
"translit": true
}
}
Чтобы это реализовать, мы создаем виртуальный адрес на который пересылаем все заказы с OZON, и прописываем для него Правило для обработки задач по почте, в котором сначала достаем номер заказа (557***39-0018) из письма, чтобы потом сравнить с уже работающим номером — верно ли мы все «извлекли»:
Далее в этом же правиле настраиваем API-запрос и добавляем в него указанный выше код:
Задаём период для списка заказов
Т.е. к нам на почту приходит уведомление с новым заказом в момент создания заказа на OZON, соответственно, мы должны указать время «начала» желаемого списка заказов с момента создания задачи в ПланФиксе:
"{{Задача.Дата создания::ФорматироватьДату=yyyy-MM-dd}}T{{Инфоблок.ДатаЗаказаОзон}}:00.878Z"
И отправить это в запросе по API. {{Инфоблок.ДатаЗаказаОзон}} пришлось вычислять формулой:
ТЕКСТ(ДОБАВИТЬМИН({{Задача.Дата создания}};-301);"HH:mm")
Так как в API время передается в UTC+0, а у нас часовой пояс UTC+5, соответственно, у нас время заказа создается как, допустим, 09:00, а на сервере OZON это будет 04:00. Соответственно вычитаем 300 минут (5ч*60мин). А точнее вычитаем не 5 часов ровно, а 5 часов и 1 минуту на случай задержки отправки писем, иначе может прийти пустой ответ, т.к. в заданном интервале не будет заказов.
И еще в данном запросе ставим limit: 1 (лимит заказов в данный промежуток времени). Ну а конечное время ставим 23:59:59.
{{Задача.Дата создания::ФорматироватьДату=yyyy-MM-dd}}T23:59:59.878Z
Просто лень было вычислять еще какое-то конечное значение интервала заказов.
Номер заказа — получен
В ответ на данный запрос должен прийти ответ следующего вида, из которого нам нужен posting_number (тот самый уникальный номер), а потом нам пригодится sku (артикул) и warehouse_id (это ID склада, с которого производится отгрузка):
{
"result" : {
"postings" : [
{
"posting_number" : "557***39-0018-1", /// Нам нужен вот этот номер
"order_id" : "212*****102",
"order_number" : "557***39-0018", ///Вот он этот «кривой» номер из e-mail
"status" : "awaiting_packaging",
"delivery_method" : {
"id" : "102000*******000",
"name" : "Доставка Ozon самостоятельно, НаименованиеСклад",
"warehouse_id" : "102000*******000", ///Пригодится потом
"warehouse" : "НаименованиеСклад",
"tpl_provider_id" : "24",
"tpl_provider" : "Доставка Ozon"
},
"tracking_number" : "",
"tpl_integration_type" : "ozon",
"in_process_at" : "2023-11-29T13:52:03Z",
"shipment_date" : "2023-12-01T04:00:00Z", /// Отгрузить не позже
"delivering_date" : "null",
"cancellation" : {
"cancel_reason_id" : "0",
……………..
"customer" : "null",
"products" : [
{
"price" : "5000.0000",
"offer_id" : "CRD-00-NAM",
"name" : "Тренажер………….",
"sku" : "1231456789",
"quantity" : "1",
"mandatory_mark" : [
] ,
"currency_code" : "RUB"
….
}
И разбираем этот полученный ответ на инфоблоки:
Вписываем в кастомное поле «Номер заказа в шаблоне», а «Дату планируемого завершения» берем из инфоблока «ОтгрузитьНеПозжеОзон»:
Собираем заказ по API
Ну а дальше уже проще будет работать с API OZON Seller.
Например, чтобы «Собрать заказ» (а он у нас пока не собран), нужно использовать https://api-seller.ozon.ru/v3/posting/fbs/ship:
{
"packages": [
{
"products": [
{
"exemplar_info": [
{
"gtd": "string",
"is_gtd_absent": true,
"mandatory_mark": "string"
}
],
"product_id": {{Общие.ozon_sku}}, ///1231456789
"quantity": 1
}
]
}
],
"posting_number": "{{Задача.Номер заказа}}",
"with": {
"additional_data": true
}
}
Тут уже можно придумать свои сценарии. Мы это делаем по статусам задач. Статус изменился – отправился запрос, и товар переведен в статус «Готов к отгрузке». А чтобы уже отгрузить в ПВЗ, то вот этот метод — https://api-seller.ozon.ru/v2/posting/fbs/act/create:
{
"delivery_method_id": "102000*******000", /// warehouse_id
"departure_date": "2023-12-01T04:00:00Z", /// Отгрузить не позже
}
Вот так вот мы стараемся «победить» OZON с помощью ПланФикса, и вроде как, нам это удается.
Алексей Ковалёв: Спасибо, Денис. Надеюсь этот кейс будет полезен тем, кто хочет интегрировать свой кабинет на OZON и ПланФикс. Ведь, чем больше у бизнеса каналов продаж, тем больше потенциальных покупателей можно привлечь.
Не забывайте о наших социальных сетях: ВКонтакте, Telegram и ВК Видео. Там появляются новости о доработках и новинках. Подпишитесь, чтобы ничего не пропустить.
Спасибо! Полезно!
Спасибо за комментарий! Надеемся, что пригодится в дальнейшей работе.