Настройка модуля интеграции с ozon.ru
Содержание

Введение

Данный модуль предназначен для интеграции сайта на CMS Битрикс с личным кабинетом на ozon.ru .
Основная задача модуля обеспечить автоматическую выгрузку на маркетплэйс ozon.ru остатков и цен товаров, а также загрузку заказов по схеме "Отправления с моего склада". 

100%-но корректная выгрузка информации по товарам (описания, картинки, свойства, бренды) в некоторых случаях не гарантирована из-за особенностей API озона.

Обратите внимание - для работы модуля необходимы ID и ключ API, которые можно получить в личном кабинете Озона.



Настройка модуля

Первичная настройка модуля состоит из четырех шагов, которые необходимо выполнить по порядку.
1 шаг - Общие настройки
2 шаг - Загрузка списка атрибутов
3 шаг - настройка выгрузки товаров
4 шаг - настройка загрузки заказов

1 шаг - Общие настройки

Описание параметров



Ваш ID на Ozon.ru: ID  из личного кабинета на ozon.ru
Ваш ключ API на Ozon.ru:  ключ API из личного кабинета на ozon.ru ( API key Озона должен быть типа "Администратор")

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

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



Сохранить - кнопка сохраняет сделанные изменения



При работе по схеме с несколькими виртуальными складами необходимо настроить соответствие складов и служб доставки.

Отключить выгрузку на этот склад - флаг отключает выгрузку остатков на выбранный склад.







2 шаг - Загрузка списка атрибутов

На этой странице необходимо выбрать те категории Озона в которые попадут ваши товары. В любой момент позднее вы можете здесь же добавить те категории, которых вам не хватает. Каждый раз порядок работы на этой странице будет одинаковый:

1 шаг: выберите (отметьте галочкой)  категории товаров из списка и сохраните (нажмите кнопку 'Сохранить категории'). После этого вверху страницы появится список активных категорий.

2 шаг: обновите атрибуты (нажмите кнопку 'Обновить атрибуты') и дождитесь окончания работы скрипта.

3 шаг: обновите значения атрибутов (нажмите кнопку 'Обновить значения атрибутов') и дождитесь окончания работы скрипта.






Обратите внимание!

Иногда Озон изменяет атрибуты товаров, поэтому если впоследствии вы заметите несовпадение атрибутов на Озоне и у себя на сайте, просто снова зайдите на эту страницу и выполните 2 и 3 шаги.

Если Вы видите на Озоне ошибку "Устаревшая характеристика" найдите ее в инфоблоке Атрибуты Озона и удалите. Также, (если таких атрибутов очень много) Вы можете удалить все элементы (не разделы!!!) этого инфоблока, а затем  снова зайдите на эту страницу и выполните 2 и 3 шаги.

ВНИМАНИЕ!!! Если Вы синхронизировали Атрибуты Озона со свойствами Битрикса то удаление элементов инфоблока приведет к рассинхронизации свойств, поэтому такие атрибуты удалять не рекомендуется кроме как в случае если Озон сообщает о том что атрибут устарел!



Некоторые категории Озона могут быть недоступны. Это значит, что все товары этой категории заблокированы и недоступны для продажи, а также вы не можете загрузить новые товары этой категории. Чтобы продолжить или начать продавать товары, для каждого товара предоставьте либо Свидетельство о государственной регистрации (СГР), либо Декларацию соответствия (ДС). Тип документа зависит от вида, состава и описания товара.

3 шаг - настройка выгрузки товаров

! В связи с особенностями модерации товаров на Ozon.ru (товар должен проходить модерацию после любых изменений в карточке товара) данный модуль выгружает карточку товара со всеми картинками и описаниями один раз, а при последующих выгрузках обновляет  только цены и количество.

! Некоторые обязательные для Ozon.ru поля модуль берет из данных о товаре ( Вес, линейные размеры, ставку НДС), поэтому необходимо обязательно заполнить эти параметры, иначе товар не выгрузится.

Описание параметров


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

Периодичность запуска (в секундах) - с какой частотой запускать агента. Обратите внимание, что за один запуск выгружается 100 товаров вашего каталога. Следовательно если у вас 5000 товаров и вы хотите чтобы остатки и цены обновлялись раз в 3 часа то периодичность запуска можно рассчитать по формуле - (3600 * 3) / (5000/100) = 216 секунд. Имейте ввиду, что частота запуска скрипта должна также учитывать ресурсы вашего сервера.

