Post Técnico
Desenvolvendo para EMV, Parte II
Em Parte I desta publicação, falamos um pouco sobre transações EMV e como elas são estruturadas. Vimos que:
- Ao contrário das transações MSR (tarja magnética), uma transação EMV ocorre em múltiplas etapas.
- 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 próprio 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 é retornado pelo cartão na tag 9F26 (uma tag definida pela EMVCo, não uma tag proprietária da ID TECH).
Em geral, você empacota o primeiro criptograma (e quaisquer outros dados TLV exigidos pelo seu processador de back-end) para enviá-los ao processador, pela rede, em tempo real, a fim de obter um código de autorização (na tag 89), antes de iniciar a fase de Conclusão. É sua responsabilidade executar a solicitação de autorização online (uma vez que nem o leitor nem o nosso SDK realizarão essa etapa por você), utilizando as APIs web do seu gateway. A maioria dos gateways disponibiliza seus próprios SDKs para facilitar essa parte.
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ê receberá um identificador para os dados da transação, que incluirá um conjunto de TLVs. Entre esses TLVs estará o segundo e último criptograma (mencionado anteriormente), que — novamente — estará na tag 9F26.
Tipos de Criptogramas
O criptograma retornado na tag 9F26 é opaco. Não é possível determinar, por inspeção direta, qual é o tipo de criptograma. No entanto, é possível 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á a informação necessária. Os bits podem ser interpretados da seguinte forma (essa informação é proveniente do EMV Book 3):
Em geral, a 9F27 terá um valor (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çãodo cartão. Nem sempre essa recomendação é vinculante. Por exemplo, o cartão pode obrigatório 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, neste 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 de EMV conhecido como Quick Chip (ou Faster EMV), você irá sempre receber um AAC, pois a solicitação online ocorre posteriormente. Tudo bem! Você ainda pode submeter a transação para liquidação. O conselho 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 estivesse vencido ou houvesse outro motivo pelo qual a transação precise ser recusada imediatamente, caso em que 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 aplicável ao 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 com o SDK para "receber respostas" do leitor. As instruções para isso são fornecidas não apenas na documentação do SDK, mas também no código de exemplo que acompanha o SDK. 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 que poderia querer de uma vez, ao final da fase de Conclusão. Isso não é verdade. Você descobrirá que precisa coletar 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:
Iniciar 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 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 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 injetado com chaves e a criptografia estiver ativada, as tags que contêm dados sensíveis terão seu conteúdo criptografado. Isso obviamente inclui quaisquer tags que contenham dados de trilha (por exemplo, a tag 57) ou dados de PAN (5A). Para a lista completa de tags criptografadas, consulte o 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 de produção , pois você estará transmitindo os dados diretamente ao seu processador.
Criptografia é um tema amplo. Não vamos aprofundá-lo agora, mas se você tiver curiosidade sobre o assunto, confira nossas publicações anteriores sobre este tema.
Tem Dúvidas?
A esta altura, você provavelmente já 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.
