États d’un paiement
Encaissements, reversements et remboursements suivent la même machine à états. Elle compte cinq états, dont un qu’il faut savoir traiter : UNKNOWN, le paiement dont le canal n’a pas donné l’issue.
Le parcours
- CREATED
- PENDING
- SUCCEEDEDFAILEDUNKNOWN réconciliation SUCCEEDED ou FAILED
| De | Vers | Quand |
|---|---|---|
CREATED | PENDING | La demande est transmise au canal. |
CREATED | FAILED | Le canal refuse la demande d’emblée. |
PENDING | SUCCEEDED | Le canal confirme : le payeur a validé. |
PENDING | FAILED | Le payeur refuse, abandonne, ou le canal rejette. |
PENDING | UNKNOWN | Le canal ne répond pas : l’issue est inconnue. |
UNKNOWN | SUCCEEDED | La réconciliation obtient une confirmation. |
UNKNOWN | FAILED | La réconciliation obtient un refus. |
SUCCEEDED et FAILED sont définitifs : aucune transition n’en sort. Un remboursement ne modifie pas l’encaissement d’origine, qui reste SUCCEEDED : c’est une opération distincte, avec son propre état.
Ce que votre code doit faire
| État | Signification | Votre code |
|---|---|---|
En attente CREATED | Enregistré, pas encore transmis au canal. | Attendre. Afficher « en attente ». |
En attente PENDING | Transmis : le payeur confirme sur son téléphone. | Attendre. Afficher « en attente ». |
Payé SUCCEEDED | Confirmé par le canal. Définitif. | Livrer. |
Échoué FAILED | Refusé ou abandonné. Définitif, rien n’a été débité. | Proposer de réessayer : c’est une nouvelle opération, avec une nouvelle clé. |
Non confirmé UNKNOWN | Le canal n’a pas répondu : l’argent a peut-être bougé. Ni livrer, ni redemander. | Ni livrer, ni redemander. Afficher « en cours de vérification ». |
La réconciliation
En production, un paiement PENDING ou UNKNOWN n’est jamais laissé en suspens. La réconciliation interroge le canal à intervalles croissants : après 10 secondes, 30 secondes, 1 minute, 5 minutes, 15 minutes, puis toutes les heures. Les relevés du canal servent aussi à trancher les paiements sans réponse.
Un paiement encore non confirmé au bout de 72 heures sort de la boucle automatique et passe en revue manuelle. Dans tous les cas, l’issue finale vous parvient par webhook dès qu’elle est connue.