Чтобы закрыть смену банковского терминала:
В манифесте укажите разрешение на закрытие cмены банковского терминала:
<uses-permission android:name="ru.evotor.permission.PRINT_Z_REPORT" />
Создайте команду закрытия смены и вызовите метод .process
:
// id банковского терминала, можно получить через PaymentSystemApi
// можно не передавать или передать null, тогда будет использован пинпад, выбранный по умолчанию
val paymentSystemAccountId: Int? = null
// uuid пользователя, можно получить через UserApi
// можно не передавать или передать null, тогда будет использован текущий авторизованный пользователь на терминале
val userUuid: String? = null
CloseBankSessionCommand(paymentSystemAccountId, userUuid).process(context, callback)
Обработка результата. В параметры метода .process
передайте следующий callback
:
val callback = IntegrationManagerCallback { future ->
if (future.result?.type == IntegrationManagerFuture.Result.Type.OK) {
// Смена банковского терминала успешно закрыта
val result = CloseBankSessionCommandResult.create(future.result.data)
// В ответ присылается массив строк отчёта, который был отдан банковским терминалом в ответ на закрытие смены
val slipLines = result?.slipLines
} else if (future.result?.type == IntegrationManagerFuture.Result.Type.ERROR) {
when (future.result.error.code) {
CloseBankSessionCommandResult.ERROR_CODE_KKM_IS_BUSY -> {
// ККМ в данный момент выполняет другую операцию
}
CloseBankSessionCommandResult.ERROR_CODE_NO_AUTHENTICATED_USER -> {
// Нет авторизованного пользователя на терминале
// Ошибку возможно получить только если в параметры команды не был передан userUuid
}
CloseBankSessionCommandResult.ERROR_CODE_NO_PERMISSION -> {
// У приложения нет необходимого разрешения (permission)
// Добавьте в манифест строчку <uses-permission android:name="ru.evotor.permission.CLOSE_BANK_SESSION" />
}
CloseBankSessionCommandResult.ERROR_CODE_CLOSE_PINPAD_SESSION_ERROR -> {
// Ошибка закрытия смены банковского терминала
}
CloseBankSessionCommandResult.ERROR_CODE_USER_NOT_FOUND -> {
// Пользователь не найден на терминале
// В параметры команды передан несуществующий userUuid
}
CloseBankSessionCommandResult.ERROR_CODE_PINPAD_NOT_FOUND -> {
// Платежная система по умолчанию или с заданным accountId не найдена
}
}
}
}
Печать отчёта.
Если вам требуется распечатать отчёт, полученный при закрытии смены банковского терминала, то воспользуйтесь возможностью работы с принтером.