Способы взаимодействия со смарт-терминалом

Для взаимодействия со смарт-терминалом, ваши приложения могут:

В этом разделе вы найдёте обзор всех трёх способов, с помощью которых интеграционные приложения взаимодействуют со смарт-терминалом.

События

С помощью событий смарт-терминал сообщает установленным интеграционным приложениям о различных действиях пользователя и других приложений: изменении позиций в чеке, разделении платежей, начислении скидок на чек и других.

Схема ниже показывает процесс распространения события в смарт-терминале.

Жизненный цикл события, которое распространяет смарт-терминал.

После оповещения приложения, смарт-терминал ожидает результата обработки события. Для обработки событий требуется использовать соответствующие им процессоры. Например, для обработки события начисления скидки на чек, используйте процессор 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>

Смарт-терминал распространяет следующие события:

Команды

Ваше приложение может отдавать смарт-терминалу команды, например, открыть чек или напечатать Z-отчёт. После обработки команды устройство возвращает соответствующий результат.

Команды вызываются в коде операции или службы, например, так:

//Команда открытия чека продажи и вызов метода process.
new OpenSellReceiptCommand(positionAddList, extra).process(context, callback);

Ваше приложение может отдавать смарт-терминалу следующие команды:

Широковещательные сообщения

Смарт-терминал автоматически рассылает широковещательные сообщения при возникновении различных событий: открытии чека продажи, сканировании штрихкода, открытии карточки товара и других.

В отличие от событий смарт-терминал не ожидает обработки широковещательных сообщений.

Чтобы ваше приложение реагировало на такие события, подпишите его на получение соответствующих сообщений. Для этого используйте приёмники широковещательных сообщений (BroadcastReceiver).

О том, как подписывать приёмники на сообщения читайте в разделе “Использование приёмников широковещательных сообщений”.

В integration-library все широковещательные сообщения поделены на группы. Для каждой из групп есть свой приёмник, который содержит методы обработки соответствующих сообщений. Всего таких приёмников восемь:

См. также