Все самые актуальные новости в нашем Telegram-канале Перейти
База знаний
Войдите в личный кабинет для возможности задавать вопросы и отвечать на комментарии.
Полезная информация

Диагностика работы приложения "Интеграция с Ozon"

Поддержка Bodysite
Поддержка Bodysite
16 февраля 2022 09:32
+1

На данной странице описаны типичные сложности, с которыми могут столкнуться пользователи приложения "Интеграция с Ozon". Предполагается, что вы уже настроили приложение по инструкции. На этой странице мы расскажем про методы самостоятельной диагностики причин неполадок.

Содержание:

1. Проблемы с экспортом товаров

Лог-файлы:

  • ozon/export_produсts/exported_product.log - содержит полную информацию об отправляемых товарах и характеристиках, весь объект данных.
  • ozon/export_produсts/validate.log - содержит информацию о товарах, не прошедших внутреннюю валидацию (например, у товара отсутствуют изображения)

1.1. Товары не выгружаются в Ozon

Нужно проверить следующее: 

1) Происходит ли запуск:

Включите логирование. Проверьте, обновляется ли лог exported_product.log при попытках отправки товаров. Если дата изменения файла не меняется, значит запуск не происходит.

2) Ошибки при внутренней валидации

Проверьте присутствие нужных вам товаров в логе ozon/export_produсts/validate.log Чаще всего туда попадают товары без изображений, или без обязательных атрибутов.

3) Ошибки валидации со стороны Ozon.

Если какой-то атрибут не нравится Ozon, товар может не появиться на маркетплейсе. Ошибки, которые сообщает Ozon в ответ на попытку экспорта записываются в лог-файлы вашего сайта и в разделе "статус экспорта", пример:

Проверьте записи в "Истории обновлений" в личном кабинете Ozon, там могут быть сообщения об ошибках:

Вы можете скачать файл с подробностями ошибок и устранить их.

1.2. конкретный товар не выгружается в Ozon

Допустим, вы обнаружили, что один или несколько конкретных товаров не попали в Ozon. Нужно проверить следующее:

1. Отправлялся ли товар вообще.

Зайдите в раздел "Статус экспорта", найдите последние запуски и проверьте присутствие товара в этих списках. Возможно здесь же вы найдете причину, по которой Ozon не принял товар.

2. Товара нет в последних отправках

В этом случае, либо товар не прошёл внутреннюю валидацию, либо не был выбран для экспорта.

Зайдите в раздел "Проверка данных" и попробуйте найти этот товар по названию.

3. Товар есть в "проверке данных", но для него не отображаются никакие данные (их ноль).

Так может происходить по следующим причинам:
а) Товар "скрыт", а галочка "Выгружать скрытые товары" не активирована.
б) Товара нет в наличии, а галочка "Выгружать товары, которых нет в наличии" не активирована.
в) У товара остаток "бесконечность", а галочка "Выгружать товары с остатком бесконечность" не активирована.
г) Стоит ограничение выгрузки по цене, а стоимость товара ниже этой отметки.
д) Для товара не сопоставлена категория

4. Товара нет в "проверке данных".

Это означает, что товар не попал в список выбранных списков/категорий. Самая частые причины ошибок:
а) Для экспорта выбрана не "главная категория" товара. Главная - это та, что в редактировании товара стоит первой. Остальные считаются второстепенными - это особенность структуры Webasyst.
б) Выбрана родительская категория, а товар находится в подкатегории. Если для родительской категории не включена настройка "Включить товары из подкатегори" (в настройках категории), то товары из подкатегории не попадают в выгрузку. Та же ситуация может быть и наоборот - выбраны все подкатегории, а товар находится только в родительской категории.

1.3. В Ozon не передаётся значение конкретной характеристики с сайта.

К этому же пункту относится ошибка  "Не заполнен обязательный атрибут. Отредактируйте товар или загрузите новый XLS-шаблон с актуальными атрибутами."

Пример вопроса: выгружаю товары в Ozon, но в карточке товара в личном кабинете не заполняется характеристика "Бренд" (или любая другая характеристика).

