Le verdict en trois phrases
Un environnement de recette fiable est ce qui separe un go-live serein d'un week-end a rembourser des clients furieux. En 2026, montez un tunnel webhook (ngrok ou equivalent), simulez les callbacks, et rejouez chaque evenement jusqu'a ce que succes, timeout et annulation soient tous geres. La regle : ne mettez jamais en prod un flux paiement qui n'a pas passe une checklist d'au moins 12 cas de test.
Monter le sandbox pas a pas
Orange Money fonctionne par redirection web avec une URL de notification, tandis que d'autres operateurs comme M-Pesa Daraja utilisent un STK push. Le principe de recette est le meme : un environnement isole, des identifiants de test, un endpoint de callback joignable depuis internet.
| Element de recette | Valeur / outil 2026 | Role |
|---|---|---|
| Tunnel local | ngrok, cloudflared | Exposer localhost au callback |
| URL notification | https://xxxx.ngrok.io/webhook | Recevoir le statut paiement |
| Compte test | Fourni par l'operateur | Payer sans argent reel |
| Timeout STK (M-Pesa) | 60 secondes | Simuler l'expiration |
| Shortcode test Daraja | 174379 | Sandbox Safaricom |
| Rejeu d'evenement | Log + POST manuel | Tester l'idempotence |
| Signature webhook | Header a verifier | Rejeter les faux appels |
Le piege classique : coder uniquement le cas nominal (le client paie, tout marche). En realite 20 a 30 % des tentatives finissent en timeout, annulation ou solde insuffisant. Chacun de ces cas doit avoir un comportement defini et teste.
La checklist des 12 cas et leurs actions
Voici les statuts a couvrir et l'action attendue de votre back-end. Ne signez pas la recette tant que les 12 ne sont pas verts.
| # | Cas teste | Statut recu | Action attendue |
|---|---|---|---|
| 1 | Paiement reussi | success | Livrer, marquer paye |
| 2 | Solde insuffisant | failed | Ne rien livrer, message clair |
| 3 | Client annule | cancelled | Liberer le panier |
| 4 | Timeout STK 60 s | timeout | Marquer en attente, relance |
| 5 | Double callback | success x2 | Idempotence, un seul fulfillment |
| 6 | Mauvais montant | mismatch | Rejeter, alerter |
| 7 | Signature invalide | — | Ignorer, logguer |
| 8 | Reference inconnue | 404 | Logguer, pas de fulfillment |
| 9 | Callback tardif | success | Fulfillment si pas deja fait |
| 10 | Reseau coupe client | pending | Verification serveur au retour |
| 11 | Remboursement | refunded | Annuler la commande |
| 12 | Rejeu manuel | success | Aucun double effet |
Les cas 5 et 9 sont les plus souvent oublies et les plus couteux : ils testent l'idempotence, c'est-a-dire la capacite a recevoir deux fois le meme evenement sans livrer deux fois.
Mini cas pratique
Ibrahim, restaurateur a Abidjan avec commande en ligne, a lance sans recette serieuse. Le premier vendredi soir, un pic de trafic sur la 4G a genere des dizaines de timeouts. Son systeme, ne gerant que le cas nominal, laissait les commandes bloquees sans jamais confirmer ni annuler. Resultat : 23 commandes fantomes, cuisine paralysee, et 340 000 FCFA de tickets impossibles a rapprocher ce soir-la. Apres avoir monte un sandbox et valide les 12 cas (surtout timeout et rejeu), le taux de commandes bloquees est passe sous 1 %. La recette a coute 2 jours de travail ; le week-end rate lui en avait coute bien plus.
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.
FAQ
Combien de temps un STK push M-Pesa reste-t-il actif en sandbox 2026 ?
Environ 60 secondes. Passe ce delai sans saisie du PIN, la requete expire et vous recevez un statut d'echec ou de timeout. Testez explicitement ce cas, c'est l'un des plus frequents en production.
Ai-je besoin d'un tunnel comme ngrok pour tester les webhooks ?
Oui, en developpement local. L'operateur doit joindre votre callback depuis internet, or localhost n'est pas accessible. Un tunnel expose votre URL locale le temps de la recette.
Quel shortcode utiliser pour le sandbox Daraja ?
Le shortcode de test 174379 dans l'environnement sandbox Safaricom. Il permet de simuler un STK push sans mouvement d'argent reel.
Combien de cas dois-je tester avant la prod ?
Au minimum 12 : succes, echec, annulation, timeout, double callback, remboursement et rejeu manuel. Les cas d'idempotence (double callback, callback tardif) sont non negociables.
Peut-on rejouer un evenement webhook pour tester ?
Oui, et c'est indispensable. Conservez le payload dans vos logs et renvoyez-le manuellement en POST : votre systeme doit produire exactement le meme resultat qu'au premier envoi, sans double effet.
Discutons de votre projet. On monte votre sandbox mobile money et on valide chaque webhook avant le go-live. 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.

