вторник, 2 июня 2020 г.

IR XML2Ozon - работа с маркетплейсом Ozon.ru по API

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

Внимание: вышла новая версия   2.x !

На основе накопленных наработок запущен и тестируется сервис tovaroved.net!

Начало работы с Ozon позволит Вам задействовать ещё один канал сбыта и тем самым, соответственно, увеличить свой товарооборот и прибыль. Здесь можно посмотреть подробней про работу с Озоном: business.ozon.ru

Разработанный компонент является расширением для CMS Joomla. Но это можно использовать вообще независимо от CMS Вашего сайта.

И независимо от вида расширения для интернет-магазина (VirtueMart, JoomShopping, HikaShop и т.д.).

В качестве исходных данных компонент принимает обновляемый XML файл. Настроить подготовку такого файла можно, используя любую CMS или вообще без сайта (напрямую из товаро-учётной порграммы, например, 1С). Также можно работать на основании файлов поставщиков, не имея ни сайта, ни товаро-учётной программы, способной к выгрузке данных.

Компонент IR XML2Ozon обрабатывает данные XML файла (или нескольких файлов) и взаимодействует с Озоном.

Внимание: если у Вас нет подходящего обновляемого XML файла - это не проблема. Главное - чтобы данные были. А формат - это уже вопрос решаемый. Например, можно настроить приём данных в форматах: CSV, XLS или XLSX (Excel), JSON. В таких случаях настраивается промежуточный скрипт, который в автоматическом режиме преобразует формат для работы компонента.

Основные функции

Текущая версия компонента позволяет:

  • Отправлять новые товары на Озон
    (с характеристиками, если сведения о них имеются);
  • Добавлять отсутствующие в XML характеристики - всем товарам или в зависимости от категории;
  • Обновлять данные ранее загруженных товаров на Озон;
  • Автоматически обновлять цены товаров на Озон (включая перечёркнутые цены и со скидками);
  • Автоматически обновлять остатки товаров на Озон;
  • Автоматически импортировать заказы с Ozon.

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

Дополнительные функции

  • Получить список всех возможных Категорий на Озон;
  • Получить список всех возможных Характеристик товаров для определённой Категории Озон;
  • Получить список всех возможных Значений для определённой Характеристики на Озон;
  • Получить полную информацию о нашем товаре с Озона;
  • Быстро отправить Остатки (наличие) для некоторых товаров;
  • Получить состояние задачи на импорт номенклатуры;
  • Анализ данных в XML файле (структура категорий, варианты для определённой характеристики и прочее).

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

Первая версия компонента разработана для версии Joomla 1.5. Планируется сделать адаптацию для Joomla 3.9.

Цена

Компонент платный. Цена готового решения в текущей версии - 10 тыс. руб.
Это значительно дешевле, чем разработка с нуля (часть которой оплатил первый заказчик).
В то же время это значительно надёжней, чем разработка с нуля, т.к. со времени изначального выпуска внесено большое количество исправлений и улучшений.
При этом развитие и далее продолжается.
Иногда требуются доработки по индивидуальным пожеланиям/особенностям данных, я готов их выполнить за отдельную плату по взаимному согласованию.

Некоторые примеры внедрения этой разработки

Часто задаваемые вопросы

Если товаров очень много (сотни тысяч), XML с данными может быть очень большим, что может вызывать ошибки. Есть ли решение?

Экспортировать данные не в один, а в несколько однотипных XML файлов. Начиная со 2 версии компонент может работать с несколькими файлами. Число XML файлов может быть неопределённым (сканирование папки на сервере или по FTP).

Возможна ли работа с другими маркетплейсами, например, WildBerries?

Взаимодействие по API с WB уже в разработке. В перспективе могут быть с другие маркетплейсы.

У нас нет подходящего обновляемого XML файла с данными о товарах. Есть ли варианты применить компонент?

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

Как быть если у нас есть не все характеристики товаров, которые обязательно нужны для Озона?

Компонент поможет Вам отправить хотя бы то, что есть. Отправленные товары не пройдут модерацию, но они уже появятся в ЛК Озона. У них уже будут правильные артикулы (чтобы потом автоматически выгружать остатки, цены), названия, описания, категории, массо-габаритные характеристики, изображения и часть характеристик. Останется лишь дозаполнить недостающие характеристики в ЛК Озона и снова отправить товары на модерацию. Это в разы (!) меньше ручной работы, чем полностью вносить данные вручную. Кроме того, это сводит к 0 риск ошибок при внесении артикулов и имеющихся данных, что тоже немаловажно.
Кроме того, (!) начиная с версии 2.1.3 компонент позволяет добавлять отсутствующие в XML характеристики - в зависимости от категории товара (или всем товарам).