Первое, что нужно проверить, это действительно ли у вас что-то передаётся с сайта для этой характеристики этой категории.

Проверьте, что вы сопоставили значение характеристики, для этого перейдите в категорию товара, найдите характеристику и сопоставление значений:

Проверьте, что в выбранном товаре заполнен бренд в характеристике (что там не пусто).

Более детальная проверка отправляемых данных: нужно запомнить id характеристики, который указывается в скобках

После этого заходим в раздел "Проверка данных", находим пример товара по названию, и кликаем на него, пример:

В пункте "Данные товары" нажимаем на зеленую стрелку, чтобы раскрыть подробности, далее пункт attributes

Здесь находим id той характеристики, с которой есть проблема и смотрим, что передаётся для этого товара:

В данном случае можно увидеть, что для характеристики с id 85 (Бренд) отправлено значение Rotring.

Аналогичную информацию можно найти в файле логов, если логирование включено.

Вопрос: характеристика заполнена, но всё равно не обновляется в Ozon - почему?

Обновление информации в Ozon может происходить только полностью. Нельзя обновить одну или две характеристики. Поэтому если не заполнена какая-то одна любая обязательная характеристика, то не обновится вся информация о товаре. То есть вы не сможете обновить информацию о характеристике "Бренд", если у вас, например, не указаны габариты товара.

1.4. Характеристика заполнена, но не обновляется в Ozon

Первое, что нужно знать - обновление информации в Ozon может происходить только полностью. Нельзя обновить одну или две характеристики. Поэтому если не заполнена какая-то одна любая обязательная характеристика, то не обновится вся информация о товаре. То есть, вы не сможете обновить информацию о характеристике "Бренд", если у вас, например, не указаны габариты товара.

Второе - нужно посмотреть ответ Ozon на попытку отправку товара. Это можно сделать в разделе "Статус экспорта":

На первом экране список запусков экспорта. Кликнув по строке вы попадёте в результат конкретного запуска экспорта, и откроется список товаров, которые были отправлены. С правой стороны отображается список ошибок, которые прислал Ozon в ответ на попытку экспорта товаров:

Пример ошибок:

В данном случае, мы видим, что для товара выбрана не соответствующая категория. 

Ошибка "Выбранная категория не соответствует типу товара".

Данная ошибка может возникать, даже если сейчас у вас выбрана правильная категория и тип товаров. Так может происходить, если вы уже пытались выгрузить товар с неправильным или пустым "Типом" (8229). В этом случае товару уже присвоет этот неправильный тип или категория и изменить их можно только через личный кабинет. Через API их изменить нельзя.

1.5. Техподдержка просит код импорта для проверки

Для экспорта товаров используется метод /v3/product/import Документация

Чтобы предоставить код запроса, перейдите по ссылке: *ВАШ САЙТ*/webasyst/ozon/export-debug

Выберите один из товаров, по которым у вас ошибка. Раскройте его, нажав на название.

Далее вам нужно скопировать код, нажав на иконку:

В ваш буфер обмена будет скопирован код запроса по одному товару. Этого кода недостаточно, нужно добавить пару строк. Вставьте код в текстовый редактор и добавьте:

Перед кодом: { "items": [

После кода: ]}

Пример результата:

Идентификатор товара находится в элементе "offer_id"

Каким методом приложение получает категории и атрибуты:

Начиная с версии 1.10.0:

В более старых версиях:

1.6. Другие вопросы по экспорту:

2. Проблемы с остатками