Не выгружать информацию о товарах - если все ваши товары уже есть на Озоне и вы хотите просто выгружать остатки и цены то поднимите этот флаг. В этом случае вы можете не заполнять атрибуты Озона в карточках товара

Не выгружать цены - запрет выгрузки цен

Тип инфоблока - тип инфоблока товаров. Всегда выбирайте основной инфоблок, даже если у товаров есть торговые предложения.

Инфоблок - инфоблок товаров  (должен быть торговым каталогом)

Откуда брать описание товара - описание товара является обязательным атрибутом на Озоне, поэтому выбирайте здесь поле, которое действительно содержит описание, иначе товар на Озоне создан не будет.

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

Откуда брать доп картинки - если есть доп картинки, можете указать здесь свойство в котором они хранятся.

Артикул (значение должно быть уникальным в рамках ядра Битрикса) - если на вашем сайте у товаров есть свойство с уникальным кодом, то укажите его в этом поле. Обратите внимание - символьный код свойства в основном инфоблоке и инфоблоке торговых предложений должен совпадать! Если такого свойства нет или оно заполнено не у всех товаров, то можете оставить это поле пустым - тогда в качестве уникального идентификатора на Озон выгрузиться ID элемента Битрикса. 

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

Свойство для фильтрации товаров - если вы не хотите выгружать на Озон все товары, то настройка этого поля позволит вам уменьшить выборку по товарам и сократить общее время выгрузки всех элементов. Выберите здесь любое существующее свойство инфоблока и в выгрузку будут попадать только товары с этим свойством. Свойство должно быть типа Список. В элементах каталога планируемых к выгрузки на ozon.ru необходимо установить значение свойства указанное здесь. Необязательное поле.

Типы цены - выберите здесь типы цен, которые будут выгружаться на Озон. Параметры:
  1. Без скидок - не учитывать действующие на момент выгрузки скидки привязные к этому типу цен
  2. Выгружать из свойства - выгружать цену из свойства (тип строка)
Выгружать остатки только по складу - если поле оставить пустым, то будет выгружено все Доступное количество, иначе только по выбранным складам. 

Учитывать настройки модулей Торговый каталог и Интернет-магазин - если необходимо при загрузке заказов с Озона учитывать настройки резервирования и списания товаров, то поднимите этот флаг. Учтите, что в случае невозможности списать или зарезервировать товар в этом случае заказ с Озона может не загрузиться в БУС.

Выгружать остатки по событию - мгновенная выгрузка остатков по событию изменения доступного количества товара. Эта опция может замедлить работу скриптов массового изменения остатков товара (например при обмене с 1С). ВНИМАНИЕ! При настроенной выгрузке остатков по складам мгновенная выгрузка произойдет только при изменении полного доступного количества (но выгружен будет именно остаток по выбранным складам).

Сохранить - кнопка сохраняет сделанные изменения






После запуска выгрузки внизу страницы будет доступен лог ошибок за последние 7 дней





4 шаг - настройка загрузки заказов

Основные сведения

 Заказы с Озона можно забирать если вы работаете по схеме "С моего склада".

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

 Данные покупателя на Озоне можно увидеть только в маркировке, распечатать которую вы можете как из списка заказов, так и из детальной информации о заказе.

В отправлении с Озона модуль ищет товары соответствующие товарам на вашем сайте, сопоставляя их по уникальному полю, указанному в настройках модуля здесь

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

Описание параметров


Загрузка заказов с Озона включена - активация этой галочки включает загрузку заказов с Озона

Выберите валюту, в которой будут создаваться заказы - выберите валюту

Выберите тип плательщика - тип плательщика на которого будут создаваться заказы (обычно физлицо)


В каком статусе создавать заказы на сайте? - статус заказа, например Новый - Устаревшее


Подставлять службу доставки - выберите службу доставки

Подставлять систему оплаты  - выберите систему оплаты

Создавать заказы на пользователя - если вы не хотите, чтобы каждый заказ создавал нового пользователя, введите в это поле ID существующего пользователя.

Код свойства заказа для хранения номера с Озона   - создайте новое свойство заказа для выбранного типа плательщика (см. поле 'Выберите тип плательщика'): тип Строка, поставьте галочку Служебное, задайте мнемонический код (например, OZON_NUMBER) и введите этот код здесь.




Соответствие статусов - настройте соответствие статусов заказов Озона и БУСа, статусов отгрузок, флагов оплаты и отгрузки

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

Периодичность проверки новых заказов -> Период, в секундах  - как часто проверять заказы на Озоне.

