Concepts
Idempotence
Rejouer une requête ne crée jamais deux paiements.
Une requête réseau peut être envoyée deux fois (coupure, nouvel essai, double clic). Pont garantit que le même ordre ne produit qu'une seule opération.
Comment Pont identifie « le même ordre »
- L'en-tête
Idempotency-Key, s'il est présent (8 à 255 caractères). - Sinon, la
referencede votre commande : Pont en dérive la clé tout seul. - Sans les deux :
400, car Pont ne peut pas protéger l'opération.
curl -X POST http://localhost:8787/v1/payments \
-H "authorization: Bearer $PONT_API_KEY" \
-d '{"amount":5000,"currency":"XOF","country":"BJ","customer":{"phone":"+2290100000001"},"reference":"commande-42"}'Envoyer cette requête deux fois renvoie le même paiement.
Conflits
- Même clé avec un contenu différent :
409 idempotency_conflict. - Pour retenter un paiement échoué : nouvelle
reference(commande-42-2) ou autreIdempotency-Key.
Sous concurrence
L'enregistrement de la clé est atomique (contrainte d'unicité en base). Testé sur PostgreSQL : 20 créations simultanées avec la même clé produisent un seul paiement.
Côté portefeuille
Les écritures du registre sont aussi idempotentes : un paiement n'est crédité qu'une fois, même si son webhook arrive deux fois. Voir portefeuille et registre.