Заказы

Импорт заказов

Описание

Данное API позволяет импортировать заказы из системы клиента в систему Lifepay.

Тип запроса:

POST

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

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

Адрес URL:

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

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

Параметр Тип Описание Обязательный
apikey Строка АПИ-ключ компании в системе Lifepay. Узнать свой АПИ-ключ можно в личном кабинете Lifepay Да
login Строка Логин в системе Lifepay. Как правило, это номер телефона в формате 7xxxxxxxxxx Да
data Строка Содержимое XML-файла для импорта Да

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

<orders>
    <order>
        <id>1</id>
        <status>open</status>
        <number>ORD_13442</number>
        <name>Заказ 13442</name>
        <discount_percent>13</discount_percent>
        <phone>75555555555</phone>
        <email>mail@mail.ru</email>
        <comment>Клиент просил звонить после 19:00. Ленинская Слобода 19.</comment>
        <barcode>9847198237</barcode>
        <operator_login>75555555555</operator_login>
        <updated>2016-09-12T15:19:21+00:00</updated>

        <item>
            <id>1</id>
            <name>Роллы Филадельфия</name>
            <price>400.00</price>
            <quantity>5</quantity>
            <unit>piece</unit>
            <vat>.18</vat>
        </item>
        <item>
            <id>2</id>
            <name>Роллы Калифорния</name>
            <price>350.00</price>
            <quantity>6</quantity>
            <unit>piece</unit>
            <vat>.18</vat>
        </item>
        <item>
            <id>3</id>
            <name>Суп Сливочный С Лососем</name>
            <price>500.00</price>
            <quantity>2</quantity>
            <unit>piece</unit>
            <vat>.18</vat>
        </item>
        <item>
            <id></id>
            <name>Доставка</name>
            <price>250.00</price>
            <type>uneditable</type>
        </item>
    </order>

    <order>
        <id>2</id>
        <status>open</status>
        <number>ORD_13443</number>
        <name>Заказ 13443</name>
        <amount>2000.00</amount>
        <discount_amount>100.00</discount_amount>
        <phone>75555555555</phone>
        <email>mail@mail.ru</email>
        <comment></comment>
        <barcode>9847198238</barcode>
    </order>
</orders>

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

Параметр Описание
id Строковый идентификатор заказа в системе клиента. Значение этого параметра будет передано в поле ext_id в элементе order в сервисе уведомления о транзакции. В рамках заказов значение этого параметра должно быть уникально (как в примерах xml).
status Статус заказа. Может принимать значения: open, cancelled, paid. Для отображения в приложении Lifepay статус заказа должен быть open. После оплаты он автоматически принимает значение paid. По умолчанию - open.
number Номер заказа.
name Наименование заказа.
amount Сумма заказа за вычетом скидки, округленная до двух знаков после запятой. Разделитель - точка.
discount_amount Сумма скидки, округленная до двух знаков после запятой. Разделитель - точка.
discount_percent Процент скидки. Целое значение. Возможные значения: от 0 до 100.
phone Номер телефона покупателя. Для отправки смс с чеком должен быть в формате 7xxxxxxxxxx
email E-mail покупателя. На данный адрес будет отправлен чек в электронном виде.
comment Комментарий к заказу.
barcode Штрих-код заказа. В случае сканирования штрих-кода в приложении Lifepay, заказ будет автоматически выбран.
operator_login Логин оператора для которого отображать заказ в приложении. Если не задан, заказ будет виден для всех операторов.
updated Дата и время последнего изменения заказа в системе клиента в ISO 8601. Пример: 2016-09-12T15:19:21+00:00.
item Содержимое позиции в заказе.

Замечание

  1. Параметр barcode будет полезен, когда система клиента способна отправлять покупателю штрих-код, который будет использоваться кассиром при предъявлении покупателем данного штрих-кода, например, на бумажном носителе или экране телефона.
  2. Ни один из описанных параметров не является обязательным. Но для корректного отображения и управления списком заказов рекомендуем заполнять поля id, name, number.
  3. При заполении поля updated, если его значение будет меньше или равно текущего в системе Lifepay, заказ и его содержимое обновлено не будет - система воспримет данную запись как устаревшую.
  4. Поле amount может быть не заполнено, например, в случае предоплаченного заказа. Данный заказ можно будет закрыть только методом оплаты наличными.
  5. Если заказ содержит позиции (item), то значение amount будет рассчитано по сумме позиций в заказе с учетом скидки.
  6. В случае, если заказ не содержит ни одного элемента item, позиция будет автоматически сформирована с наименованием “Сводобная позиция” и стоимостью равной стоимости заказа плюс сумма скидки.
  7. Если поле name не будет задано, его значение будет сформировано автоматически по шаблону “Заказ #{n}”
  8. Поле discount_percent имеет больший приоритет чем discount_amount. Поэтому, если значение discount_percent не равно нулю, скидка на заказ будет рассчитана в процентном соотношении.

Описание элемента item

Параметр Описание
id Строковый идентификатор позиции в заказе. Значение этого параметра должно быть равно id товара при импорте категории для корректной обработки.
name Наименование позиции.
price Цена за единицу, округленная до двух знаков после запятой. Разделитель - точка.
quantity Количество товаров в позиции. В случае с весовыми товарами данное значение может быть дробным (до четырех знаков после запятой, разделитель - точка).
unit Единицы измерения. Доступные значения: piece - штуки (по умолчанию), kg - килограммы, g - граммы, l - литры, ml - миллилитры.
type Тип позиции. Может принимать значения “пусто” (по умолчанию), uneditable - нередактируемся позиция.
vat Налог на позицию. Может быть не задан, либо принимать значения 0, 0.1, 0.18 что соответствует налогу 0%, 10%, 18% соответственно. Нужен при фискализации.

Замечание

  1. Если значение type равно uneditable, в приложении Lifepay данную позицию нельзя отредактировать. В ином случае, оператор имеет возможность изменить содержимое заказа по данной позиции на сумму, кратную значению price.
  2. Ни один из описанных параметров не является обязательным. Но для корректного отображения рекомендуем заполнять поля id, name. Если поле name не будет задано, значение будет сформировано автоматически по шаблону “Свободная позиция #{n}”

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

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

)

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

$path = './orders.xml';

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

$request = json_encode($data);

$url = "https://api.life-pay.ru/v1/orders/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));