Видео

Подготовил видео с демонстрацией компонента
(обратите внимание, тут демо версии 1.0, актуальная версия гораздо более продвинутая):

Связаться со мной по рабочим вопросам, связанным с разработками, можно по e-mail: alexey@gnevyshev.ru
Также с вопросами по данной разработке можете обратиться в комментариях ниже.

Принимаю отзывы, предложения и пожелания.

История изменений версии 2.x

21.01.2021 v. 2.2.8 Багфикс ошибки из предыдущего обновления.
19.01.2021 v. 2.2.7 Для выгрузки товаров добавлена возможность выгружать только определённые офферы, с указанными offer_id (вместо всех товаров из XML файла). Добавлена возможность указать альтернативный XML файл для разовой выгрузки (вместо файла из Настроек).
12.01.2021 v. 2.2.6 Доработка обновления от 3 декабря 2020. Явно указаны типы переменных при использовании ключевого слова value в сопоставлениях характеристик.
06.01.2021 v. 2.2.5 Доработаны сопоставления характеристик. Значение для характеристики, прописанное через ключевое слово default, теперь устанавливается даже в том случае, если в XML для данного товара отсутствует тег, где нужно искать данную характеристику.
05.01.2021 v. 2.2.4 Добавлен вывод установленной версии компонента.
В админ-панели Joomla добавлена иконка для быстрого перехода к компоненту.
В настройки форсирования цен для товаров добавлены примеры ввода.
03.01.2021 v. 2.2.3 Предусмотрены случаи присутствия кавычек в названии товаров и offer_id товаров для импортируемых заказов.
27.12.2020 v. 2.2.2 Добавлена возможность указания веса и габаритных размеров по умолчанию. Если в XML файле в настроенных тегах не найдены значения для веса и/или размера, будут установлены дефолтные значения.
Описание настроек Cron задач перенесено из отдельного пункта подменю в Настройки, во вкладку "Основные".
26.12.2020 v. 2.2.1 Добавлена поддержка спеццены для покупателей с подпиской Ozon Premium.
Скорректирован алгоритм отправки данных товаров: если при анализе товаров текущего шага не найдено ни одного, подходящего для отправки, отправка не происходит, лог не формируется.
24.12.2020 v. 2.2.0 В разделе "Анализ XML" добавлена долгожданная возможность получить все варианты значений, которые встречаются в определённом теге (с указанием, сколько раз встречается каждое значение). Вкладка "Значения в тегах". Также добавлена возможность сразу же сформировать тектовый "шаблон", облегчающий прописывание сопоставлений значений характеристик.
В настройках сопоставлений характеристик добавлена возможность указывать варианты значений - каждый с новой строки. Это удобнее, когда значений много.
17.12.2020 v. 2.1.8 Исправление ошибки в одном из методов, возникавшей в случае, когда для таблиц базы данных используются префиксы, отличные от стандартных.
13.12.2020 v. 2.1.7 Для экспорта товаров добавлена поддержка штрих-кодов из XML. Для некоторых категорий штрих-код при отправке данных на Озон стал обязательным.
12.12.2020 v. 2.1.6 Фикс бага из предыдущего нововведения.
12.12.2020 v. 2.1.5 В настройках сопоставлений характеристик добавлена возможность брать значение для характеристики из нужного атрибута тега offer.
Это может быть полезно, когда надо установить, например, для характеристики «Объединить на одной карточке» и/или «Модель» значение из атрибута group_id тега offer (как принято в формате YML).
06.12.2020 v. 2.1.4 На странице «Справочники характеристик» исправлена ошибка, когда при повторном запросе (без перезагрузки страницы) из таблицы с возможными значениями не удалялись данные из предыдущего запроса.
03.12.2020 v. 2.1.3 В сопоставлениях характеристик для случая, когда в XML в одинаковых тегах - несколько разных значений (например, в тегах picture несколько изображений), добавлена возможность выбрать одно значение из нескольких с указанием его порядкового номера. Например, для характеристики Изображение (главное фото) из всех изображений можно выбрать только первое.
В сопоставлениях характеристик добавлена возможность для каждой категории добавить характеристику, отсутствующую в XML, присвоив ей определённое статичное значение. Например, для всех товаров из категории "Сувенирная продукция" добавить характеристику "Тип" со значением "Сувенирный набор" (с нужным id значения).
Также тут предусморено добавление не только одного значения, но и коллекции значений.
Исправлено считывание веса из XML, указанного дробным значением.
22.11.2020 v. 2.1.2 Добавлена возможность форсирования выгружаемых цен для товаров. Для каждого нужного товара можно установить цену для выгрузки на Озон, отличающуюся от цены в XML файле. Новая цена может быть установлена: а) конкретным значением (например, 500 р.); б) увеличением/уменьшением исходной цены на определенную сумму (например, +100 р.); в) увеличением/уменьшением исходной цены на определённый процент (например, +20%).
15.11.2020 v. 2.1.1 Добавлен импорт заказов (с товарами) в систему. В настройки для остатков добавлена опция "Уменьшать остатки для заказанных товаров"
(Уменьшать остатки (указанные в XML) для заказанных товаров, ещё не переданных в Ozon (из заказов в статусе awaiting_packaging)).
Данная опция будет полезна, если при поступлении заказов остатки в XML не уменьшаются. Особенно это актуально для тех, кто работает на основании прайсов поставщиков.
07.11.2020 v. 2.1.0 Добавлена возможность форсировать специфичные остатки для указанных товаров. Теперь форсировать остатки (выгружать нужные остатки вместо указанных в XML) можно для товаров внутри определённых категорий (и по необходимости внутри всех их подкатегорий), для перечня конкретных товаров (одинаковые остатки), для перечня конкретных товаров (специфичные остатки).
07.11.2020 v. 2.0.9 Улучшен поиск соответствий товаров между источником данных и Озоном.
06.11.2020 v. 2.0.8 Те же нововведения, что и для v. 1.8.1 (см. ниже).
03.11.2020 v. 2.0.7 Стабильная версия. Исправления к версиям 2.0.0 - 2.0.6.
22.10.2020 v. 2.0.0 Первый релиз версии 2.0. Новые подходы в алгоритмах взаимодействия (с рассчётом на очень большое число товаров в ассортименте компании). Новые возможности. Раширенные настройки.

