Skip to main content

Заказы

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

Описание

Данное 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. Значение полей в структуре заказа и позиций не должно содержать символы <, >. Символ & в полях extId, number, name и comment должен быть заменен на &amp;, в остальных полях его присутствие запрещено.
  2. Параметр barcode будет полезен, когда система клиента способна отправлять покупателю штрих-код, который будет использоваться кассиром при предъявлении покупателем данного штрих-кода, например, на бумажном носителе или экране телефона.
  3. Ни один из описанных параметров не является обязательным. Но для корректного отображения и управления списком заказов рекомендуем заполнять поля id, name, number.
  4. При заполении поля updated, если его значение будет меньше или равно текущего в системе Lifepay, заказ и его содержимое обновлено не будет - система воспримет данную запись как устаревшую.
  5. Поле amount может быть не заполнено, например, в случае предоплаченного заказа. Данный заказ можно будет закрыть только методом оплаты наличными.
  6. Если заказ содержит позиции (item), то значение amount будет рассчитано по сумме позиций в заказе с учетом скидки.
  7. В случае, если заказ не содержит ни одного элемента item, позиция будет автоматически сформирована с наименованием "Сводобная позиция" и стоимостью равной стоимости заказа плюс сумма скидки.
  8. Если поле name не будет задано, его значение будет сформировано автоматически по шаблону "Заказ #{n}"
  9. Поле 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.

Изменить можно только количество. Редактирование работает:

В android приложении: С включенным каталогом в ЛК. Только на планшете, только в горизонтальной ориентации интерфейса (переключается в меню, пункт "Настройки приложения").

На IOS приложении: Только в приложении LIfePay Касса (просто LifePay - не работает). Каталог можно в ЛК не включать (доступна только одна ориентация интерфейса).

  1. Ни один из описанных параметров не является обязательным. Но для корректного отображения рекомендуем заполнять поля 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));