Le verdict en trois phrases
Sur mobile money, le callback (webhook) peut se perdre: coupure réseau, timeout, serveur momentanément indisponible — et un callback perdu devient une commande fantôme payée mais jamais confirmée. La bonne décision n'est pas « webhook seul » mais webhook + polling de secours: si aucun callback n'arrive, votre serveur interroge activement l'API de statut. Ajoutez un retry exponentiel et une dead-letter queue après 5 essais pour ne jamais perdre un événement.
Webhook seul vs webhook + polling
Le webhook seul est optimal quand le réseau est parfait. Sur les marchés africains en 3G, ce n'est pas le cas: le polling de secours interroge l'API query status du fournisseur pour les commandes restées en attente.
| Approche | Couverture | Charge serveur | Risque commande fantôme |
|---|---|---|---|
| Webhook seul | ~95 % | Faible | Élevé sur callback perdu |
| Polling seul | ~99 % | Élevée | Faible mais coûteux |
| Webhook + polling | ~99,9 % | Modérée | Quasi nul |
Retry, dead-letter et codes M-Pesa
Quand votre traitement d'un webhook échoue, on rejoue avec un backoff exponentiel 1 / 5 / 25 minutes, puis on bascule en dead-letter queue après 5 essais pour inspection manuelle. En parallèle, le polling interroge le statut toutes les 30 secondes pendant 10 minutes après le lancement du paiement.
| Paramètre | Valeur 2026 | Rôle |
|---|---|---|
| Retry 1 | +1 min | Reprise rapide |
| Retry 2 | +5 min | Panne courte |
| Retry 3 | +25 min | Panne prolongée |
| Dead-letter | après 5 essais | Inspection manuelle |
| Polling intervalle | 30 s | Secours callback |
| Polling durée | 10 min | Fenêtre de paiement |
| M-Pesa ResultCode 0 | Succès | Confirmer commande |
| M-Pesa ResultCode 1032 | Annulé par l'utilisateur | Libérer le panier |
| M-Pesa ResultCode 1037 | Timeout (pas de réponse) | Polling + relancer |
Interprétation clé: 1032 = annulation volontaire (on n'insiste pas), 1037 = timeout (on interroge le statut via l'API de secours avant de conclure à un échec).
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.
Mini cas pratique
Fatou, gérante d'une épicerie en ligne à Thiès, reçoit 800 paiements Orange Money/mois. Environ 3 % des callbacks se perdaient (24 commandes/mois), dont la moitié étaient bel et bien payées: 12 ventes fantômes non expédiées, panier moyen 12 500 FCFA, soit 150 000 FCFA/mois de flou et des clients mécontents. Avec le polling de secours toutes les 30 s et le retry exponentiel, elle récupère 11 de ces 12 ventes, soit ~137 500 FCFA/mois, et le support cesse de traiter des « j'ai payé mais rien reçu ».
FAQ
Pourquoi ne pas compter uniquement sur le webhook ? Parce qu'un callback peut ne jamais arriver (réseau, timeout fournisseur). Le polling de secours garantit que toute commande lancée obtient un statut final, même sans callback.
Que signifie ResultCode 1037 ? C'est un timeout: l'utilisateur n'a pas validé à temps ou la réponse s'est perdue. Ne concluez pas à un échec immédiatement — interrogez l'API de statut, car le paiement peut avoir abouti côté opérateur.
Combien de temps poller ? Toutes les 30 secondes pendant 10 minutes couvre la quasi-totalité des paiements mobile money. Au-delà, la commande passe en attente longue et une réconciliation quotidienne prend le relais.
À quoi sert la dead-letter queue ? Après 5 essais infructueux, l'événement y est déposé pour inspection manuelle plutôt que perdu. Cela évite qu'un bug ponctuel efface silencieusement un paiement.
Faut-il gérer 1032 comme un échec ? Oui mais sans retry: 1032 est une annulation volontaire de l'utilisateur. On libère le panier/stock réservé et on propose de relancer le paiement.
Discutons de votre projet. Nous rendons vos paiements Orange Money et M-Pesa résilients: retry, dead-letter et polling de secours testés. WhatsApp +221 77 596 93 33.
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.

