Для взаимодействия со смарт-терминалом, ваши приложения могут:
В этом разделе вы найдёте обзор всех трёх способов, с помощью которых интеграционные приложения взаимодействуют со смарт-терминалом.
С помощью событий смарт-терминал сообщает установленным интеграционным приложениям о различных действиях пользователя и других приложений: изменении позиций в чеке, разделении платежей, начислении скидок на чек и других.
Схема ниже показывает процесс распространения события в смарт-терминале.
После оповещения приложения, смарт-терминал ожидает результата обработки события. Для обработки событий требуется использовать соответствующие им процессоры. Например, для обработки события начисления скидки на чек, используйте процессор ReceiptDiscountEventProcessor
.
Для получения события, в элементе <action>
intent-фильтра соответствующей интеграционной службы вашего приложения требуется указать значение выбранной константы события.
Например, служба, которая обрабатывает событие начисления скидки на чек продажи, в манифесте приложения будет выглядеть так:
<service
android:name=".MyDiscountService"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="evo.v2.receipt.sell.receiptDiscount"/>
</intent-filter>
</service>
Смарт-терминал распространяет следующие события:
Изменение чека: BeforePositionsEditedEvent
. О том как обрабатывать событие, читайте в разделе “Работа с позициями чека”.
ReturnPositionsForBarcodeRequestedEvent
. О том как обрабатывать событие, читайте в разделе “Обработка события сканирования штрихкода”.PaymentSelectedEvent
. О том как обрабатывать событие, читайте в разделе “Разделение чека”.ReceiptDiscountEvent
. О том как обрабатывать событие, читайте в разделе “Начисление скидок”.PrintGroupRequiredEvent
. О том как обрабатывать событие, читайте в разделе “Разделение чека”.PositionsMergeEvent
.PaymentDelegatorEvent
. О том как обрабатывать событие, читайте в разделе “Комбинированная оплата”.PrintExtraRequiredEvent
. О том как обрабатывать событие, читайте в разделе “Печать внутри кассового чека”.Оплата различных чеков сторонними платёжными системами (в intent-фильтре указывайте значение константы родительского события PaymentSystemEvent
):
PaymentSystemSellEvent
.PaymentSystemSellCancelEvent
.PaymentSystemPaybackEvent
.PaymentSystemPaybackCancelEvent
.О том как обрабатывать события, читайте в разделе “Использование различных способов оплаты”.
Ваше приложение может отдавать смарт-терминалу команды, например, открыть чек или напечатать Z-отчёт. После обработки команды устройство возвращает соответствующий результат.
<uses-permission />
необходимо указать соответствующее разрешение.Команды вызываются в коде операции или службы, например, так:
//Команда открытия чека продажи и вызов метода process.
new OpenSellReceiptCommand(positionAddList, extra).process(context, callback);
Ваше приложение может отдавать смарт-терминалу следующие команды:
Открыть чек:
OpenSellReceiptCommand
OpenPaybackReceiptCommand
OpenBuyReceiptCommand
OpenBuybackReceiptCommand
Напечатать чек:
PrintSellReceiptCommand
PrintPaybackReceiptCommand
PrintBuyReceiptCommand
PrintBuybackReceiptCommand
Снять и напечатать Z-отчёт: PrintZReportCommand
. Подробнее о снятии и печати Z-отчёта читайте в разделе “Печать Z-отчёта.”
Смарт-терминал автоматически рассылает широковещательные сообщения при возникновении различных событий: открытии чека продажи, сканировании штрихкода, открытии карточки товара и других.
В отличие от событий смарт-терминал не ожидает обработки широковещательных сообщений.
Чтобы ваше приложение реагировало на такие события, подпишите его на получение соответствующих сообщений. Для этого используйте приёмники широковещательных сообщений (BroadcastReceiver
).
О том, как подписывать приёмники на сообщения читайте в разделе “Использование приёмников широковещательных сообщений”.
В integration-library
все широковещательные сообщения поделены на группы. Для каждой из групп есть свой приёмник, который содержит методы обработки соответствующих сообщений. Всего таких приёмников восемь:
ScannerBroadcastReceiver – приёмник событий, связанных со сканером штрихкодов.
Подробнее о работе со сканером штрихкодов читайте в разделе “Работа со сканером штрихкодов”.