Время прохождения заказа (количество дней) - Максимальное количество дней за которое обычно заказ доставляется покупателю (с момента создания заказа). Опция влияет на процесс обновления статусов заказов.

Сохранить - сохраняет сделанные изменения



Работа с несколькими личными кабинетами на Озоне

Возможность работа с несколькими личными кабинетами на Озоне реализована на основе многосайтовости в Битриксе. То есть чтобы можно было настроить выгрузку товаров / загрузку заказов из еще одного личного кабинета Озона необходимо создать еще один сайт в БУСе (многосайтовость на одном домене).
После этого в настройках модуля появятся закладки в каждой из которых можно будет настроить работу с отдельным личным кабинетом на Озоне.

Таким же образом можно выгружать в один кабинет Озона несколько инфоблоков Битрикса. Загрузку заказов в этом случае нужно настроить только на одной из закладок.

Заполнение атрибутов в карточках товаров

! В связи с особенностями модерации товаров на Ozon.ru (товар должен проходить модерацию
после любых изменений в карточке товара) данный модуль выгружает карточку товара со всеми
 картинками и описаниями один раз, а при последующих выгрузках обновляет  только цены и количество.

! Некоторые обязательные для Ozon.ru поля модуль берет из данных о товаре ( Вес, линейные размеры,
 ставку НДС), поэтому необходимо обязательно заполнить эти параметры, иначе товар не выгрузится.

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

Сделать это нужно с учетом особенностей вашего торгового каталога:
1 вариант - ваши товары, подлежащие выгрузке на Озон, все простые
2 вариант - ваши товары, подлежащие выгрузке на Озон, все имеют торговые предложения
3 вариант - вам нужно выгружать на Озон как простые товары, так и товары с торговыми предложениями

1 вариант - только простые товары

1. Создайте новое свойство инфоблока товаров: тип свойства "Атрибуты для Ozon.ru", код свойства "CAT_OZON" (обязательно), название свойства - любое;



После этого в карточке товара в админке сайта вы увидите это новое свойство.

2. Начните набирать название категории, в которую должен попасть товар на Озоне



Появится список подходящих категорий, выберите нужную и появится список атрибутов



Заполните поля отмеченные звездочками (обязательные) и при желании любые другие.

3. Также необходимо убедиться в том, что у данного товара заполнены поля из которых будут выгружаться картинки, описание, все размеры, цена. Например, если в настройках модуля здесь вы указали брать картинку из "Детально картинки", а описание из "Детального описания", то убедитесь в том, что они действительно заполнены.






Вес, размеры и цена товара будет взята из закладки "Торговый каталог"




Сохраните изменения.

Если все сделано правильно товар выгрузиться на Озон.

Если этот товар вы ранее создали на Озоне другим способом (в ручную, например) - он свяжется по артикулу и будут выгружаться только цены и остатки из поля "Доступное количество"

Обратите внимание!
  • Если вы заполнили неправильно какие-то атрибуты или захотели впоследствии их поменять, а товар уже выгрузился на Озон, то все изменения нужно делать на Озоне в личном кабинете.
  • Внимательно отнеситесь к выбору категории - ее нельзя изменить (это особенность Озона)


2 вариант - все товары с торговыми предложениями

1. Создайте новое свойство инфоблока торговых предложений: тип свойства "Атрибуты для Ozon.ru", код свойства "CAT_OZON" (обязательно), название свойства - любое;



После этого в карточке торгового предложения в админке сайта вы увидите это новое свойство.

2. Начните набирать название категории, в которую должен попасть товар на Озоне



Появится список подходящих категорий, выберите нужную и появится список атрибутов



Заполните поля отмеченные звездочками (обязательные) и при желании любые другие.

3. Также необходимо убедиться в том, что у данного товара заполнены поля из которых будут выгружаться картинки, описание, все размеры, цена.

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






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




Сохраните изменения.

Если все сделано правильно товар выгрузится на Озон.

Если этот товар вы ранее создали на Озоне другим способом (в ручную, например) - он свяжется по артикулу и будут выгружаться только цены и остатки из поля "Доступное количество"

Обратите внимание!
  • Если вы заполнили неправильно какие-то атрибуты или захотели впоследствии их поменять, а товар уже выгрузился на Озон, то все изменения нужно делать на Озоне в личном кабинете.
  • Внимательно отнеситесь к выбору категории - ее нельзя изменить (это особенность Озона)
  • На Озоне отсутствует понятие торговых предложений как мы его понимаем в Битриксе. При этом товары "склеиваются" в одну карточку посредством некоторого уникального поля. Этим полем в нашем случае будет ID основного товара в Битриксе.