Как технически происходит обновление остатков: 

  1. Из Ozon запрашиваются все товары (API запрос /v2/product/list
  2. Весь список проверяется на наличие на вашем сайте по признаку сопоставления (ID товара или Id артикула или "Код артикула")
  3. Актуальное наличие отправляется только по найденным товарам (API запрос /v2/products/stocks). Если товар не найден на сайте, по нему либо ничего не будет отправлено, либо будет отправлено наличие "ноль" (если включена такая опция)

Отследить обновление остатков можно в "Истории обновлений" или в лог файлах.

Лог-файлы:

  • ozon/stocks/update_info.log - содержит полную информацию запросов на обновление остатков. Из него можно узнать какой остаток, по какому товару и на какой склад был отправлен.
  • ozon/stocks/about.log - содержит записи о фактах запуска обновления остатков, и количестве товаров с успешно переданным наличием.
  • ozon/stocks/update_answer.log - ответы OZON на запрос об обновлении остатков по каждому товару. Может содержать текст ошибки, если обновление по какой-то причине не удалось.

2.1. Остатки не обновляются совсем

Нужно найти конкретный товар, по которому не передаются остатки. Проверить:

1) Присутствие товара в списке выгрузки.

2) Информацию об отправке отстаков в "Истории обновлений", пример:

Информация говорит о том, что 8-го и 9-го января по товару было отправлено наличие 2 шт.

Или способ №2, через логи:

Запись об отправке данных по этому товару в логе ozon/stocks/update_info.log

Например, ищем товар с offerID 5498, находим в логе, что была отправлена следующая информация:  

 2022-02-16 08:00:02 
dumped from /home/a/xxx/xxxx/public_html/wa-apps/ozon/lib/classes/utils/ozonUpdateStockPriceHelper.class.php line #20:

 [
    'stock' => 0,
    'warehouse_id' => '22881328531000',
    'offer_id' => 5498,
  ]

Получается, что в 8 утра 16.02.2022 было отправлено, что наличие - ноль. Если это значение не соответствует отображаемому в Ozon, смотрим дальше.

2.2. Отправляется наличие 0, хотя на сайте есть

Проверьте, включена ли опция "Если товар из Ozon не найден на сайте, то отправить наличие ноль":

Если включена, значит товар не найден на сайте, поэтому по нему отправляется ноль.

Проверить:

1) Присутствие товара в списке выгрузки.

2) Правильность выбора идентификатора сопоставления:

Точно ли в Ozon используется "Код артикула" в качестве "Артикула"? Или же "ID артикула" или другое значение?

3) Если установлено ограничение "Не выгружать товары с ценой ниже" в разделе "Экспорт", то проверить, что товары дороже этой цены. 

4) Более редкий случай:

На сайте несколько товаров с одинаковым "Кодом артикула" (и выбрано сопоставление по коду артикула). Приложение находит один из товаров, которые не в списке выгрузки и пропускает его.

2.3. Если товара нет в истории обновлений и нет в логе

Основная причина - данный товар из Ozon не найден на вашем сайте.

  • проверить, какой набор товаров выбран для обновления остатков, возможно товара нет в этом списке/категории.

Если у товара статус в вашем магазине "Скрыт" или "Скрыт и недоступен", то будет считаться, что он не найден на вашем сайте.

2.4. Если информация отправлена, но не изменилась в Ozon

Проверяйте лог ответа ozon/stocks/update_answer.log

Поищите товар и по product_id (это id из Ozon) и по offer_id (это может быть Id товара, Id артикула или код артикула).

Возможные ошибки:

  • PRICE_IS_NOT_SENT (Product state is not "price_sent) - товар еще не прошел модерацию, либо не прошел валидацию после изменения какой-либо информации. В этом статусе обновить остатки товара нельзя.
  • SKU_STOCK_NOT_CHANGE (sku stock not changed) - отправленное наличие не отличается от того, что сейчас указано в Ozon.
  • NOT_FOUND_ERROR (Product not found) - товар с таким OfferId не найден в вашем каталоге.
  • SOURCE_TYPE_NOT_FOUND (SourceType not found) - причина этой ошибки еще не изучена до конца, предположительно: товар с передаваемым ID не существует.
  • WAREHOUSE_WRONG_STATUS - причина этой ошибки еще не известна (Остатки на складе XXXX не обновились. Вероятно, склад в архиве или ещё не создан до конца. Проверьте статус в личном кабинете.)

В случае успешного обновления наличия в данном логе по этому товару будет запись: 

  [
    'warehouse_id' => 2xxxxx2x5xxx00,
    'product_id' => 215659241,
    'offer_id' => '5498',
    'updated' => true,
    'errors' => [],
  ]

Информация для техподдержки Ozon

  • Используемый метод для обновления остатков: /v2/products/stocks
  • Дамп отправляемого кода в файле лога ozon/stocks/update_info.log или JSON в разделе "Проверка данных"
  • Дамп получаемого ответа от Ozon в файле лога ozon/stocks/update_answer.log

2.2. Отправляю в OZON наличие 16 шт., а там всё еще написано 17 шт. в наличии, почему?

Проверьте, нет ли товаров "на резерве", это можно сделать кликнув на число наличия:

Строка "Зарезервировано" означает, что у вас в работе есть незавершенные заказы с этим товаром. Например, они еще доставляются.

3. Проблемы с ценами

Самые частые причины проблем:

1) "Старая цена" ниже обычной цены.

