La décision

Recevoir une notification ne termine pas l’action métier. Prévoyez répétitions et ordre différent. Stripe documente ces comportements ; vérifiez le contrat des autres fournisseurs.

Un cas concret

Un événement fictif « facture payée » est validé, enregistré avec le travail prévu, puis acquitté après acceptation durable. Sa répétition est reconnue sans créditer deux fois. Un échec ultérieur conserve un état relançable.

Les options à comparer

Une inbox conserve les entrées ; une outbox, le travail créé par votre transaction. Elles séparent intention durable et réseau. Un rapprochement trouve des désaccords sans notification d’erreur.

Les points de rupture

Ne conservez pas les identifiants seulement en mémoire et ne terminez pas avant validation des changements. Traitez les anciens événements par état ou version. Espacez les reprises temporaires et faites revoir les données invalides.

Séparer identité de livraison et identité métier

Gardez identifiant d’événement et référence de facture. Plusieurs événements peuvent concerner une facture ; tous les bloquer après le premier perd des changements valides. Répéter un événement ne doit pas doubler un crédit. Définissez clé de réception et contrainte métier, puis confirmez ces contrôles avec la modification effective.

Vérifiez l’émetteur selon sa documentation avant acceptation. Si le corps brut est signé, conservez les octets reçus plutôt que reconstruire le JSON. Les secrets de signature ne vont ni dans les logs ni dans le code. Vérification, reprises et conservation dépendent du prestataire ; copier une autre intégration peut vérifier la mauvaise chose.

Démontrer la reprise au mauvais moment

Arrêtez le worker après réception, après acceptation durable et pendant la modification métier. Examinez boîte de réception et dossier après redémarrage. Un effet externe peut avoir été accepté avant sauvegarde locale du résultat. Utilisez idempotence ou rapprochement si disponibles ; un drapeau local ne garantit pas une livraison exactement unique.

Une reprise contrôlée garde l’identité et son motif. Les données définitivement invalides suivent un circuit d’exception, pas des tentatives infinies. Le rapprochement compare les dossiers de référence sur une période définie. Convenez du lecteur, du traitement urgent et des preuves de clôture. Une file sans responsable peut conserver parfaitement les données tout en cachant l’arrêt du travail.

Avant de lancer le projet

Répéter ne produit-il qu’un effet ? Le worker reprend-il après arrêt ? Un dossier peut-il être analysé et relancé ? Utilisez ces preuves pour l’acceptation d’intégration.

Sources et lectures complémentaires

  1. Stripe: webhook delivery and event handling
Services

Intégration de systèmes

Pour que vos outils travaillent ensemble.

Parlons de ce service