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.



**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**.