Заказы
Импорт заказов
Описание
Данное 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 |
E-mail покупателя. На данный адрес будет отправлен чек в электронном виде. | |
comment | Комментарий к заказу. |
barcode | Штрих-код заказа. В случае сканирования штрих-кода в приложении Lifepay, заказ будет автоматически выбран. |
operator_login | Логин оператора для которого отображать заказ в приложении. Если не задан, заказ будет виден для всех операторов. |
updated | Дата и время последнего изменения заказа в системе клиента в ISO 8601. Пример: 2016-09-12T15:19:21+00:00 . |
item | Содержимое позиции в заказе. |
Замечание
- Значение полей в структуре заказа и позиций не должно содержать символы
<
,>
. Символ&
в поляхextId
,number
,name
иcomment
должен быть заменен на&
, в остальных полях его присутствие запрещено. - Параметр barcode будет полезен, когда система клиента способна отправлять покупателю штрих-код, который будет использоваться кассиром при предъявлении покупателем данного штрих-кода, например, на бумажном носителе или экране телефона.
- Ни один из описанных параметров не является обязательным. Но для корректного отображения и управления списком заказов рекомендуем заполнять поля
id
,name
,number
. - При заполении поля
updated
, если его значение будет меньше или равно текущего в системе Lifepay, заказ и его содержимое обновлено не будет - система воспримет данную запись как устаревшую. - Поле
amount
может быть не заполнено, например, в случае предоплаченного заказа. Данный заказ можно будет закрыть только методом оплаты наличными. - Если заказ содержит позиции (
item
), то значениеamount
будет рассчитано по сумме позиций в заказе с учетом скидки. - В случае, если заказ не содержит ни одного элемента item, позиция будет автоматически сформирована с наименованием “Сводобная позиция” и стоимостью равной стоимости заказа плюс сумма скидки.
- Если поле
name
не будет задано, его значение будет сформировано автоматически по шаблону “Заказ #{n}” - Поле
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% соответственно. Нужен при фискализации. |
Замечание
- Если значение
type
равноuneditable
, в приложении Lifepay данную позицию нельзя отредактировать. В ином случае, оператор имеет возможность изменить содержимое заказа по данной позиции на сумму, кратную значениюprice
.
Изменить можно только количество. Редактирование работает:
В android приложении: С включенным каталогом в ЛК. Только на планшете, только в горизонтальной ориентации интерфейса (переключается в меню, пункт “Настройки приложения”).
На IOS приложении: Только в приложении LIfePay Касса (просто LifePay - не работает). Каталог можно в ЛК не включать (доступна только одна ориентация интерфейса).
- Ни один из описанных параметров не является обязательным. Но для корректного отображения рекомендуем заполнять поля
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));