Pular para o conteúdo principal
Versão: 1.8.2

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 extraTipoDescrição
COMMAND_EXTRAString"OPEN_PINPAD" para abrir o PIN pad ou "CLOSE_PINPAD" para fechar o PIN pad
COMMAND_ID_EXTRAStringID 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 extraTipoDescrição
SUCCESS_EXTRABooleanIndica se houve (true) ou não (false) sucesso na operação
ERROR_EXTRAStringSe ocorreu uma falha, conterá uma mensagem que descreve o seu motivo
COMMAND_ID_EXTRAStringID 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"
)
}
}