Sites Web11 min de lecture

Gestion des webhooks Orange Money : retry, timeout et déduplication (2026)

Mohamed Bah·Fondateur, Kolonell
25 août 2026
Partager :
Gestion des webhooks Orange Money : retry, timeout et déduplication (2026)

Gestion des webhooks Orange Money : retry, timeout et déduplication (2026)

Sites Web

Le verdict en trois phrases

Un webhook Orange Money n'est jamais garanti unique ni ponctuel : il peut arriver deux fois, en retard de plusieurs minutes, ou se perdre. Votre code doit donc être idempotent (le même event traité deux fois ne change rien), patient (retry à backoff exponentiel) et couvert (polling de rattrapage pour les events perdus). Sur 10 000 events par mois, environ 2 % arrivent en double et 0,3 % se perdent sans filet de secours — soit 30 paiements qui disparaissent si vous n'avez pas de polling.

Les trois défaillances à couvrir

Un système de webhook fiable ne suppose jamais le meilleur cas. Il part du principe que chaque event peut échouer de trois manières, et il traite chacune.

Le doublon : l'opérateur rejoue un event parce que votre 200 est arrive trop tard, et vous recevez la même confirmation deux fois. Sans idempotence, vous créditez deux fois la commande. Le retard : un pic de trafic côté opérateur décale la livraison de plusieurs minutes ; votre système ne doit pas conclure à un échec trop vite. La perte : l'event n'arrive jamais (panne réseau des deux côtés) ; seul un polling de secours le rattrape.

Type de défaillanceFréquence estimée 2026Parade
DoublonEnviron 2 % des eventsClé d'idempotence transaction_id
Retard (> 1 min)Environ 5 % des eventsStatut "en attente", pas d'échec
Perte totaleEnviron 0,3 % des eventsPolling toutes les 15 min
Ordre inverséEnviron 1 %Traiter par timestamp, pas par arrivée
Signature invalideRare mais critiqueRejet immédiat, log sécurité

Ces chiffres sont un ordre de grandeur 2026 : ils varient selon l'opérateur et la qualité réseau, mais l'architecture doit tenir dans le pire des cas.

La stratégie de retry et le fallback polling

Quand votre serveur ne répond pas, l'opérateur rejoue selon un backoff exponentiel : les intervalles s'allongent pour ne pas noyer un serveur déjà en difficulté. De votre côté, si vous devez rejouer un traitement interne (mise en file), appliquez la même logique.

TentativeDélai après échecCumul écoulé
1re1 s1 s
2e5 s6 s
3e30 s36 s
4e5 minEnviron 5 min
5e30 minEnviron 35 min
FallbackPolling toutes les 15 minEn continu

Le backoff à lui seul ne suffit pas : si l'event est définitivement perdu, aucun retry ne le fera revenir. C'est pourquoi le polling de rattrapage est indispensable. Toutes les 15 min, un job liste les commandes en statut "en attente" depuis plus de X minutes et interroge directement l'API de statut de l'opérateur. Cette double couverture — retry poussé par l'opérateur, polling tiré par vous — ramène le taux de perte réel de 0,3 % à quasiment zéro.

Besoin d'un site web professionnel ?

Kolonell crée des sites web qui attirent des clients, optimisés pour le marché sénégalais. Devis gratuit en 2 minutes.

Vous préférez qu’on vous rappelle ?

Laissez votre WhatsApp, un expert Kolonell vous recontacte sous 24h ouvrées. Gratuit et sans engagement.

Vous êtes :

Mini cas pratique

Fatou gère une plateforme de réservation à Dakar avec paiement Orange Money. En avril 2026, elle traite 10 000 events. Sans filet, elle aurait perdu environ 30 paiements (0,3 %) et double-crédite environ 200 commandes (2 %).

Après mise en place de l'idempotence par transaction_id et du polling toutes les 15 min, le bilan change : les 200 doublons sont absorbés sans effet (même clé = ignoré), et sur les 30 events perdus, le polling en rattrape 28 en moins de 15 min chacun. Les 2 restants sont traités à la réconciliation quotidienne. Résultat : zéro double crédit, deux commandes rattrapées à la main au lieu de trente perdues. Le temps passé sur les incidents de paiement tombe de 4 h à 20 min par semaine.

FAQ

Comment garantir l'idempotence ? Stockez le transaction_id de chaque event traité dans une table avec contrainte d'unicité. Avant tout traitement, vérifiez sa présence : s'il existe déjà, renvoyez 200 sans rien faire. Cela neutralise les 2 % de doublons.

Quel intervalle de polling choisir ? Toutes les 15 min pour les commandes en attente depuis plus de 5 min offre un bon compromis entre fraîcheur et charge. Un polling plus fréquent alourdit l'API opérateur sans gain réel.

Combien de retries avant d'abandonner ? Côté opérateur, jusqu'à 5 tentatives sur environ 35 min. Au-delà, ne comptez que sur le polling : un event non arrive après 5 tentatives est probablement perdu.

Faut-il traiter les events dans l'ordre d'arrivée ? Non : traitez par timestamp de l'event, pas par ordre de réception. Environ 1 % des events arrivent dans le désordre, et se fier à l'arrivée crée des incohérences de statut.

Que faire d'un event à signature invalide ? Rejet immédiat et log de sécurité. Une signature invalide signale soit un bug de configuration, soit une tentative de falsification : ne traitez jamais un tel event.

Discutons de votre projet. On construit votre gestion de webhooks Orange Money avec idempotence, retry et polling pour ne perdre aucun paiement. WhatsApp +221 77 596 93 33.

Tags :#webhook orange money#flutterwave webhook#idempotence#retry backoff#deduplication paiement#polling fallback#integration api
Partager :

Mohamed Bah

Fondateur, Kolonell

Passionné par le digital et l'entrepreneuriat en Afrique, Mohamed accompagne les entreprises sénégalaises dans leur transformation digitale depuis 2020. Fondateur de Kolonell, il croit que chaque PME mérite une présence en ligne professionnelle et accessible.