История изменений версии 1.x

05.11.2020 v. 1.8.1 Добавлена возможность на странице получения возможных значений характеристик указать увеличенный лимит на каждый запрос к API. Это актуально для характеристик, имеющих очень много значений, например, характеристика Бренд.
Улучшен алгоритм вывода таблицы с возможными значениями характеристик. Это стало работать намного быстрее и потреблять меньше ресурсов ПК пользователя.
04.11.2020 v. 1.8.0 Для запуска через Cron исправлено чтение параметров запуска (выгружать все данные или только цены, остатки).
24.10.2020 v. 1.7.9 Добавлена дополнительная проверка Названий товаров. Преобразование html сущностей в символы. Очистка от недопустимых для названия символов.
15.10.2020 v. 1.7.8 Добавлена возможность для сопоставления характеристик указывать не просто тег (в котором надо искать значение для характеристики), а тег с определённым значением определённого атрибута. Это можно использовать для XML файлов по стандарту YML (Яндекс Маркет), где используются такие записи, как например:
<param name="Цвет">Красный</param>
Также добавлена возможность указывать несколько значений (коллекцию) для одной характеристики без использования подузлов item (что ранее было единственным вариантом). Теперь можно просто добавлять такой же тег с другим значением. Это опять же приближение к стандарту YML.
02.10.2020 v. 1.7.7 Обновлён алгоритм распознования параметров запуска скрипта выгрузки данных через cron в режиме cli. Новый алгоритм менее требователен к настройкам сервера и подходит большему числу сайтов.
27.09.2020 v. 1.7.6 Новый удобный интерфейс для получения и поиска допустимых значений характеристик и их идентификаторов!
Для сопоставлений значений характеристик и id этих значений добавлена возможность указать default значения характеристики по-умолчанию.
Усовершенствован алгоритм проверки сопоставлений значений характеристик.
С учетом фактических особенностей API Ozon поправлена отправка значений характеристик с типом, называемым Boolean.
Добавлена возможность ставить нужный лимит получения возможных значений интересующей характеристики.
26.09.2020 v. 1.7.5 В настройки компонента добавлена возможность указать подарочный товар, который будет добавляться к импортируемым в VirtueMart заказам с ценой 0.
21.09.2020 v. 1.7.4 В настройки компонента добавлена опция импорта заказов "Подставлять товарам Закупочную цену". Актуально для тех, кто учитывает цену закупа товаров.
20.09.2020 v. 1.7.3 Добавлена возможность отправлять в значениях характеристик boolean тип данных (true/false). Лимит получения возможных значений интересующей характеристики увеличен до 100'000 (актуально для брендов).
20.09.2020 v. 1.7.2 Для выгрузки, запускаемой вручную, добавлена опция "Выгружать, несмотря на статус processing". В некоторых случаях это полезно.
11.09.2020 v. 1.7.1 Добавлена возможность в настройках компонента указать нужный Статус заказа для импортируемых заказов.
10.09.2020 v. 1.7.0 При импорте заказов с Ozon в VirtueMart комиссия Озона теперь проверяется автоматически для каждого товара отдельно (для товаров из разных категорий - разная комиссия). В заказах VM товар отражается с ценой за вычетом комиссии Озона.
03.09.2020 v. 1.6.0 Добавлена возможность выгружать основные данные и характеристики не для всех товаров из XML файла, а только для таких товаров, которые не показываются на Озоне (не прошли валидацию/модерацию). При этом остатки и цены выгружаются для всех. Это может быть полезно, когда товары редактируются на Озоне вручную (например, заполнение характеристик), а в автоматическом режиме нужно только обновлять цены и остатки (не переписывая основные данные и характеристики).
01.09.2020 v. 1.5.2 Добавлена возможность раздельной выгрузки через cron данных товаров, цен и остатков. Можно выгружать не все данные, а только нужные.
11.08.2020 v. 1.5.1 Добавлены опции для выгрузки остатков (выгружать нужный остаток, если числится 0 или всегда)
01.08.2020 v. 1.5 Исправлена ошибка определения дефолтной категории в ассоциациях категорий;
Добавлен новый Вид - Статус задачи импорта;
Доработан алгоритм обновления, чтобы при обновлениях не перезаписывались файлы ассоциаций.
30.06.2020 v. 1.4 Импорт заказов с Ozon в Joomla компонент VirtueMart
16.06.2020 v. 1.1 Поддержка old_price и цен со скидками
30.05.2020 v. 1.0 Первый стабильный выпуск. Основные возможности

