Skip to content

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

StatutDescription
initiatedLa transaction vient d'être créée, le client n'a pas encore interagi avec la page de paiement.
pendingLe client a ouvert la fenêtre de paiement mais n'a pas encore validé.
successPaiement confirmé par le provider (Wave, Orange Money, etc.). Vous pouvez livrer.
failedRefusé — solde insuffisant, erreur provider, ou l'OTP n'a pas été validé à temps.
cancelledLe client a explicitement annulé.
expiredLa fenêtre de paiement a expiré (généralement après 30 minutes sans action).
refundedRemboursement total effectué.
disputedUn 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).

Documentation de l'API de paiement HayBTech.