Каталог

Импорт каталога

Описание

Lifepay позволяет импортировать древовидную структуру каталога и товары из сторонней системы.

!!! Импорт перезатирает существующие записи каталога и товаров. Если есть связь товаров со складскими позициями, то при импорте связь будет потеряна.

Тип запроса:

POST

Формат данных:

Данные в теле запроса предварительно сериализуются в json-формат

Адрес URL:

https://api.life-pay.ru/v1/catalogue/import

Описание полей

Параметр Тип Описание Обязательный
apikey Строка АПИ-ключ компании в системе Lifepay. Узнать свой АПИ-ключ можно в личном кабинете Lifepay Да
login Строка Логин администратора в системе Lifepay. Как правило, это номер телефона в формате 7xxxxxxxxxx Да
data Строка Содержимое XML-файла для импорта Да
trade_point_uuid Строка UUID торговой точки. Значение указано в личном кабинете Lifepay в разделе торговых точек. Если у компании создана хотя бы одна торговая точка, то параметр является обязательным Нет
force Целое Принимает значения 0 (по умолчанию), либо 1 - перезатереть каталог/товары, если уже существуют. Нет

Пример содержимого поля data для ритейла:

<catalogue>
    <category>
        <id>1</id>
        <name>Продукты</name>
        <color>#F27649</color>
        <image_url>https://pixabay.com/static/uploads/photo/2016/06/30/20/31/fruits-1489802_960_720.jpg</image_url>
        <updated>2016-09-06 11:00:09</updated>
        <sort_index>1</sort_index>
        <type>0</type>
        <category>
            <id>2</id>
            <name>Овощи</name>
            <color>#9F4E7E</color>
            <image_url>https://pixabay.com/static/uploads/photo/2014/04/09/15/25/fruits-320136_960_720.jpg</image_url>
            <updated>2016-09-06 11:00:09</updated>
            <sort_index>1</sort_index>
            <type>0</type>
            <product>
                <id>1</id>
                <name>Картофель</name>
                <price>39.00</price>
                <prime_cost>12.00</prime_cost>
                <image_url>https://pixabay.com/static/uploads/photo/2014/09/16/18/28/potatoes-448613_960_720.jpg</image_url>
                <vat>0.18</vat>
                <unit>kg</unit>
                <updated>2016-09-06 11:00:09</updated>
                <sort_index>1</sort_index>
                <barcode>4602112203605</barcode>
            </product>
            <product>
                <id>2</id>
                <name>Кукуруза</name>
                <price>50.65</price>
                <prime_cost>13.00</prime_cost>
                <image_url>https://pixabay.com/static/uploads/photo/2013/10/02/22/34/corn-190014_960_720.jpg</image_url>
                <vat>0.18</vat>
                <unit>piece</unit>
                <updated>2016-09-06 11:00:09</updated>
                <sort_index>2</sort_index>
                <barcode></barcode>
            </product>
        </category>
    </category>
</catalogue>

Пример содержимого поля data для хореки:

<catalogue>
    <category>
        <id>3</id>
        <name>Кофе</name>
        <color></color>
        <image_url></image_url>
        <updated>2016-09-06 11:00:09</updated>
        <sort_index>2</sort_index>
        <type>0</type>
        <product>
            <id>3</id>
            <name>Капучино</name>
            <image_url>https://pixabay.com/static/uploads/photo/2015/10/12/14/54/coffee-983955_960_720.jpg</image_url>
            <updated>2016-09-06 11:00:09</updated>
            <sort_index>1</sort_index>
            <type>0</type>
            <barcode>1234567890</barcode>
            <ingredient>
                <category_id>4</category_id>
            </ingredient>
            <ingredient>
                <category_id>5</category_id>
            </ingredient>
            <product>
                <id>4</id>
                <name>Капучино стандартный</name>
                <price>150.00</price>
                <prime_cost></prime_cost>
                <vat></vat>
                <unit>piece</unit>
                <updated>2016-09-06 11:00:09</updated>
                <sort_index>1</sort_index>
                <barcode>1234567891</barcode>
            </product>
            <product>
                <id>5</id>
                <name>Капучино большой</name>
                <price>180.00</price>
                <prime_cost></prime_cost>
                <image_url></image_url>
                <vat></vat>
                <unit>piece</unit>
                <updated>2016-09-06 11:00:09</updated>
                <sort_index>2</sort_index>
                <barcode>1234567892</barcode>
            </product>
        </product>
    </category>
    <category>
        <id>4</id>
        <name>Сиропы</name>
        <color></color>
        <image_url></image_url>
        <updated>2016-09-06 11:00:09</updated>
        <sort_index>3</sort_index>
        <type>1</type>
        <product>
            <id>6</id>
            <name>Ваниль</name>
            <price>20.00</price>
            <prime_cost></prime_cost>
            <image_url></image_url>
            <vat></vat>
            <unit>piece</unit>
            <updated>2016-09-06 11:00:09</updated>
            <sort_index>1</sort_index>
            <barcode></barcode>
        </product>
        <product>
            <id>7</id>
            <name>Малина</name>
            <price>20.00</price>
            <prime_cost></prime_cost>
            <image_url></image_url>
            <vat></vat>
            <unit>piece</unit>
            <updated>2016-09-06 11:00:09</updated>
            <sort_index>2</sort_index>
            <barcode></barcode>
        </product>
    </category>
    <category>
        <id>5</id>
        <name>Пряности</name>
        <color></color>
        <image_url></image_url>
        <updated>2016-09-06 11:00:09</updated>
        <sort_index>4</sort_index>
        <type>1</type>
        <product>
            <id>8</id>
            <name>Корица</name>
            <price>10.00</price>
            <prime_cost></prime_cost>
            <image_url></image_url>
            <vat></vat>
            <unit>piece</unit>
            <updated>2016-09-06 11:00:09</updated>
            <sort_index>1</sort_index>
            <barcode></barcode>
        </product>
        <product>
            <id>9</id>
            <name>Имбирь</name>
            <price>10.00</price>
            <prime_cost></prime_cost>
            <image_url></image_url>
            <vat></vat>
            <unit>piece</unit>
            <updated>2016-09-06 11:00:09</updated>
            <sort_index>2</sort_index>
            <barcode></barcode>
        </product>
    </category>
