Publicación técnica
Desarrollo para EMV, Parte II
En Parte I de esta entrada, hablamos brevemente de las transacciones EMV y de cómo están estructuradas. Vimos que:
- A diferencia de las transacciones MSR (banda magnética), una transacción EMV se desarrolla en varias fases.
- La mayor parte del intercambio entre la tarjeta con chip y el lector se produce a nivel de kernel , fuera del control de la lógica de la aplicación.
- Los resultados de la transacción se devuelven en TLV («tags»).
- Un criptograma (un dato único de 8 bytes generado por la tarjeta, mediante una clave privada que solo la tarjeta conoce) se genera antes de la fase de finalización (Completion) de la transacción; y se produce un segundo criptograma después de la llamada para completar la transacción.
- El criptograma regresa de la tarjeta en el tag 9F26 (un tag definido por EMVCo, no un tag propietario de ID TECH).
Por lo general, empaquetarás el primer criptograma (y cualquier otro dato TLV que tu procesador back-end requiera) para enviarlo al procesador, por la red, en tiempo real, con el fin de obtener un código de autorización (en el tag 89), antes de invocar la llamada para iniciar la fase de Completion. Es tu responsabilidad llevar a cabo la solicitud de autorización online (puesto que ni el lector ni nuestro SDK lo harán por ti), utilizando las APIs web de tu pasarela. La mayoría de las pasarelas disponen de sus propios SDKs para facilitar esta parte.
La pasarela (o «procesador back-end») responderá a tu solicitud de autorización con los tags 89, 8A, 91 y (opcionalmente) 71 o 72. Para completar la transacción, deberás pasar estos TLV al método emv_completeTransaction() del Universal SDK. Tu código será notificado de los resultados a través de un callback. En el callback obtendrás un handle a los datos de la transacción, que incluirá un conjunto de TLVs. Entre ellos estará el segundo y último criptograma (mencionado anteriormente), que —una vez más— vendrá en el tag 9F26.
Tipos de criptogramas
El criptograma devuelto en el tag 9F26 es opaco. No puedes saber, inspeccionándolo directamente, de qué tipo de criptograma se trata. Sin embargo, puedes inspeccionar el tag 9F27 (que también se devuelve junto con 9F26) para identificar el tipo de criptograma recibido. El nibble superior de 9F27 contendrá la información que necesitas. Los bits se interpretan de la siguiente manera (esta información procede del EMV Book 3):
En términos generales, 9F27 tendrá un valor (hex) de 80, 40 o 00, que se traduce (respectivamente) en ARQC, TC o AAC. Estos, a su vez, significan «ir online», «aprobado» o «rechazado».
Es importante entender que estos valores representan únicamente la recomendaciónde la tarjeta. No siempre esta recomendación es vinculante. Por ejemplo, la tarjeta está obligada a devolver AAC en el segundo criptograma (en la fase de Completion) si el criptograma original fue ARQC y la aplicación de pago no pudo conectarse online. En este caso, el AAC no significa automáticamente que tu transacción haya sido rechazada; esa decisión recae en la autoridad online (en última instancia, el emisor). En el escenario EMV especial conocido como Quick Chip (o Faster EMV), siempre recibirás un AAC, porque la solicitud online tiene lugar más tarde. ¡No pasa nada! Aun así puedes presentar la transacción para liquidación. La recomendación de la tarjeta es simplemente eso recomendación. La autoridad online toma la decisión final.
Ten en cuenta que en EE. UU. (que se considera un mercado exclusivamente online), casi siempre obtendrás un ARQC en el primer criptograma. Una excepción sería que la tarjeta esté caducada o exista alguna otra razón para rechazar la transacción de forma inmediata, en cuyo caso (teóricamente) podrías ver un AAC tras la primera solicitud «Gen AC».
Obtención de datos TLV
En el Universal SDK, que se encarga por ti de la comunicación con tu lector ID TECH a través de USB, RS-232, Bluetooth, conector de audio o Ethernet (según corresponda al tipo de lector), todas las comunicaciones relacionadas con la transacción hacia y desde el lector son asíncronas, lo que significa que debes registrar una o más rutinas de callback personalizadas en el SDK para «recibir respuesta» del lector. Las instrucciones para hacerlo se proporcionan tanto en la documentación del SDK como en el código de ejemplo que se incluye con el SDK. No hay nada misterioso en el uso de callbacks. Te recomendamos dedicar algo de tiempo a estudiar el código de ejemplo del SDK para ver cómo es el flujo.
Lo importante es recordar que una transacción EMV se desarrolla en fases, y que obtienes distintos TLV al final de cada fase. Una idea errónea habitual es pensar que recibirás de golpe todos los tags que puedas necesitar al final de la fase de Completion. No es así. Verás que necesitas recopilar TLV en cada fase.
¿Qué tags puedes esperar obtener en cada fase? Estos son los tags más habituales, por fase de la transacción:
Inicio de la transacción:
4F
50
57
5A
5F20
5F24
5F25
5F2D
5F34
84
9F20
DFEE12
DFEE23
Autenticar transacción:
95
9B
9F02
9F03
9F10
9F13
9F26
9F27
9F34
9F36
9F37
9F4D
9F4F
Completar transacción:
95
99
9B
9F02
9F03
9F10
9F13
9F26
9F27
9F34
9F36
9F37
9F4D
9F4F
9F5B
Casi todos son tags estándar definidos por EMVCo en el sector. Los que comienzan por «DF» son tags propietarios de ID TECH. Para consultar el listado completo de tags propietarios de ID TECH y su significado, consulta el documento 80000503-001, ID Guía de referencia de etiquetas TLV de TECH, disponible para descarga en nuestro Base de Conocimiento.
¿No encuentras el tag que necesitas? No hay problema. Puedes usar el Universal SDK para solicitar tags adicionales en el momento de la transacción. Los detalles para hacerlo se describen no solo en la documentación del SDK, sino también en nuestro libro blanco sobre Transacciones EMV con el Universal SDK.
¿Qué tags están cifrados?
Si tu lector ha recibido inyección de claves con el cifrado activado, los tags que contengan datos sensibles tendrán su contenido cifrado. Esto incluye, evidentemente, cualquier tag con datos de pista (por ejemplo, el tag 57) o datos de PAN (5A). Para consultar la lista completa de tags cifrados, consulta el documento 80000502-001-F, Salida de datos cifrados de ID TECH. Si estás utilizando una unidad de demostración (inyectada con una clave de demo), puedes descifrar los datos manualmente con nuestra herramienta en línea. En términos generales, no obstante, nunca deberías tener que descifrar los datos por tu cuenta en código de producción , ya que los enviarás directamente a tu procesador.
El cifrado es un tema extenso. No vamos a profundizar más ahora mismo, pero, si te interesa, no dejes de consultar nuestro publicaciones anteriores al respecto.
¿Tiene preguntas?
A estas alturas, probablemente tenga muchas preguntas. ¡No se preocupe! Ponemos a su disposición numerosos recursos gratuitos en nuestro Base de Conocimiento, y si aún le quedan dudas, nuestros técnicos están a solo una llamada de distancia.
