Appearance
Statuts de paiement
Un paiement HayBTech passe par plusieurs états entre la création et la résolution finale.
Cycle de vie
text
initié → en attente → succès → remboursé
↘ litige → succès / remboursé
↓
échec / annulé / expiréSignification des statuts
| Statut | Description |
|---|---|
initiated | La transaction vient d'être créée, le client n'a pas encore interagi avec la page de paiement. |
pending | Le client a ouvert la fenêtre de paiement mais n'a pas encore validé. |
success | Paiement confirmé par le provider (Wave, Orange Money, etc.). Vous pouvez livrer. |
failed | Refusé — solde insuffisant, erreur provider, ou l'OTP n'a pas été validé à temps. |
cancelled | Le client a explicitement annulé. |
expired | La fenêtre de paiement a expiré (généralement après 30 minutes sans action). |
refunded | Remboursement total effectué. |
disputed | Un litige a été ouvert sur cette transaction. |
Ce qu'il faut retenir
Ne livrez jamais sur la base du retour navigateur. Un client peut modifier sa page, avoir une connexion coupée, ou contourner le redirect. La seule source de vérité est le webhook reçu sur votre serveur.
Un success est définitif — il ne peut pas revenir en arrière. Un failed l'est aussi. Seul un pending ou initiated peut évoluer.
Invariants techniques
- Les statuts terminaux (
success,failed,cancelled,expired) ne peuvent pas être réécrits. Les transitions interdites sont rejetées au niveau base de données. - Chaque changement de statut génère une ligne dans
transaction_events(table append-only — pas d'UPDATE ni de DELETE). - Les enregistrements sont conservés 5 ans minimum (obligation BCEAO).
