Parser ISO 8583

Parser les messages de transactions carte ISO 8583

1
info
Les valeurs PAN (numéro de carte) sont automatiquement masquées pour la sécurité (6 premiers + 4 derniers chiffres affichés).
Comprendre Messages de transaction par carte ISO 8583
TL;DR

ISO 8583 est la norme internationale pour les messages de transaction par carte, utilisee chaque fois que vous approchez, glissez ou inserez une carte de paiement dans un terminal.

Qu’est-ce que l’ISO 8583 ?

ISO 8583 est la norme internationale qui definit le format de message pour les transactions electroniques par carte de paiement. Chaque fois que vous approchez votre carte sans contact, inserez une puce, glissez une bande magnetique ou effectuez un achat en ligne, les donnees de transaction sont encodees dans un message ISO 8583 qui transite du terminal de point de vente vers l’acquereur, le reseau de carte (Visa, Mastercard, etc.) et finalement vers l’emetteur de la carte pour autorisation.

Publiee pour la premiere fois en 1987, l’ISO 8583 a connu trois versions : 1987, 1993 et 2003. La version 1987 reste la plus largement deployee dans le monde, bien que de nombreux reseaux aient adopte des elements des revisions ulterieures. La norme est volontairement flexible — chaque reseau de carte (Visa, Mastercard, American Express, UnionPay) definit sa propre specification d’implementation construite au-dessus du cadre ISO 8583.

Le format est concu pour la communication a haut debit et faible bande passante. Contrairement au XML ou au JSON, l’ISO 8583 utilise un format hybride binaire/texte compact qui peut etre analyse en microsecondes — une exigence critique lors du traitement de dizaines de milliers de transactions par seconde.

Structure du message

Chaque message ISO 8583 se compose de trois elements : l’identifiant de type de message (MTI), un ou deux bitmaps, et les elements de donnees eux-memes.

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)

Identifiant de type de message (MTI)

Le MTI a 4 chiffres encode quatre informations :

ChiffreSignificationValeurs
1erVersion ISO0 = 1987, 1 = 1993, 2 = 2003
2eClasse de message1 = Autorisation, 2 = Financier, 4 = Annulation, 8 = Gestion reseau
3eFonction0 = Demande, 1 = Reponse, 2 = Avis, 3 = Reponse d’avis
4eOrigine0 = Acquereur, 1 = Repetition acquereur, 2 = Emetteur, 3 = Repetition emetteur

Elements de donnees cles

DENomFormatDescription
DE2Numero de compte principaln..19Le numero de carte (PAN) — doit etre masque dans les logs
DE3Code de traitementn6Type de transaction : 00=achat, 01=avance de caisse, 20=remboursement
DE4Montant de la transactionn12Montant en unites mineures (centimes) — justifie a droite, complete par des zeros
DE11Numero d’audit de trace systemen6Identifiant de transaction unique attribue par l’acquereur
DE37Numero de reference de recuperationan12Cle pour la recherche et le rapprochement de transaction
DE38Code d’autorisation en reponsean6Code d’approbation retourne par l’emetteur
DE39Code de reponsean200=Approuve, 05=Ne pas honorer, 51=Fonds insuffisants
DE41Identifiant terminal du commercantans8Identifiant unique du terminal de point de vente
DE43Nom/adresse du commercantans40Nom du commercant, ville, etat et pays

Cycle de vie d’une transaction

Un paiement par carte typique implique au moins deux messages ISO 8583 :

  1. Demande d’autorisation (0100) : le terminal envoie une demande via l’acquereur au reseau de carte, puis a l’emetteur
  2. Reponse d’autorisation (0110) : l’emetteur retourne une approbation (DE39 = “00”) ou un refus avec un code de reponse
  3. Avis financier (0220) : une fois la transaction terminee par le porteur de carte, un message financier confirme le montant final
  4. Annulation (0420) : si la transaction doit etre annulee, un message d’annulation revoque l’autorisation

Pour un achat en ligne, le meme flux s’applique — la passerelle de paiement de la plateforme e-commerce genere les messages ISO 8583 au nom de l’acquereur.

Cas d’utilisation courants

  • Paiements en point de vente : chaque transaction par puce, sans contact et bande magnetique sur un terminal physique
  • Retraits aux distributeurs automatiques : la distribution de billets utilise des messages 0200 (financier) avec le code de traitement 01
  • Transactions e-commerce : paiements par carte en ligne, y compris les flux d’authentification 3D Secure
  • Paiements recurrents : facturation d’abonnements ou le commercant initie les transactions sans la presence du porteur de carte
  • Remboursements et annulations : les messages 0400 (annulation) et 0200 avec code de traitement 20 (remboursement) gerent les retours
  • Consultations de solde : le code de traitement 31 interroge le solde disponible sans debiter le compte

Essayez ces exemples

Demande d'autorisation 0100 valide Valide

Une demande d'autorisation ISO 8583:1987 (MTI 0100) au format cle-valeur avec DE2 (PAN), DE3 (code de traitement 000000 = achat), DE4 (montant 25,00 $), DE7 (date/heure de transmission), DE11 (STAN 051234), DE12/13 (heure/date locale), DE22 (mode de saisie POS), DE37 (reference de recuperation), DE41 (identifiant du terminal), DE43 (nom/adresse du commercant) et DE49 (code devise 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
Message invalide (MTI inconnu 9999) Invalide

MTI 9999 n'est pas un identifiant de type de message ISO 8583 valide. Le premier chiffre doit etre 0 ou 1 (version), le deuxieme indique la classe de message (1=autorisation, 2=financier, 4=annulation), le troisieme la fonction (0=demande, 1=reponse, 2=avis) et le quatrieme l'origine (0=acquereur).

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