Parser ISO 8583
Parser les messages de transactions carte ISO 8583
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.
Identifiant de type de message (MTI)
Le MTI a 4 chiffres encode quatre informations :
| Chiffre | Signification | Valeurs |
|---|---|---|
| 1er | Version ISO | 0 = 1987, 1 = 1993, 2 = 2003 |
| 2e | Classe de message | 1 = Autorisation, 2 = Financier, 4 = Annulation, 8 = Gestion reseau |
| 3e | Fonction | 0 = Demande, 1 = Reponse, 2 = Avis, 3 = Reponse d’avis |
| 4e | Origine | 0 = Acquereur, 1 = Repetition acquereur, 2 = Emetteur, 3 = Repetition emetteur |
Elements de donnees cles
| DE | Nom | Format | Description |
|---|---|---|---|
| DE2 | Numero de compte principal | n..19 | Le numero de carte (PAN) — doit etre masque dans les logs |
| DE3 | Code de traitement | n6 | Type de transaction : 00=achat, 01=avance de caisse, 20=remboursement |
| DE4 | Montant de la transaction | n12 | Montant en unites mineures (centimes) — justifie a droite, complete par des zeros |
| DE11 | Numero d’audit de trace systeme | n6 | Identifiant de transaction unique attribue par l’acquereur |
| DE37 | Numero de reference de recuperation | an12 | Cle pour la recherche et le rapprochement de transaction |
| DE38 | Code d’autorisation en reponse | an6 | Code d’approbation retourne par l’emetteur |
| DE39 | Code de reponse | an2 | 00=Approuve, 05=Ne pas honorer, 51=Fonds insuffisants |
| DE41 | Identifiant terminal du commercant | ans8 | Identifiant unique du terminal de point de vente |
| DE43 | Nom/adresse du commercant | ans40 | Nom du commercant, ville, etat et pays |
Cycle de vie d’une transaction
Un paiement par carte typique implique au moins deux messages ISO 8583 :
- Demande d’autorisation (0100) : le terminal envoie une demande via l’acquereur au reseau de carte, puis a l’emetteur
- Reponse d’autorisation (0110) : l’emetteur retourne une approbation (DE39 = “00”) ou un refus avec un code de reponse
- Avis financier (0220) : une fois la transaction terminee par le porteur de carte, un message financier confirme le montant final
- 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
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 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