2) Сделали наценку на цену, но забыли сделать на "старую", в результате чего старая цена ниже обычной цены.

3) Если текущая цена от 400 до 10 000 рублей включительно, разница между текущей ценой и ценой до скидки должна быть больше 5%.

4) Указали "минимальную" цену выше, чем обычная цена.

5) "Минимальная" цена должна быть не ниже 50% от обычной цены.

6) Неверно выбрано сопоставление товаров (например, товары выгружены по "коду артикула", а цены отправляются по ID артикула).

7) Товары не выбраны для обновления цен.

8) Отправляются только изменения. Если цена не изменилась, то ничего не будет отправлено.

Лог-файлы:

  • ozon/prices/about.log - содержит записи о фактах запуска обновления цен, и о количестве товаров с успешно переданной информацией.
  • ozon/prices/update_info.log - содержит полную информацию запросов на обновление цен. Из него можно узнать - какая цена по какому товару была отправлена.
  • ozon/prices/update_answer.log - содержит записи об ответе Ozon на запрос об обновлении цен. Из него можно увидеть, приняты ли новые цены ('updated' => true), или же есть какая-то ошибка.

3.1. Цены не обновляются совсем

Проверяем, происходит ли запуск отправки цен:

Включите "логирование" в настройках API приложения "Интеграция с OZON".

После попытки запуска обновления цен нужно зайти в приложение "Логи" и определить, происходит ли обновление лог-файлов в папке ozon/prices:

Если время обновляется при попытках запуска, значит запуск происходит, проблема в отправляемых данных. Нужно проанализировать содержимое лог-файлов. 

Если время не обновляется, значит есть проблемы именно с запуском этой функции.

3.2. Не обновляется цена конкретного товара

Если запуск обновления происходит (пример проверки в предыдущем пункте), нужно проанализировать лог файлы на предмет присутствия этого товара в выгрузке, и какая именно информация отправляется по данному товару.

Например, вы выяснили, что у товара с артикулом 1141341 не обновилась цена. 

Вариант1: Посмотрите присутствие товара в "Истории обновления цен". 

Кликаете на строчку с товаром и проверяете когда и какая цена была отправлена в Ozon:

В истории по данному товару мы видим, что цена отправляется регулярно.

Вариант 2: Скачиваете лог ozon/prices/update_info.log для проверки, была ли отправлена информация по этому товару и какая именно. Открываем файл текстовым редактором и ищем 1141341.

3.2.1 Товар не найден в истории обновлений цены или в файле update_info.log.

Если товар не найден, то, возможные причины в следующем:

1) Новая цена не отличается от старой. Цены без изменений не отправляются.

2) Товар с таким offer_id не найден в списке на обновление цен (либо не добавлен в список, либо неверное сопоставление offer_id).

3) "Старая цена" отличается от обычной менее, чем на 5%. 

3.2.2 Товар найден и в истории обновлений цен или в файле update_info.log.

Например, вы выяснили, что у товара с артикулом 8205 не обновилась цена.

Нашли, что по данному товару было отправлена цена 1150 и "старая цена" 1180.

Допустим, эти цены соответствуют необходимым вам, но в Ozon они не пришли. Ищем дальше.

