Сессии
Сессия — это объект в LIFE POS API, отвечающий за движения денег и товаров между вам и и покупателем. Это любое ваше взаимодействие с покупателем, в рамках которого передаются деньги или позиции номенклатуры.
Сессии делятся на прямые и обратные. Оплата заказа, отгрузка товара или предоставление услуги — это прямые сессии, а возврат — обратная.
Например, у Василия интернет-магазин одежды. Покупатель заказал джинсы, пришёл в пункт выдачи, оплатил покупку и забрал её. Возникает прямая сессия — Василий получил от покупателя оплату и отгрузил ему товар. В терминах способов расчёта это полный расчёт.
Если бы покупатель оплачивал джинсы картой на сайте, а получал их у курьера, то прямых сессий возникло бы две: в рамках первой Василий получил бы от покупателя аванс, а в рамках второй отгрузил бы ему товар.
API LIFE POS пока не поддерживает работу со всеми признаками расчёта. Можно оформить только полный расчёт, т. е. получить оплату и отгрузить товар в рамках одной сессии.
Теперь представим, что покупатель примерил джинсы и они ему не подошли. Покупатель отдаёт их обратно курьеру, а Василий возвращает деньги на карту покупателю. Возникает обратная сессия: товар вернулся Василию, а деньги — покупателю. Сессия возврата должна быть привязана к исходной сессии продажи, чтобы было понятно, какая именно позиция и какие именно деньги возвращаются.
Бывает так, что в момент оплаты чек пробить не удалось. Тогда в момент создания чека коррекции возникает прямая сессия коррекции. Если же вы корректируете возврат, это обратная сессия коррекции. Как и обратная сессия, сессия коррекции должна быть привязана к той сессии, которую она корректирует.
Рассмотрим структуру объекта Сессия в API LIFE POS — она одинакова и для прямых сессий, и для обратных, и для сессий коррекции; содержит следующие данные:
sale
— объект Продажа, содержащийguid
продажи и тип объектаtype_of
.actions
— массив объектов Действия, который описывает, что именно произошло в рамках сессии.fiscal_documents
— массив объектов Фискальные документы. Когда по сессии появится чек, сюда можно добавить guid чека и тип объекта type_of.
В массиве actions
передаются следующие данные:
money_action
— объект Операция с деньгами и позициями. Содержит следующие поля:purposes
— массив объектов Предметы расчёта.payment_parts
— массив объектов Части платежа.
non_purpose_money_action
— объект Операция с деньгами. Пока не используется, поскольку признаки способа расчёта не поддержаны и подразумевается, что при получении каждой оплаты вы передаёте покупателю товар.shipping_action
— объект Операция с позициями. Содержит массив объектовpurposes
, каждый из которых должен содержать (знаком*
отмечены обязательные поля):quantity *
— количество позиций;marking_attributes
— данные о маркировке;position
— объект Позиция, содержащийguid
позиции и тип объектаtype_of
.
В объекте money_action.purposes
передаются следующие данные (знаком *
отмечены обязательные поля):
amount *
— объект Стоимость товара. Содержит поля:value
— сумма;currency *
— валюта. Возможные значения:RUB
,GBP
,USD
,EUR
,Unknown
.position
— объект Позиция, содержащийguid
позиции и тип объектаtype_of
.
Объект money_action.payment_parts
содержит данные о частях платежа. Частей платежа может быть сколько угодно, а конкретное содержимое каждой части зависит от способа, которым покупатель оплачивает заказ.
Сервис оплаты частями «Подели» (BnplPaymentPart):
podeli_details
– объект, содержащий обязательное полеorder_id
— идентификатор заказа.
Оплата картой (CardPaymentPart):
transactions
— массив ссылок на транзакции; каждая ссылка содержит поляguid
иtype_of
.
Наличные (CashPaymentPart) — специальных полей нет.
Незарегистрированный перевод (CashlessPaymentPart) — специальных полей нет. Этот способ оплаты используется, если покупатель расплатился с вами переводом без использования платёжного ш люза LIFE POS. Например, отправил деньги по СБП.
Платёжная ссылка (LinkPaymentPart):
external_id
— внешний идентификатор.ttl
— время жизни ссылки в минутах, от 5 до 2880.payment_url
— адрес ссылки.expired_at
– дата и время истечения срока жизни ссылки.transactions
— массив ссылок на транзакции; каждая ссылка содержит поляguid
иtype_of
.
Система быстрых платежей (QuickPaymantPaymentPart)
transactions
— массив ссылок на транзакции; каждая ссылка содержит поляguid
иtype_of
.
Поля объекта money_action.purposes
, общие для всех способов оплаты:
amount *
— объект Стоимость товара. Содержит поля:value
— сумма;currency *
— валюта. Возможные значения:RUB
,GBP
,USD
,EUR
,Unknown
.position
— объект Позиция, содержащийguid
позиции и тип объектаtype_of
.
status *
– статус платежа. Возможные значения:Draft
,Accepted
,Refunded
.guid
– идентификатор.
С помощью такой модели можно реализовать комбинированную опла ту (например, часть картой, часть наличными), частичную предоплату с последующей доплатой, частичный возврат и т. д.
Вот и всё, что вам нужно знать о сессиях. В следующей статье поговорим о том, как использовать эту модель для получения оплаты.