Le verdict en trois phrases
Un webhook de paiement mal sécurisé est la première cause technique de litige : environ 30 % des réclamations "j'ai payé mais la commande n'est pas validée" viennent de là. Quatre garde-fous suffisent : vérification de signature HMAC, clé d'idempotence, retry exponentiel et journalisation. Sans idempotence, 1 paiement sur 200 est traité en double, et chaque correction manuelle coûte environ 2 000 FCFA de main d'oeuvre.
Les quatre garde-fous techniques
Un webhook, c'est un appel entrant depuis le fournisseur de paiement vers votre serveur. Comme n'importe qui peut tenter d'appeler cette URL, elle doit être blindée.
| Garde-fou | Rôle | Réglage recommandé |
|---|---|---|
| Signature HMAC | Vérifie que l'appel vient bien du fournisseur | Rejeter si signature invalide |
| Clé d'idempotence | Empêche de traiter deux fois le même paiement | Clé = référence transaction |
| Fenêtre de rejeu | Bloque les appels rejoués par un attaquant | 5 minutes max |
| Retry exponentiel | Rattrape les webhooks non reçus | 3 tentatives sur 24 h |
| Timeout | Évite de bloquer le fournisseur | 10 s de réponse max |
| Journalisation | Tracé pour litiges et audit | Conserver 90 jours |
La signature HMAC est non négociable : sans elle, un tiers pourrait simuler un paiement réussi et déclencher une expédition sans avoir payé.
Le coût réel d'un webhook non sécurisé
Un webhook fragile ne coûte pas qu'en bugs : il coûte en temps, en confiance client et en argent perdu. Voici l'impact sur une boutique moyenne.
| Problème | Fréquence sans garde-fou | Coût unitaire | Impact mensuel (500 cmd) |
|---|---|---|---|
| Paiement double traité | 1 sur 200 | 2 000 FCFA | ~5 000 FCFA |
| Commande payée non validée | 1 sur 100 | perte de vente | ~5 ventes perdues |
| Litige client à traiter | 30 % des litiges | 2 000 FCFA | variable |
| Expédition sans paiement | rare mais grave | valeur produit | risque élevé |
| Réconciliation manuelle | quotidienne | 1 h/jour | ~30 h/mois |
Le poste le plus lourd est souvent le temps de réconciliation manuelle : jusqu'à 30 heures par mois qu'un webhook fiable rend inutiles.
Idempotence: le détail qui évite les doublons
Quand un fournisseur ne reçoit pas votre réponse à temps, il renvoie le webhook. Sans clé d'idempotence, votre serveur re-traite le paiement : deuxième validation, parfois deuxième expédition. En stockant la référence de transaction comme clé unique, tout appel répété est détecté et ignore proprement. C'est la ligne de code qui évite 90 % des doublons.
Mini cas pratique
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.
Ibrahim, développeur pour une boutique à Dakar, traite 500 commandes/mois. Avant sécurisation, il constatait ~2,5 doublons/mois (1 sur 200) à 2 000 FCFA de correction chacun, plus ~1 h/jour de réconciliation manuelle, soit 30 h/mois. Après avoir ajouté HMAC + idempotence + retry, les doublons tombent à zéro et la réconciliation passe à ~2 h/mois grâce à la journalisation. Économie : 5 000 FCFA de corrections et 28 h de travail récupérées chaque mois.
FAQ
La signature HMAC, c'est vraiment obligatoire ?
Oui. C'est le seul moyen de prouver qu'un appel vient réellement de Wave ou du fournisseur. Sans elle, un attaquant peut simuler un paiement réussi : le risque est une expédition non payée.
Combien de tentatives de retry prévoir ?
Un schéma classique est 3 tentatives sur 24 h avec délais croissants (par ex. 1 min, 15 min, 2 h). Cela rattrape les pannes réseau temporaires sans marteler votre serveur.
Pourquoi une fenêtre de rejeu de 5 minutes ?
Elle limite les attaques par rejeu : un webhook intercepté et renvoyé plus tard est refusé s'il dépasse 5 minutes. Au-delà, on considère l'appel comme suspect.
Que faire si un webhook n'arrive jamais ?
Prévoir une vérification active : interroger l'API de statut du paiement après 10 secondes, puis via une file de reprise. Le webhook ne doit jamais être l'unique source de vérité.
Combien de temps garder les journaux ?
Au moins 90 jours. C'est la fenêtre utile pour arbitrer un litige client ou reconstituer un paiement contesté.
Discutons de votre projet. Nous sécurisons vos webhooks Wave avec signature, idempotence et reprise testées en conditions réelles. 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.