Скачиваем файл update_answer.log для проверки ответа Ozon, часто там есть описание ошибки. Находим наш артикул 8205, по нему есть ответ:

Итого: цена не изменилась, потому что разница между текущей ценой и ценой до скидки должна быть более 5%.

Пример 2:

Есть запись об ошибке: value of MinPrice must be less or equals than Price. Она означает, что вы указали "минимальную" цену выше, чем текущая обычная цена. Такого быть не должно.

3.3. Не применяется наценка на товар

Наценка устанавливается только на главную "основную" категорию товара. Это та категория, которая стоит в редактировании товара первой, пример:

Первой может стоять не обязательно самая крупная категория - раздел, это может быть одна из последних подкатегорий. Важен порядок - та категория, что первая, та и основная. Их порядок можно поменять вручную.

Если наценка выбрана на какую-то из второстепенных категорий, то она не применится к товару. 

3.4. Цена в Ozon отображается ниже, чем вы указали.

Та цена, которую вы видите в личном кабинете Ozon может быть ниже, если товар участвует в акции. 

3.5. Всё равно не могу поменять цену

Если не получается изменить цену ни одним из способов, возможно:

  • товары участвуют в акции, которую вы создали самостоятельно. Чтобы отредактировать цены у таких позиций, нужно удалить их из акции. Как удалить товар из акции
  • цена слишком высокая или низкая для выбранной категории. Если вы уверены, что цена указана правильно, напишите в поддержку: Управление ценами → Ошибки при установке цен

3.6. Как посмотреть историю обновления цен в Ozon

  1. Перейдите на страницу Товары и цены → Список товаров или Товары и цены → Цены на товары.
  2. Нажмите на цену нужного товара. Откроется его карточка.
  3. В разделе История изменений цен можно посмотреть, как менялись цены на товары за всё время или выбранный период.

4. Проблемы с заказами

Лог-файлы:

  • ozon/order/syncOrders.log - содержит записи о фактах синхронизации и количестве загруженных заказов
  • ozon/order/syncError.log - записи об ошибках при синхроназации заказов
  • ozon/order/statusChange.log - информация о смене статуса в Ozon и выполнении / не выполнении ранее выбранных действий на сайте

4.1. Заказы не появляются в админ-панели

Заказы загружаются в админ-панель двумя способами: по нажатию соответствующей кнопки, либо периодически, при запуске команды в автоматическом планировщике CRON. Если заказы не появляются по CRON, проверьте, работает ли ручной запуск. Если ручной работает, значит нужно проверить корректность настройки CRON - верно ли введена команда и из той ли версии PHP она запускается. В этом может помочь поддержка хостинга. Подробнее в инструкции.

Проверьте дату начала синхронизации. Если там текущий день, выберите более ранее число.

Проверьте обновление даты логов, происходит ли оно при нажатии на кнопку "Запустить"

Проверьте последние записи в логе syncError.log. Например, там может быть такая запись об ошибке:

Invalid Api-Key, please contact support

Она говорит о том, что нужно заменить API токен, подробнее об этом в инструкции.

4.2. Конкретный заказ не передался в админ-панель

Найдите номер отправления заказа, по которому возникла проблема. 

1) Возможно настроенная команда Cron еще не сработала. 

Например, вы настроили на обновление раз в час, а заказ появился в Ozon 15 минут назад. Частоту обновления заказов их их количество можно проверить в логе syncOrders.log. 

В нем будут примерно такие записи:

2022-02-15 14:45:01 
Получена информация о 6 заказах

4.3. Заказы дублируются.

Так может происходить, если созданию заказа что-то помешало и не произошла его корректная запись в базу данных. В момент создания заказа вызывается несколько штатных "хуков", которые могут отслеживат разннобразные плагины, которые установлены на вашем сайте. Если в одном из них произошла ошибка, то весь процесс может сломаться.

Пожалуйста, проверьте новые записи в логе wa-log/ozon/order/orderCreateError.log

Например, там может быть такое сообщение: 

