Detecção de cartão

Detecte inserção ou remoção de cartão no Plugin SmartPOS usando SmartPOSCardDetectionRequestBuilder e callbacks em segundo plano.

Detecte inserção ou remoção de cartão no terminal SmartPOS usando uma tarefa em segundo plano.

A detecção de cartão roda em segundo plano e é interrompida quando o evento esperado acontece ou quando a requisição é cancelada explicitamente.

Quando usar

Use a detecção de cartão quando sua aplicação precisar reagir à presença ou remoção do cartão fora do fluxo transacional principal.

Você pode usar este recurso para:

  • identificar quando um cartão foi inserido;
  • orientar o operador a remover o cartão ao fim de uma transação;
  • manter a interface sincronizada com o estado físico do cartão;
  • encerrar o fluxo quando o cartão não estiver mais presente.

Pré-requisitos

Antes de iniciar a detecção de cartão:

    1. Ative o terminal em Ativação SmartPOS.

    2. Inicialize o SDK e plugue o SmartPOSPlugin em Inicialização SmartPOS.

    3. Solicite as permissões Android necessárias em tempo de execução.

    4. Prepare a interface para exibir instruções de inserção ou remoção de cartão.


Classe utilizada

Para detecção de cartão, use a classe SmartPOSCardDetectionRequestBuilder.

A requisição é criada por:

SmartPOSPlugin.createCardDetectionRequestBuilder()

Tipos de detecção

TipoQuando usar
CardDetectionTypeRequestField.CardDetectionType.INSERTEDPara detectar quando um cartão foi inserido.
CardDetectionTypeRequestField.CardDetectionType.REMOVEDPara detectar quando um cartão foi removido.

Cartão inserido

Use este fluxo para verificar quando o cartão foi inserido.

Depois que a requisição é enviada, o SDK executa uma tarefa em segundo plano consultando o momento em que o cartão é inserido.

A tarefa é interrompida de duas maneiras:

  • quando você cancela a requisição com request.cancel();
  • quando o cartão é inserido.

Exemplo

val request = SmartPOSPlugin.createCardDetectionRequestBuilder()
    .cardDetectionType(CardDetectionTypeRequestField.CardDetectionType.INSERTED)
    .callback(object: Callback<SmartPOSCardDetectionResponse>() \{
        override fun onSuccess(response: SmartPOSCardDetectionResponse) {
            if (response.cardWasDetected) {
                handleCardWasDetected()
            }
        }

        override fun onFail(error: Throwable) {
        }
    \})
    .build()

Zoop.post(request)

Cartão removido

Use este fluxo ao fim de uma transação para verificar se o cartão ainda está inserido e orientar a remoção, se necessário.

Depois que a requisição é enviada, o SDK executa uma tarefa em segundo plano consultando o momento em que o cartão é removido.

A tarefa é interrompida de duas maneiras:

  • quando você cancela a requisição com request.cancel();
  • quando o cartão é removido.

Se o cartão não estiver presente no momento da requisição de remoção, onComplete é chamado imediatamente.

Exemplo

val request = SmartPOSPlugin.createCardDetectionRequestBuilder()
    .cardDetectionType(CardDetectionTypeRequestField.CardDetectionType.REMOVED)
    .callback(object: Callback<SmartPOSCardDetectionResponse>() \{
        override fun onSuccess(response: SmartPOSCardDetectionResponse) {
            CoroutineScope(Dispatchers.Main).launch {
                if (response.cardWasDetected) {
                    handleCardStillInserted()
                }
            }
        }

        override fun onFail(error: Throwable) {
        }

        override fun onComplete() {
            handleCardIsNotInserted()
        }
    \})
    .build()

Zoop.post(request)

Cancelar a detecção

Cancele a requisição quando a tela for encerrada, o usuário cancelar o fluxo ou a aplicação não precisar mais monitorar o cartão.

request.cancel()

Cancele a detecção quando ela não for mais necessária para evitar manter uma tarefa em segundo plano ligada ao fluxo antigo da interface.


Retorno

A resposta da detecção contém o estado detectado do cartão.

data class SmartPOSCardDetectionResponse(
    val cardWasDetected: Boolean
)
CampoTipoDescrição
cardWasDetectedBooleanIndica se o cartão foi detectado durante o fluxo solicitado.

Callbacks

.callback

Controla o fluxo principal da detecção: sucesso, falha e conclusão.

MétodoQuando ocorreAção recomendada
onSuccessO estado solicitado foi detectado ou o cartão ainda está presente no fluxo de remoção.Verifique response.cardWasDetected e atualize a interface.
onFailA detecção falhou.Trate a falha e informe o operador, se necessário.
onCompleteA detecção terminou. No fluxo de remoção, pode indicar que o cartão não está inserido.Encerre loading, libere a interface ou avance o fluxo.

Checklist de detecção

Antes de enviar a requisição com Zoop.post(request), confirme:

  • O SDK foi inicializado com credenciais.
  • O SmartPOSPlugin foi plugado.
  • O tipo de detecção foi definido como INSERTED ou REMOVED.
  • A interface trata cardWasDetected.
  • A aplicação cancela a requisição quando a tela ou fluxo é encerrado.
  • O fluxo de remoção trata onComplete quando o cartão não está inserido.

Próximo passo

Depois de implementar detecção de cartão, consulte Token único por cartão para recuperar um identificador criptografado do cartão quando necessário.


Did this page help you?