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
| Tipo | Quando usar |
|---|---|
CardDetectionTypeRequestField.CardDetectionType.INSERTED | Para detectar quando um cartão foi inserido. |
CardDetectionTypeRequestField.CardDetectionType.REMOVED | Para 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
)| Campo | Tipo | Descrição |
|---|---|---|
cardWasDetected | Boolean | Indica se o cartão foi detectado durante o fluxo solicitado. |
Callbacks
.callback
.callbackControla o fluxo principal da detecção: sucesso, falha e conclusão.
| Método | Quando ocorre | Ação recomendada |
|---|---|---|
onSuccess | O estado solicitado foi detectado ou o cartão ainda está presente no fluxo de remoção. | Verifique response.cardWasDetected e atualize a interface. |
onFail | A detecção falhou. | Trate a falha e informe o operador, se necessário. |
onComplete | A 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
SmartPOSPluginfoi plugado. - O tipo de detecção foi definido como
INSERTEDouREMOVED. - A interface trata
cardWasDetected. - A aplicação cancela a requisição quando a tela ou fluxo é encerrado.
- O fluxo de remoção trata
onCompletequando 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.
Updated 9 days ago
