Pourquoi la recette paiement est à part
La recette d'une chaîne de paiement (UAT) est la campagne de tests qui valide, avant mise en production, le comportement de chacun des maillons traversés par une transaction. Une régression y produit des effets d'une autre nature que dans un logiciel ordinaire, puisqu'elle perd des ventes ou débite un client à tort sans nécessairement faire apparaître d'erreur à l'écran. La recette doit donc couvrir le cas nominal, puis la longue traîne des refus, des délais, des annulations et des cas 3DS, avant de se prolonger après la mise en production par un monitoring continu.
sk_test_ / pk_test_). Une vraie carte n'est jamais utilisée en sandbox, ni une carte de test en production. Confondre les deux environnements est l'erreur d'intégration la plus classique, et la plus coûteuse.Cartes de test et scénarios
Les cartes de test sont des PAN factices, fournis par les PSP et les réseaux, qui déclenchent en sandbox un comportement précis (acceptation, refus pour tel motif, challenge 3DS, etc.). Le CVV et la date d'expiration sont libres (future). La campagne consiste à provoquer volontairement chaque cas afin de vérifier que le code du marchand réagit correctement.
| Numéro de test | Réseau | Comportement simulé |
|---|---|---|
| 4242 4242 4242 4242 | Visa | Paiement accepté (cas nominal) |
| 5555 5555 5555 4444 | Mastercard | Paiement accepté |
| 3782 822463 10005 | American Express | Paiement accepté (format 15 chiffres) |
| 4000 0000 0000 0002 | Visa | Refus générique (do not honor) |
| 4000 0000 0000 9995 | Visa | Refus pour provision insuffisante |
| 4000 0000 0000 3220 | Visa | Déclenche un challenge 3-D Secure 2 |
- Nominal : autorisation acceptée, capture, réception du paiement.
- Refus : rejouer chaque code (05, 14, 41, 51, 54, 65/1A…) et vérifier le message et la stratégie de retry.
- 3DS2 : parcours frictionless et parcours avec challenge, y compris abandon et échec d'authentification.
- Capture partielle et annulation : préautorisation, capture inférieure, reversal/void avant compensation.
- Remboursement : total et partiel, et vérification du rapprochement.
- Dégradés : timeout émetteur, PSP indisponible, double soumission (idempotence), webhook rejoué.
// On envoie deux fois la MEME cle d'idempotence : le PSP doit
// renvoyer la meme transaction, sans creer de second debit.
const cle = "cmd-2026-07-11-000482"
async function payer() {
return fetch("/v1/charges", {
method: "POST",
headers: {
"Authorization": "Bearer sk_test_XXXX",
"Idempotency-Key": cle,
"Content-Type": "application/json",
},
body: JSON.stringify({ amount: 4280, currency: "EUR", source: "tok_test" }),
}).then((r) => r.json())
}
const a = await payer()
const b = await payer()
console.assert(a.id === b.id, "Idempotence rompue : double debit possible")La certification : prouver la conformité au réseau
Être certifié, pour un intégrateur, signifie avoir passé un processus formel, mené avec l'acquéreur, le réseau ou un organisme habilité, qui valide que l'implémentation respecte les spécifications et se comporte correctement sur une plateforme de test officielle. Les tests joués en sandbox ne suffisent pas à ouvrir l'accès à un réseau réel, la certification venant s'y ajouter. En France, l'acceptation carte suppose une certification CB, en plus des agréments internationaux Visa/Mastercard.
Monitoring : la recette ne s'arrête jamais
Le monitoring d'une chaîne de paiement est la surveillance continue de ses indicateurs après la mise en production. Une dégradation ne produit pas toujours d'erreur technique. Un changement chez l'émetteur, un certificat expiré ou une règle antifraude trop stricte font chuter le taux d'acceptation sans qu'aucun message d'erreur apparaisse. Le dispositif associe des alertes et des transactions synthétiques, c'est-à-dire des paiements de test joués en production à intervalles réguliers pour vérifier que la chaîne répond.
| Indicateur | Ce qu'il révèle | Signal d'alerte |
|---|---|---|
| Taux d'autorisation | Santé globale de l'acceptation | Chute soudaine ou dérive sur un BIN/émetteur |
| Répartition des codes DE39 | Nature des refus (soft vs hard) | Hausse des 05, 65/1A, 91 |
| Taux de réussite 3DS2 | Frictions d'authentification | Effondrement du frictionless, abandons en challenge |
| Latence bout-en-bout | Performance de la chaîne | Temps de réponse qui s'allonge, timeouts |
| Taux de fraude / chargeback | Exposition au risque | Approche des seuils schemes (Visa VAMP, Mastercard EFM) |
| Disponibilité (uptime) | Résilience technique | Erreurs 5xx, webhooks non délivrés |