3 вариант - простые товары и товары с торговыми предложениями

В случае если вам нужно выгружать на Озон как простые товары так и товары с торговыми предложениями необходимо создать новое свойство в обоих инфоблоках-  инфоблоке товаров и инфоблоке торговых предложений. настройки свойства абсолютно идентичны: тип свойства "Атрибуты для Ozon.ru", код свойства "CAT_OZON" (обязательно), название свойства - любое;



После этого в админке сайта вы увидите это новое свойство на странице редактирования элемента.



Дальнейшая схема работы следующая: если товар простой то действуйте по 1 варианту, начиная с пункта 2

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


Заполнение атрибутов в разделах инфоблока

Как создать свойство для заполнения атрибутов Озона в разделе инфоблока и провести соответствие свойств элементов и атрибутов Озона смотрите в видеоролике ниже.





Для разработчиков

События

С версии 1.4.5 добавлены события, срабатывающие перед отправкой данных о ценах (OnUpdatePrice) и остатках (OnUpdateStock) товара, перед выгрузкой нового товара (OnUploadItem). События могут быть использованы, например, для применения наценки или изменения количества товара. 
 
С версии 1.5.3 добавлены события перед проверкой заполненности атрибутов для Озон простых товаров "OnItemPrepare" и торговых предложений "OnOfferPrepare". могут быть использованы, например, для изменения атрибутов.

С версии 1.5.4 добавлено событие перед созданием заказа "OnOrderNew". Может быть использовано для изменения полей заказа перед сохранением.

С версии 2.0.7 добавлено событие после подготовки массива данных товара для выгрузки AfterItemPrepare. 


Пример обработчика в init.php

<?
AddEventHandler("maxyss.ozon", "OnUpdatePrice", Array("MyClass", "OnUpdatePriceMy"));
AddEventHandler("maxyss.ozon", "OnUpdateStock", Array("MyClass", "OnUpdateStockMy")); AddEventHandler("maxyss.ozon", "OnUploadItem", Array("MyClass", "OnUploadItemMy"));


class MyClass
{
function OnUpdatePriceMy(&$items)
{
foreach ($items as &$item){
$item['price'] = strval($item['price']*1.1);
}
return $items;
} function OnUploadItemMy(&$items)
    {
foreach ($items as &$item){
// здесь изменяем $item
}
return $items;
}

function OnUpdateStockMy(&$items)
{
foreach ($items as &$item){
$item['stock'] = '0';
}
return $items;
}
} ?>


Пример для события создания заказа

<?
AddEventHandler("maxyss.ozon", "OnOrderNew", Array("MaxyssCustomClass", "OnOrderNewMy"));

class MaxyssCustomClass {

function OnOrderNewMy(&$order_bitrix, $order_ozon){

// здесь что-то делаем с $order_bitrix - это объект заказа в БУСе
// в $order_ozon находятся данные с Озона

return $order_bitrix;

}
}?>

Пример для "OnItemPrepare" и "OnOfferPrepare"

<?
AddEventHandler("maxyss.ozon", "OnItemPrepare", Array("MyClass", "OnItemPrepareMy"));

class MyClass
{
function OnUpdatePriceMy(&$arOzonAttrTovar, $arFields, $arProps)
{
// $arOzonAttrTovar - массив данных которые будут отправлены на Озон
// $arFields, $arProps поля и свойства элемента

// здесь что-то меняем в массиве $arOzonAttrTovar

return $arOzonAttrTovar;
}

} ?> Пример для "AfterItemPrepare"

<? AddEventHandler("maxyss.ozon", "AfterItemPrepare", "AfterItemPrepareMy");
function AfterItemPrepareMy(&$arSku, $arFields, $arProps, $arSettings)
{
$prop_sklad_v3 = unserialize($arSettings['PROP_SKLAD_ID_V3']);
foreach ($arSku['stock'] as $wh=>&$stock){
$stock_prop = 0;
foreach ($prop_sklad_v3[$wh] as $s) {
$stock_prop += $arProps[$s]['VALUE'];
}
$stock = $stock_prop;
}
return $arSku;
}
?> Пример для "AfterItemPrepare" <? AddEventHandler("maxyss.ozon", "OnBasketUpdate", Array("MaxyssCustomClass", "OnBasketUpdateMy"));
class MaxyssCustomClass {
function OnBasketUpdateMy($order_bitrix, &$order_ozon){
$order_ozon["products_bitrix"] = array(); // передаем пустой массив товаров чтобы корзина заказа не изменялась
return $order_ozon;
} } ?>

 

