PIN Pad
Abertura do PIN pad
O uso desta funcionalidade deve ser feito apenas em casos realmente necessários.
É possível abrir o PIN pad a qualquer momento oportuno.
É por meio da função ScopeProvider.openPinpad() que uma solicitação de abertura do PIN pad ocorre.
ScopeProvider.openPinpad()
A função de abertura é uma função suspend, enquanto as outras funções de interação com o PIN pad são funções comuns.
Sua execução dura aproximadamente 10 segundos.
suspend fun ScopeProvider.openPinpad(context: Context): ScopeReturnCodes
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
context | Context | Contexto para execução da função. |
Retorno
Um dos seguintes ScopeReturnCodes.
| Código | Mensagem | OperationStatus |
|---|---|---|
-100 | PIN pad não conectado | OperationStatus.FAILED |
-1 | Não é possível abrir o pinpad enquanto uma transação está em execução | OperationStatus.FAILED |
-2 | Não é possível abrir o pinpad enquanto uma operação de fechamento está em execução | OperationStatus.FAILED |
-3 | Não é possível abrir o pinpad enquanto uma operação de abertura já está em execução | OperationStatus.FAILED |
-4 | Não é possível abrir o pinpad enquanto uma operação de exibição está em execução | OperationStatus.FAILED |
0 | Sucesso na operação. | OperationStatus.SUCCESS |
14 | PIN pad já estava aberto. | OperationStatus.SUCCESS |
outros | Erro desconhecido | OperationStatus.FAILED |
Fechamento do PIN pad
O uso desta funcionalidade deve ser feito apenas em casos realmente necessários.
É possível fechar o PIN pad a qualquer momento oportuno.
É por meio da função ScopeProvider.closePinpad() que uma solicitação de fechamento do PIN pad ocorre.
ScopeProvider.closePinpad()
fun ScopeProvider.closePinpad(): ScopeReturnCodes
Retorno
Um dos seguintes ScopeReturnCodes.
| Código | Mensagem | OperationStatus |
|---|---|---|
-1 | Não é possível fechar o pinpad enquanto uma transação está em execução | OperationStatus.FAILED |
-2 | Não é possível fechar o pinpad enquanto uma operação de fechamento já está em execução | OperationStatus.FAILED |
-3 | Não é possível fechar o pinpad enquanto uma operação de abertura está em execução | OperationStatus.FAILED |
-4 | Não é possível fechar o pinpad enquanto uma operação de exibição está em execução | OperationStatus.FAILED |
0 | Sucesso na operação. | OperationStatus.SUCCESS |
211 | PIN pad não foi aberto pela aplicação. | OperationStatus.FAILED |
outros | Erro desconhecido | OperationStatus.FAILED |
Exibição de mensagem
É possível exibir uma mensagem personalizada no PIN pad.
Para isto é necessário que o PIN pad esteja aberto, estado no qual ele se encontra após toda transação (pagamento ou estorno) finalizada com aprovação, ou após chamar a função ScopeProvider.openPinpad().
É por meio da função ScopeProvider.displayOnPinpadScreen() que uma solicitação de exibição de texto ocorre.
ScopeProvider.displayOnPinpadScreen()
fun ScopeProvider.displayOnPinpadScreen(context: Context, message: String): ScopeReturnCodes
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
context | Context | Contexto para execução da função. |
message | String | Mensagem de até 32 caracteres, sendo 16 caracteres por linha, que será exibida no visor do PIN pad. |
Retorno
Um dos seguintes ScopeReturnCodes.
| Código | Mensagem | OperationStatus |
|---|---|---|
-1 | Não é possível exibir uma mensagem no pinpad enquanto uma transação está em execução | OperationStatus.FAILED |
-2 | Não é possível exibir uma mensagem no pinpad enquanto uma operação de fechamento está em execução | OperationStatus.FAILED |
-3 | Não é possível exibir uma mensagem no pinpad enquanto uma operação de abertura está em execução | OperationStatus.FAILED |
-4 | Não é possível exibir uma mensagem no pinpad enquanto uma operação de exibição já está em execução | OperationStatus.FAILED |
0 | Sucesso na operação. | OperationStatus.SUCCESS |
209 | PIN pad não configurado. | OperationStatus.FAILED |
210 | Display do PIN pad não permitido neste momento ou situação. | OperationStatus.SUCCESS |
211 | PIN pad não foi aberto pela aplicação. | OperationStatus.FAILED |
outros | Erro desconhecido | OperationStatus.FAILED |
Exemplo de uso
class MainActivity : AppCompatActivity() {
private val scopeProvider = ScopeProvider(/* Configurações */)
override fun onCreate() {
//...
binding.btnDisplayMessageOnPinpad.setOnClickListener {
lifecycleScope.launch {
val resultCode = scopeProvider.displayOnPinpadScreen(this@MainActivity, " UPDATE SCREEN ")
Log.d("MainActivity", resultCode.toString())
Toast.makeText(
this@MainActivity,
"'displayOnPinpadScreen()' retornou $resultCode",
Toast.LENGTH_LONG
).show()
}
}
}
}
ScopeReturnCodes
data class ScopeReturnCodes(
val code: Int,
val message: String,
val operationStatus: OperationStatus
)
| Campo | Tipo | Descrição |
|---|---|---|
code | Int | Código de retorno. |
message | String | Mensagem descrevendo o resultado da operação. |
operationStatus | OperationStatus | Enumeração indicando sucesso ou falha da operação. |