Operações com o PIN pad
As operações com PIN Pad são suportadas apenas na versão destinado à PIN pads, ou seja, o aplicativo que será utilizado em tablets, celulares, totens de autoatendimento, etc. Além disto, outro requisito é que o terminal configurado utilize o TEF Scope como solução de pagamentos.
Para realizar uma operação com o PIN pad é necessário enviar um Broadcast com a action com.getcard.hub.PINPAD_COMMAND e o comando desejado no extra command.
Dados da requisição
Nome do extra | Tipo | Descrição |
|---|---|---|
| COMMAND_EXTRA | String | "OPEN_PINPAD" para abrir o PIN pad ou "CLOSE_PINPAD" para fechar o PIN pad |
| COMMAND_ID_EXTRA | String | ID que pode ser informado para vincular a resposta com a requisição |
O resultado da operação é enviado nos extras de um Broadcast com a action com.getcard.hub.PINPAD_RESULT.
Dados do resultado
Nome do extra | Tipo | Descrição |
|---|---|---|
| SUCCESS_EXTRA | Boolean | Indica se houve (true) ou não (false) sucesso na operação |
| ERROR_EXTRA | String | Se ocorreu uma falha, conterá uma mensagem que descreve o seu motivo |
| COMMAND_ID_EXTRA | String | ID informado na requisição para vinculação da resposta |
Exemplo de implementação
Enviando um comando
PinPadCommandExample.kt
fun sendPinpadCommand(context: Context) {
val commandId = UUID.randomUUID()
val intent = Intent("com.getcard.hub.PINPAD_COMMAND")
intent.setClassName(
"com.getcard.hub.getcardpayapp", // Com o app de homologação utilize "com.getcard.hub.getcardpayapp.homolog"
"com.getcard.hub.getcardpayapp.service.PinpadCommandReceiver"
)
intent.putExtra("COMMAND_EXTRA", "OPEN_PINPAD") // Para fechar o PIN Pad troque por "CLOSE_PINPAD"
intent.putExtra("COMMAND_ID_EXTRA", commandId.toString()) // Para fechar o PIN Pad troque por "CLOSE_PINPAD"
sendBroadcast(intent)
}
Obtendo o resultado de um comando
PinPadCommandExample.kt
val resultReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
if (intent == null || intent.action != "com.getcard.hub.PINPAD_RESULT") {
Log.d("EXEMPLO", "Intent inválida recebida no BroadcastReceiver: $intent")
return
}
val success = intent.getBooleanExtra("SUCCESS_EXTRA", false)
val error = intent.getStringExtra("ERROR_EXTRA")
val commandId = intent.getStringExtra("COMMAND_ID_EXTRA")
Log.d(
"EXEMPLO",
"Resultado do comando PinPad recebido. Command ID: $commandId, Sucesso: $success, Erro: $error"
)
}
}