Parser ISO 8583

Analizar mensajes de transacciones ISO 8583

1
info
Los PAN (números de tarjeta) se enmascaran automáticamente por seguridad (primeros 6 + últimos 4 dígitos visibles).
Entendiendo Mensajes de transacciones con tarjeta ISO 8583
TL;DR

ISO 8583 es el estandar internacional para mensajes de transacciones con tarjeta, utilizado cada vez que acercas, deslizas o insertas una tarjeta de pago en un terminal.

Que es ISO 8583?

ISO 8583 es el estandar internacional que define el formato de mensaje para transacciones electronicas con tarjetas de pago. Cada vez que acercas tu tarjeta sin contacto, insertas un chip, deslizas una banda magnetica o realizas una compra en linea, los datos de la transaccion se codifican en un mensaje ISO 8583 que viaja desde el terminal de punto de venta a traves del adquirente, la red de tarjetas (Visa, Mastercard, etc.) y finalmente al emisor de la tarjeta para su autorizacion.

Publicado por primera vez en 1987, ISO 8583 ha pasado por tres versiones: 1987, 1993 y 2003. La version de 1987 sigue siendo la mas ampliamente implementada a nivel global, aunque muchas redes han adoptado elementos de las revisiones posteriores. El estandar es deliberadamente flexible — cada red de tarjetas (Visa, Mastercard, American Express, UnionPay) define su propia especificacion de implementacion construida sobre el marco ISO 8583.

El formato esta disenado para comunicacion de alta velocidad y bajo ancho de banda. A diferencia de XML o JSON, ISO 8583 utiliza un formato hibrido compacto de binario/texto que puede analizarse en microsegundos — un requisito critico cuando se procesan decenas de miles de transacciones por segundo.

Estructura del mensaje

Cada mensaje ISO 8583 consta de tres componentes: el Identificador de Tipo de Mensaje (MTI), uno o dos bitmaps, y los elementos de datos en si.

ISO 8583 Message Structure A diagram showing the three components of an ISO 8583 message: the 4-digit Message Type Identifier at the top, followed by the 64-bit bitmap grid showing which data elements are present, and then the variable-length data elements at the bottom. MTI — Message Type Identifier (4 digits) 0 1 0 0 Version=0 (1987) | Class=1 (Authorization) | Function=0 (Request) | Origin=0 (Acquirer) Primary Bitmap (64 bits — indicates which DEs are present) 1 2 3 4 5 6 7 ... 11 ... 37 41 43 ... 64 Shaded bits = Data Element present in this message Data Elements (variable length fields) DE2: PAN 4761 34** **** 0014 DE3: Proc Code 000000 DE4: Amount 000000002500 DE11: STAN 051234 DE37: RRN 000000000123 DE38: Auth Code A12345 DE41: Term ID 12345678 DE43: Merchant ACME GROCERY Each DE has a defined format: n (numeric), an (alphanumeric), ans (alpha+special), b (binary)

Identificador de Tipo de Mensaje (MTI)

El MTI de 4 digitos codifica cuatro datos:

DigitoSignificadoValores
1roVersion ISO0 = 1987, 1 = 1993, 2 = 2003
2doClase de mensaje1 = Autorizacion, 2 = Financiero, 4 = Reverso, 8 = Gestion de red
3roFuncion0 = Solicitud, 1 = Respuesta, 2 = Aviso, 3 = Respuesta de aviso
4toOrigen0 = Adquirente, 1 = Repeticion adquirente, 2 = Emisor, 3 = Repeticion emisor

Elementos de datos clave

DENombreFormatoDescripcion
DE2Numero de cuenta primarion..19El numero de tarjeta (PAN) — debe enmascararse en logs
DE3Codigo de procesamienton6Tipo de transaccion: 00=compra, 01=avance de efectivo, 20=reembolso
DE4Monto de la transaccionn12Monto en unidades menores (centavos) — justificado a la derecha, rellenado con ceros
DE11Numero de auditoria de rastreo del sisteman6Identificador unico de transaccion asignado por el adquirente
DE37Numero de referencia de recuperacionan12Clave para busqueda y conciliacion de transacciones
DE38ID de respuesta de autorizacionan6Codigo de aprobacion devuelto por el emisor
DE39Codigo de respuestaan200=Aprobado, 05=No honrar, 51=Fondos insuficientes
DE41ID de terminal del aceptanteans8Identificador unico del terminal POS
DE43Nombre/ubicacion del aceptanteans40Nombre del comercio, ciudad, estado y pais

Ciclo de vida de una transaccion

Un pago tipico con tarjeta involucra al menos dos mensajes ISO 8583:

  1. Solicitud de autorizacion (0100): El terminal envia una solicitud a traves del adquirente hacia la red de tarjetas y luego al emisor
  2. Respuesta de autorizacion (0110): El emisor devuelve una aprobacion (DE39 = “00”) o un rechazo con un codigo de respuesta
  3. Aviso financiero (0220): Despues de que el tarjetahabiente completa la transaccion, un mensaje financiero confirma el monto final
  4. Reverso (0420): Si la transaccion necesita anularse, un mensaje de reverso deshace la autorizacion

Para una compra en linea, el mismo flujo aplica — la pasarela de pagos de la plataforma de comercio electronico genera los mensajes ISO 8583 en nombre del adquirente.

Casos de uso comunes

  • Pagos en punto de venta: Cada transaccion con chip, sin contacto y banda magnetica en un terminal fisico
  • Retiros de cajero automatico: La dispensacion de efectivo utiliza mensajes 0200 (financieros) con codigo de procesamiento 01
  • Transacciones de comercio electronico: Pagos con tarjeta en linea, incluyendo flujos de autenticacion 3D Secure
  • Pagos recurrentes: Facturacion de suscripciones donde el comercio inicia transacciones sin la presencia del tarjetahabiente
  • Reembolsos y reversos: Los mensajes 0400 (reverso) y 0200 con codigo de procesamiento 20 (reembolso) manejan las devoluciones
  • Consultas de saldo: El codigo de procesamiento 31 consulta el saldo disponible sin debitar la cuenta

Prueba estos ejemplos

Solicitud de autorizacion 0100 valida Válido

Una solicitud de autorizacion ISO 8583:1987 (MTI 0100) en formato clave-valor con DE2 (PAN), DE3 (codigo de procesamiento 000000 = compra), DE4 (monto $25.00), DE7 (fecha/hora de transmision), DE11 (STAN 051234), DE12/13 (hora/fecha local), DE22 (modo de ingreso POS), DE37 (referencia de recuperacion), DE41 (ID de terminal), DE43 (nombre/ubicacion del comercio) y DE49 (codigo de moneda 840 = USD).

DE0=0100 DE2=4761340000000014 DE3=000000 DE4=000000002500 DE7=0315121530 DE11=051234 DE12=121530 DE13=0315 DE22=051 DE25=00 DE37=000000000123 DE41=12345678 DE42=000000000000001 DE43=ACME GROCERY STORE NEW YORK NY US DE49=840
Mensaje invalido (MTI desconocido 9999) Inválido

MTI 9999 no es un identificador de tipo de mensaje ISO 8583 valido. El primer digito debe ser 0 o 1 (version), el segundo indica la clase de mensaje (1=autorizacion, 2=financiero, 4=reverso), el tercero es la funcion (0=solicitud, 1=respuesta, 2=aviso) y el cuarto es el origen (0=adquirente).

DE0=9999 DE2=4761340000000014 DE3=000000 DE4=000000001000