API de compatibilidade mPOS
Caso você deseje validar se a maquininha selecionada para realizar uma transação é um terminal Zoop você pode utilizar o método assíncrono
void checkTerminalCompatibility (JSONObject joZoopTerminal, ZoopTerminalKeyValidatorListener listener)
disponível na classe TerminalListManager.
A seguir, descrevemos os 2 parâmetros do método checkTerminalCompatibility:
-
"joZoopTerminal" - dados da maquininha no formato JSONObject com a qual se abrirá comunicação para validar se é um terminal Zoop
-
"listener" - interface ZoopTerminalKeyValidatorListener que receberá o resultado do processo de validação da maquininha através de 2 callbacks que deverão ser implementados. São eles:
-
void compatibilityResult (TypeTerminalKeyEnum var1, JSONObject var2)
-
void compatibilityError (TypeTerminalKeyErrorEnum var1, String var2)
Detalharemos cada um dos callbacks em sequência.
Interface ZoopTerminalKeyValidatorListener
compatibilityResult
Este callback é acionado quando o SDK conseguiu chegar a um diagnóstico em relação a validação do terminal. Ele possui 2 parâmetros. O primeiro é um "enum", retornado pelo SDK avisando o tipo de compatibilidade da maquininha em questão. Esse parâmetro pode assumir os seguintes valores:
-
TypeTerminalKeyEnum.KEY_COMPATIBLE - O terminal é compatível. Pode transacionar com as bandeiras suportadas pela Zoop
-
TypeTerminalKeyEnum.KEY_PARTIALLY_COMPATIBLE - O terminal é parcialmente compatível.
Tem chave não Zoop. Portanto, não podemos garantir que suporta todas as bandeiras do tipo acima -
TypeTerminalKeyEnum.KEY_INCOMPATIBLE - O terminal é incompatível
-
TypeTerminalKeyEnum.UNKNOWN - O terminal não é conhecido
O segundo parâmetro é um JSONObject contendo as bandeiras suportadas pela maquininha.
{
"cards": [
"American Express":,
"Aura",
"Diners Club",
"Discover",
"Elo",
"Hipercard",
"JCB",
"Maestro",
"MasterCard",
"Visa",
"Visa Electron",
"Alelo"
]
}
compatibilityError
Este callback é acionado quando o SDK não conseguiu chegar a um diagnóstico em relação a validação do terminal. Seu único parâmetro é um enum retornado pelo SDK avisando o tipo de erro encontrado ao tentar descobrir a compatibilidade da maquininha em questão. Esse parâmetro pode assumir os seguintes valores:
-
TypeTerminalKeyErrorEnum.TERMINAL_NOT_AVAILABLE - O terminal não está ativo ou está bloqueado
-
TypeTerminalKeyErrorEnum.CONNECTION_BLUETOOTH_ERROR - O dispositivo móvel não conseguiu se conectar ao terminal
-
TypeTerminalKeyErrorEnum.PROCESS_VALIDATOR_CANCELLED - O processo foi cancelado corretamente
-
TypeTerminalKeyErrorEnum.ERROR_UNEXPECTED - Ocorreu um erro inesperado
Persistência de dados
Uma vez que o procedimento nos informa se o terminal é ou não compatível, esta informação será salva localmente no dispositivo. Tal informação será utilizada em futuras consultas evitando assim uma nova conexão com o terminal e otimizando o tempo de execução.
Interrompendo o processo
Também disponibilizamos o método void interruptCurrentThreadThatCheckTerminalCompatibility() para realizar a interrupção de um processo de validação. É importante evitar realizar vários processo de validação simultâneos, já que cada conexão com terminal deve ser fechada corretamente. Por isso recomenda-se antes de iniciar um novo processo, realizar o cancelamento do processo em andamento através do método citado acima, e esperar o até o final do ciclo, i.e., ao receber a notificação TypeTerminalKeyErrorEnum.PROCESS_VALIDATOR_CANCELLED.
Updated 6 months ago