</catalogue>

Описание полей xml-файла

Параметр Описание
id Строковый идентификатор категории/товара в системе клиента. Значение этого параметра будет передано в поле ext_id в сервисе уведомления о транзакции. В рамках категорий и товаров значение этого параметра должно быть уникально (как в примерах xml).
name Наименование категории/товара.
color Цвет отображения категории/товара в hex. Пример: #F27649.
image_url Изображение категории/товара в виде внешней ссылки.
updated Дата и время последнего изменения категории/товара в системе клиента в формате YYYY-MM-DD HH:mm:ss. Пример: 2016-09-06 11:00:09
sort_index Индекс сортировки категории/товара. В такой последовательности будут отображаться категории и товары одного уровня в Личном Кабинете и приложении Lifepay.
type Тип категории. 0 - обычная категория (по умолчанию), 1 - категория для ингредиентов.
price Стоимость товара при продаже, округленная до двух знаков после запятой. Разделитель - точка.
prime_cost Себестоимость товара, округленная до двух знаков после запятой. Разделитель - точка.
vat Налог на позицию. Может быть не задан, либо принимать значения 0, 0.1, 0.18 что соответствует налогу 0%, 10%, 18% соответственно. Нужен при фискализации.
unit Единицы измерения. Доступные значения: piece - штуки (по умолчанию), kg - килограммы, g - граммы’, l - литры, ml - миллилитры.
barcode Штрих-код товара для продажи через сканер штрих-кода.

Замечание

  1. Значение полей в структуре каталога и позиций не должно содержать символы <, >. Символ & в поле name должен быть заменен на &amp;, в остальных полях его присутствие запрещено.
  2. В хореке может понадобиться задать ингредиенты для товара (в примере кофе может продаваться с сиропами и пряностями). Для этого необходимо создать категории с type = 1 и наполнить их товарами (ингредиентами). После этого для нужного товара прописать id категории ингредиентов как показано в примере:
<ingredient>
    <category_id>4</category_id>
</ingredient>
<ingredient>
    <category_id>5</category_id>
</ingredient>
  1. Для задания модификации товара необходимо в структуре продукта добавить модификации этого продукта. Например, если хотим продать рубашку размера L, XL, XXL, достаточно описать структуру следующим образом:
<catalogue>
    <product>
        <id>3</id>
        <name>Рубашка в клетку</name>
        <product>
            <id>4</id>
            <name>L</name>
            <price>150.00</price>
            <barcode>1234567891</barcode>
        </product>
        <product>
            <id>5</id>
            <name>XL</name>
            <price>160.00</price>
            <barcode>1234567892</barcode>
        </product>
        <product>
            <id>5</id>
            <name>XXL</name>
            <price>160.00</price>
            <barcode>1234567893</barcode>
        </product>
    </product>
</catalogue>

Пример успешного ответа:

формат json
Object
(
    [code] => 0
    [message] =>
    [data] => Object
        (
        )

)

Пример запроса на языке php:

$file = './catalogue.xml';

$data = [];
$data['apikey'] = '{your_apikey}';
$data['login'] = '{your_login}';
$data['data'] = file_get_contents($file);

$request = json_encode($data);

$url = "https://api.life-pay.ru/v1/catalogue/import";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_POSTFIELDS, $request);

$result = curl_exec($curl);
curl_close($curl);

$resultJson = @json_decode($result);

printf("Res: %s\n", print_r($resultJson ? : $result, true));

Список возможных ошибок:

  • 6050 - Неверная структура данных
  • 6051 - Не указан строковый идентификатор категории/товара в системе клиента
  • 6052 - Не указано наименование категории/товара
  • 6053 - Необходимо указать торговую точку
  • 6054 - Каталог/товары уже существуют (для перезаписи необходимо указать параметр force)
  • 6055 - Ошибка сохранения каталога
  • 6056 - Ошибка сохранения товара
  • 6058 - Торговая точка не найдена