Webhooks : recevoir des événements sans doubler les actions

À retenir

Un webhook notifie un événement par HTTP. Il ne garantit pas universellement livraison immédiate, ordre des événements ou exécution unique d’une action métier.

Allée sécurisée de serveurs et de réseaux, sans personnel Illustration · scène fictive
Dans cet article

Distinguer réception et traitement terminé

Les garanties dépendent du fournisseur. Stripe documente notamment les doublons possibles et l’absence d’ordre garanti. Une réponse HTTP de succès doit correspondre à une réception durable ou au traitement prévu, pas simplement à l’arrivée d’une requête en mémoire.

SituationComportement attenduPreuve utile
Même événement reçu deux foisÉviter le double effet métier.Identifiant traité et résultat persistant.
Événement ancien reçu plus tardNe pas écraser aveuglément un état récent.État de référence et règle de transition.
Traitement lourdRéception durable puis travail différé.État de file et résultat du worker.
Livraison manquanteRapprocher et reprendre selon les règles du fournisseur.Écart identifié et correction vérifiée.

Construire une réception vérifiable

  • Vérifiez HTTPS, signature et protection contre le rejeu selon le protocole du fournisseur. Pour Stripe, la signature se vérifie sur le corps brut ; transformer le JSON auparavant peut invalider la vérification.
  • Enregistrez durablement l’événement ou son traitement avant l’accusé de réception approprié. Distinguez identifiant de livraison, identifiant d’événement et clé d’idempotence de l’action métier.
  • Testez doublons, événements désordonnés, interruption du worker et redémarrage. Relisez l’état officiel de l’objet si un événement ancien ne permet pas une décision sûre.

Organiser reprise et rapprochement

Documentez tentatives, délais, événements non traités et procédure de rapprochement avec le fournisseur. Un accusé rapide peut masquer un échec ultérieur du traitement. Surveillez donc aussi l’action métier finale et limitez secrets et données personnelles dans les journaux.

Références primaires

Webhooks : traiter l’événement plus d’une fois sans dommage

Une notification peut être répétée après délai ou réponse perdue. La fiabilité dépend d’une vérification de provenance, d’un identifiant d’événement et d’un traitement qui distingue nouveau message et doublon.

  • Vérifier l’authenticité de chaque appel selon le mécanisme du fournisseur.
  • Tester retry, doublon et arrivée dans un ordre différent.
  • Répondre avec un accusé cohérent après traitement ou mise en file durable.

Référence primaire : IETF RFC 9457 — Problem Details for HTTP APIs. Méthode connexe : consulter le guide pratique.