2022-11-02 09:15:05 
Заказ в озоне 977445167 не удалось создать: Class 'lpostShippingPickuppointModel' not found

Оно говорит нам о том, что при попытке создания заказа возникла ошибка, связанная с плагином доставки lpost. 

Ошибка syntax error, unexpected '?', expecting function (T_FUNCTION) or const (T_CONST):

Замечено несколько случаев ошибки, связанной с плагином "Прайсы в Excel". Решение: использовать для запуска CRON версию как минимум 7.4.

Пример команды с указанием версии:

/opt/php/7.4/bin/php -q /var/www/u0000000/data/www/site.ru/cli.php ozon syncOrders

Проанализируйте файлы error.log и db.log, чтобы понять, в каком именно плагине происходит ошибка.

4.4. В заказе не отображается номер заказа Ozon / другие неполадки с заказом.

Аналогично предыдущему пункту, так может происходить, если при создании заказа происходит какая-то ошибка, возможно связанная с другим плагином, который "сидит" на хуке создания заказов.

Пример из реальной практики:

Проблема - в заказе не отображается информационный блок, нет номера заказа Ozon. 

Открываем лог wa-log/ozon/order/orderCreateError.log, в нём запись:

2024-03-27 13:30:09 
Заказ в озоне 22985812935 не удалось создать: syntax error, unexpected ')'

2024-03-27 13:30:09 
#0 [internal function]: waAutoload->autoload('shopWblinkPlugi...')
#1 /home/c/xxxx/xxxx/public_html/wa-apps/shop/plugins/wblink/lib/shopWblink.plugin.php(25): spl_autoload_call('shopWblinkPlugi...')
#2 /home/c/xxxx/xxxx/public_html/wa-system/event/waEvent.class.php(247): shopWblinkPlugin->orderActionHandler(Array, 'order_action.cr...')
#3 /home/c/xxxx/xxxx/public_html/wa-system/event/waEvent.class.php(90): waEvent->runPlugins(Array, Array)
#4 /home/c/xxxx/xxxx/public_html/wa-system/waSystem.class.php(1466): waEvent->run(Array)
#5 /home/c/xxxx/xxxx/public_html/wa-apps/shop/lib/workflow/shopWorkflowCreateAction.class.php(550): waSystem->event('order_action.cr...', Array)

В логе можно увидеть, что происходит ошибка в плагине shopWblink (в вашем случае это может быть и любой другой плагин), стоит его выключить, и далее попробовать решить через разработчика этого плагина. 

4.5. В заказе нет товара

Если в заказе из Ozon нет товара, значит товар с таким offer_id не найден на сайте. Проверьте, какой признак используется при сопоставлении заказов (Id товара/ Id артикула / код артикула), найдите в кабинете Ozon какой артикул у товара в этом заказе и попробуйте найти на вашем сайте этот товар.

4.6. Раньше всё работало, а сейчас не работает

Убедитесь, что вы используете саму свежую версию приложения.

Проверьте, работает ли у вас Cron на обновление заказов.

Попробуйте запустить обновление вручную по соответствущей кнопке в разделе "Синхронизация заказов".

Посмотрите, записываются ли при этом какие-то логи. Далее исходя из найденных записей уже искать причины. 

5. Проблемы с актом приёма-передачи

5.1. Акт не создаётся, ошибка Invalid CarriageGetRequest.CarriageId: value must be greater than 0

Более человекочитаемое сообщение появится в ближайшей версии приложения, но означает данная ошибка одно - акт не удаётся создать. Вероятно, есть какие-то причины, препятствующие этому. Например, сегодняшняя отгрузка уже прошла по времени, либо у вас есть спорные заказы. Проверьте создание акта в личном кабинете Ozon, и наличие каких-либо ограничений.

5.2. Процесс завис на стадии "Формирование документов"

Возникает какая-то ошибка на стадии запроса формирования акта. Попробуйте скачать документы через личный кабинет. 

Нами был зафиксирован случай ошибки со стороны Ozon API, который решился после обращения в поддержку через личный кабинет.