Импорт цен и остатков через CommerceML

По протоколу CommerceML можно обновлять только остатки и цены у созданных ранее товаров. Сами товары импорт создавать не может, их надо заводить вручную на сайте.

Идентификация товаров при импорте происходит по артикулу. Убедитесь в отсутствии дублей, артикулы должны быть уникальны и не повторяться в рамках одной покупки.

Чтобы корректно обновить количество товаров по размерам, ваш файл с предложениями должен включать характеристику товара "Размер". Иначе количество записывается в размер по-умолчанию

Общее описание протокола CommarceML и схема данных.

Для начала работы, зайдите в вашу покупку, откройте раздел "Импорт" и перейдите во вкладку "Импорт CommerceML".

Заполните данные:

  • Идентификатор каталога из вашей системы. При импорте переданный идентификатор каталога будет использован для определения покупки, в которую необходимо загрузить данные. Один каталог должен соответствовать одной покупке.
  • Идентификаторы типов цен также нужно взять из вашей системы. При импорте идентификатор цены будет сопоставлен с типами цен 100sp, чтобы цена продажи стала ценой товара, а закупочная цена - рекомендуемой ценой.


Формат запроса и ответа

Обмен работает по ссылке https://www.100sp.ru/api/commerceml, принимаются POST запросы:

ПараметрТипВозможные значения
typestringcatalog - стандартный тип обмена
sale - аналогично catalog
Тип обмена "reference" не поддерживается
modestringcheckauth - авторизация
init - запрос настроек импорта
file - загрузка файла
import - запуск импорта и проверка прогресса
sessidstringИдентификатор текущей сессии импорта.
Для всех mode кроме checkauth.
filenamestringИмя загружаемого файла. Только для mode=file.

Ответ от API приходит в текстовом формате. Параметры разделены переносом строки. В первой строке передается статус запроса: success | progress | failure - Успех/неудача запроса. Второй строкой - текст ошибки, если статус failure. Далее через перенос строки параметры ответа.


Авторизация

Для начала нужно пройти авторизацию (mode=checkauth)

По стандарту CommerceML авторизация происходит методом Basic Auth. Для авторизации используйте ваш email и токен доступа (инструкция по созданию токена - Вводная информация про API) в качестве пароля.

В случае успешной авторизации будет получен ответ вида:

success
commerceml_cookie
79c2f6c45bc82b01bb1235b1428367df
sessid=836222e1711732b45d25d1dbf316df76

Далее для работы с API необходимо передавать запрос с кукой commerceml_cookie с указанным на 3 строке значением и параметр sessid также с указанным значением.

Если ваша учетная система поддерживает кастомизацию, вы также можете использовать ваш токен авторизации (см. также Вводная информация про API). Токен передается в заголовке x-api-token в каждом запросе, в таком случае параметр sessid можно не передавать и пропустить этап авторизации.


Загрузка файлов

Для начала загрузки файлов нужно получить настройки импорта (mode=init).

Пример ответа API:

zip=no
file_limit=20971520

Лимит 20мб на файл, передача архивом не поддерживается.

Далее можно загружать файлы (mode=file), указывая параметр filename. Содержимое файла передается в теле POST запроса. Файл должен иметь разрешение xml и содержать валидный xml код. Обычно передаются файлы catalog.xml, в котором содержится список товаров, и файлы rests.xml, prices.xml, offers.xml и тд., содержащие цены и остатки. В текущей реализации файл catalog.xml должен быть обязательно передан, т.к. по нему происходит идентификация товаров в системе 100sp. Файлы можно передавать в любом порядке.


Старт импорта

Запускается запросом mode=import. В ответе будет сообщение progress, если импорт запущен, success, если импорт успешно завершен, или failure с текстом ошибки. Нет необходимости делать несколько запросов import для каждого файла в отдельности, импорт будет запущен по всем файлам, переданным в текущей сессии. Статус импорта можно проверять повторным запросом, пока не будет получен ответ success/failure.

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