@todo list (планируется внедрить):

  • Дублирование заказов в Telegram чат;
  • Если для одного товара указано несколько категорий, брать первую или самую глубокую;
  • Форсирование цен: old_price и premium_price;
  • Анализ XML - теги в офферах (используется в x офферах из n);
  • Форсирование цен для всех товаров, а также на уровне категорий (с подкатегориями);
  • Защита от ситуаций, когда API Ozon по ошибке (высокая загруженность) вернуло пустой список товаров, вместо нужного;
  • Новое представление Заказы (с быстрым поиском);
  • Логи импорта заказов (все версии);
  • Логи дублировать в БД, для быстрого поиска (версия 2.x);
  • Местное время в названии файлов логов (все версии);
  • Файл по ссылке - динамически формируемый;
  • Возможность использовать несколько источников;
  • Возможность указать источники в директории на FTP;
  • Кнопка Остановить для ручных запусков (версия 2.x);
  • Возвращать кол-во в наличии при отмененных заказах (когда используется импорт заказов, все версии);
  • run.ini сохранять в другой папке (user/tmp);
  • Новый вид - Произвольный запрос;
  • Форсировать цены и остатки уже и при первой выгрузке info.

7 комментариев:

  1. Добрый день. У меня сайт на opencart, реально что-то придумать?

    ОтветитьУдалить
    Ответы
    1. Здравствуйте. Конечно, реально.
      Сегодня ко мне уже обращались касательно OpenCart. Возможно, это были как раз Вы )

      Удалить
    2. Подготовил для Вас demo доступ.

      Удалить
  2. Здравствуйте. Это можно использовать для выгрузки товаров с ценами и остатков из Битрикс?

    ОтветитьУдалить
    Ответы
    1. Да. Выше указан даже пример сайта, где это реализовано.
      Для товаров из Битрикса (или прямо из 1С) можно выгружать также и характеристики! Это есть далеко не во всех конкурентных решениях.

      Удалить
  3. Здравствуйте, а можно как-то протестировать его? Вдруг он не совместим или еще какие-то проблемы

    ОтветитьУдалить
    Ответы
    1. Здравствуйте. Да, можно. Обратитесь по указанным контактам.

      Удалить