По протоколу CommerceML можно обновлять только остатки и цены у созданных ранее товаров. Сами товары импорт создавать не может, их надо заводить вручную на сайте.
Идентификация товаров при импорте происходит по артикулу. Убедитесь в отсутствии дублей, артикулы должны быть уникальны и не повторяться в рамках одной покупки.
Чтобы корректно обновить количество товаров по размерам, ваш файл с предложениями должен включать характеристику товара "Размер". Иначе количество записывается в размер по-умолчанию
Общее описание протокола CommarceML и схема данных.
Для начала работы, зайдите в вашу покупку, откройте раздел "Импорт" и перейдите во вкладку "Импорт CommerceML".
Заполните данные:
- Идентификатор каталога из вашей системы. При импорте переданный идентификатор каталога будет использован для определения покупки, в которую необходимо загрузить данные. Один каталог должен соответствовать одной покупке.
- Идентификаторы типов цен также нужно взять из вашей системы. При импорте идентификатор цены будет сопоставлен с типами цен 100sp, чтобы цена продажи стала ценой товара, а закупочная цена - рекомендуемой ценой.
Формат запроса и ответа
Обмен работает по ссылке https://www.100sp.ru/api/commerceml, принимаются POST запросы:
Параметр | Тип | Возможные значения |
type | string | catalog - стандартный тип обмена sale - аналогично catalog Тип обмена "reference" не поддерживается |
mode | string | checkauth - авторизация init - запрос настроек импорта file - загрузка файла import - запуск импорта и проверка прогресса |
sessid | string | Идентификатор текущей сессии импорта. Для всех mode кроме checkauth. |
filename | string | Имя загружаемого файла. Только для 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.