Post Técnico
Desenvolvendo para EMV, Parte II
Em Parte I desta publicação, falamos um pouco sobre as transações EMV e como elas são estruturadas. Vimos que:
- Ao contrário das transações MSR (magstripe), uma transação EMV ocorre em múltiplos estágios.
- A maior parte da comunicação entre o cartão com chip e o leitor acontece no nível do kernel , fora do controle da lógica da aplicação.
- Os resultados da transação são retornados em TLVs ("tags").
- Um criptograma (um dado exclusivo de 8 bytes produzido pelo cartão, utilizando uma chave privada conhecida apenas pelo cartão) é gerado antes da etapa de Conclusão da transação; e um segundo criptograma é produzido após a chamada para concluir a transação.
- O criptograma retorna do cartão na tag 9F26 (uma tag definida pelo EMVCo, não uma tag proprietária do ID TECH).
Em geral, você empacotará o primeiro criptograma (e quaisquer outros dados TLV exigidos pelo seu processador de back-end) para enviar ao processador, pela rede, em tempo real, a fim de obter um código de autorização (na tag 89), antes de emitir a chamada para iniciar a fase de Conclusão. É sua responsabilidade realizar a solicitação de autorização online (pois nem o leitor nem nosso SDK executarão essa parte por você), utilizando as APIs web do seu gateway. A maioria dos gateways disponibiliza seus próprios SDKs para facilitar essa etapa.
O gateway (ou "processador de back-end") responderá à sua solicitação de autorização com as tags 89, 8A, 91 e (opcionalmente) 71 ou 72. Para concluir a transação, você passará esses TLVs ao método emv_completeTransaction() do Universal SDK. Seu código será notificado dos resultados por meio de um callback. No callback, você obterá um identificador para os dados da transação, que incluirá um conjunto de TLVs. Entre os TLVs estará o segundo e último criptograma (mencionado acima), que — mais uma vez — estará na tag 9F26.
Tipos de Criptogramas
O criptograma retornado na tag 9F26 é opaco. Não é possível determinar, inspecionando-o diretamente, qual tipo de criptograma ele representa. No entanto, você pode inspecionar a tag 9F27 (que também é retornada junto com a 9F26) para identificar o tipo de criptograma recebido. O nibble superior da 9F27 conterá as informações necessárias. Os bits podem ser interpretados da seguinte forma (esta informação é proveniente de EMV Book 3):
De modo geral, a 9F27 terá um valor (em hexadecimal) de 80, 40 ou 00, que se traduz (respectivamente) em ARQC, TC ou AAC. Esses valores, por sua vez, significam "ir online", "aprovado" ou "recusado".
É importante compreender que esses valores representam apenas a recomendação. Essa recomendação nem sempre é vinculante. Por exemplo, o cartão é obrigado a retornar AAC no segundo criptograma (na Conclusão) se o criptograma original era ARQC, mas o aplicativo de pagamento não conseguiu ir online. O AAC, nesse caso, não significa automaticamente que sua transação foi recusada; essa decisão cabe à autoridade online (em última instância, o emissor). No cenário especial EMV conhecido como Quick Chip (ou Faster EMV), você sempre sempre receberá um AAC, pois a solicitação online ocorre posteriormente. Isso é normal! Você ainda pode submeter a transação para liquidação. A recomendação do cartão é simplesmente recomendação. A autoridade online toma a decisão final.
Observe que nos EUA (considerado um mercado exclusivamente online), você quase sempre receberá um ARQC no primeiro criptograma. Uma exceção seria se o cartão estiver vencido ou houver algum outro motivo pelo qual a transação precise ser recusada imediatamente; nesse caso, você poderia (teoricamente) ver um AAC após a primeira solicitação "Gen AC".
Obtendo Dados TLV
No Universal SDK, que cuida da comunicação com seu leitor ID TECH por meio de USB, RS-232, Bluetooth, entrada de áudio ou Ethernet (conforme o tipo de leitor), todas as comunicações relacionadas a transações de e para o leitor são assíncronas, o que significa que você precisa registrar uma ou mais rotinas de callback personalizadas no SDK para "receber retorno" do leitor. As instruções para isso estão disponíveis não apenas na documentação do SDK, mas também no código de exemplo fornecido com ele. Não há nada de misterioso no uso de callbacks. Sugerimos que você dedique algum tempo estudando o código de exemplo do SDK para entender como é o fluxo.
O importante a lembrar é que uma transação EMV ocorre em fases, e você recebe diferentes TLVs ao final de cada fase. Um equívoco comum é achar que você simplesmente receberá todas as tags de uma vez, ao final da fase de Conclusão. Isso não é verdade. Você precisará coletar os TLVs em cada fase.
Quais tags você pode esperar receber em cada fase? Veja a seguir as tags mais comuns, por fase da transação:
Início da Transação:
4F
50
57
5A
5F20
5F24
5F25
5F2D
5F34
84
9F20
DFEE12
DFEE23
Autenticar Transação:
95
9B
9F02
9F03
9F10
9F13
9F26
9F27
9F34
9F36
9F37
9F4D
9F4F
Transação Completa:
95
99
9B
9F02
9F03
9F10
9F13
9F26
9F27
9F34
9F36
9F37
9F4D
9F4F
9F5B
Quase todas essas são tags EMVCo padrão definidas pelo setor. As que começam com 'DF' são tags proprietárias da ID TECH. Para uma listagem completa das tags proprietárias da ID TECH e seus significados, consulte o documento 80000503-001, ID TECH TLV Tag Reference Guide, disponível para download em nosso Base de Conhecimento.
Não encontrou a tag de que precisa? Sem problema. Você pode usar o Universal SDK para solicitar tags adicionais no momento da transação. Os detalhes sobre como fazer isso estão descritos não apenas na documentação do SDK, mas também em nosso white paper sobre EMV Transactions with the Universal SDK.
Quais Tags São Criptografadas?
Se o seu leitor tiver sido configurado com injeção de chaves e a criptografia estiver ativada, as tags que contêm dados sensíveis terão seu conteúdo criptografado. Isso inclui, evidentemente, quaisquer tags com dados de trilha (por exemplo, a tag 57) ou dados de PAN (5A). Para a lista completa de tags criptografadas, consulte documento 80000502-001-F, ID TECH Encrypted Data Output. Se você estiver usando uma unidade de demonstração (injetada com uma chave de demonstração), poderá descriptografar os dados manualmente usando nossa ferramenta online. De modo geral, porém, você nunca precisará descriptografar os dados por conta própria no código em produção , pois você estará transmitindo os dados diretamente ao seu processador.
Criptografia é um tema amplo. Não vamos nos aprofundar nele agora, mas se você tiver curiosidade sobre o assunto, confira nossas publicações anteriores sobre o tema.
Tem dúvidas?
A esta altura, você provavelmente tem muitas perguntas. Não se preocupe! Temos uma grande variedade de recursos gratuitos disponíveis em nosso Base de Conhecimento, e se ainda tiver dúvidas, nossos técnicos estão a apenas uma ligação de distância.