Перевод скриптов агентов на крон

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

<?
define("NO_KEEP_STATISTIC", true);
define("NOT_CHECK_PERMISSIONS",true);
define('CHK_EVENT', true);
CMaxyssOzonAgent::OzonLoadUnfulfilledOrder('s1');
?>
Примерный код такого скрипта для обновления статусов заказов:
<?


define("NO_KEEP_STATISTIC", true);
define("NOT_CHECK_PERMISSIONS",true);
define('CHK_EVENT', true);
$_SERVER["DOCUMENT_ROOT"] = '/var/www/сайт.ru/htdocs';
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php" ) ;

CModule::IncludeModule('maxyss.ozon');

$lid = 's1'; // ID сайта
global $DB;
$row = $DB->Query("SELECT * FROM b_option WHERE NAME='ORDER_STEP'")->Fetch();
$step = $row['VALUE'];

$res = CMaxyssOzonAgent::OzonLoadOrder($lid,$step);
$result = str_replace("CMaxyssOzonAgent::OzonLoadOrder('".$lid."',", "", $res);
$new_step = str_replace(");", "", $result);

\Bitrix\Main\Config\Option::set(MAXYSS_MODULE_NAME, "ORDER_STEP", trim($new_step));

?>






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

<?
define("NO_KEEP_STATISTIC", true);
define("NOT_CHECK_PERMISSIONS",true);
define('CHK_EVENT', true);
$_SERVER["DOCUMENT_ROOT"] = '/var/www/сайт.ru/htdocs';
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php" ) ;

CModule::IncludeModule('maxyss.ozon');

$lid = 's1'; // ID сайта
global $DB;
$row = $DB->Query("SELECT * FROM b_option WHERE NAME='PRODUCT_STEP'")->Fetch();
$step = $row['VALUE'];

$res = CMaxyssOzonAgent::OzonUploadProduct($lid,$step);
$result = str_replace("CMaxyssOzonAgent::OzonUploadProduct('".$lid."',", "", $res);
$new_step = str_replace(");", "", $result);

\Bitrix\Main\Config\Option::set(MAXYSS_MODULE_NAME, "PRODUCT_STEP", trim($new_step));

?>

Перед запуском планировщика отключите агентов в настройках модуля иначе возможны дубли заказов.

Частые вопросы

Может ли модуль выгружать цены в евро (долларах, гривнах ...))

Нет. Цена, которую вы указываете в настройках модуля выгружается как есть. Озон работает в рублях и в качестве цены принимает только цифру без указания валюты. Если у Вас есть потребность выгружать цену в другой валюте, кроме рублей напишите нам на почту - info@maxyss.ru - мы постараемся включить это в следующие обновления.

Я вижу атрибуты, которые не имеют отношения к моему товару - это ошибка модуля?

Нет, это "особенность" Озона. Озон постоянно работает над улучшением своего API

Просто не заполняйте атрибуты, которые вам не нужны.

Я не вижу некоторые нужные атрибуты.

Напишите нам на почту info@maxyss.ru - мы проверим и постараемся вам помочь

Озону не нравятся фото с сайта, что делать?

1 вариант - Заведите новое свойство инфоблока для фотографий и в настройка модуля выберите его в поле "Откуда брать доп картинки".

2 вариант - вы можете загрузить фото позже прямо на Озоне.

Что делать если...

Перестали загружаться заказы и/или обновляться статусы

1. Зайдите на страницу настроек загрузки заказов - https://ваш_сайт/bitrix/admin/maxyss.ozon_order_ozon_maxyss.php?lang=ru

2. Снимите галочку "Загрузка заказов с Озона включена". Нажмите "Сохранить".

3. Снова поставьте галочку "Загрузка заказов с Озона включена". Нажмите "Сохранить". Подождите 2-3-минуты  - заказы должны начать загружаться.

Перестали выгружаться товары, остатки и цены

1. Зайдите на страницу настроек выгрузки товаров - https://ваш_сайт/bitrix/admin/maxyss.ozon_ozon_maxyss.php?lang=ru

2. Снимите галочку "Агент активен". Нажмите "Сохранить".

3. Снова поставьте галочку "Агент активен". Нажмите "Сохранить". Через расчетное время ( количество товаров / 100 * периодичность запуска (сек) ) остатки, цены должны обновиться, новые товары выгрузиться