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.