Закрытие смены банковского терминала

Чтобы закрыть смену банковского терминала:

  1. В манифесте укажите разрешение на закрытие cмены банковского терминала:

    <uses-permission android:name="ru.evotor.permission.PRINT_Z_REPORT" />
    
  2. Создайте команду закрытия смены и вызовите метод .process:

     // id банковского терминала, можно получить через PaymentSystemApi
     // можно не передавать или передать null, тогда будет использован пинпад, выбранный по умолчанию
     val paymentSystemAccountId: Int? = null
     // uuid пользователя, можно получить через UserApi
     // можно не передавать или передать null, тогда будет использован текущий авторизованный пользователь на терминале
     val userUuid: String? = null
     CloseBankSessionCommand(paymentSystemAccountId, userUuid).process(context, callback)
    
  3. Обработка результата. В параметры метода .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 не найдена
                        }
                    }
                }
            }
    
    
  4. Печать отчёта.

Если вам требуется распечатать отчёт, полученный при закрытии смены банковского терминала, то воспользуйтесь возможностью работы с принтером.

См. также