Traiter les événements webhook non envoyés
Découvrez comment traiter manuellement les événements webhook non envoyés.
Si votre endpoint de webhook ne peut temporairement pas traiter les événements, Stripe renvoie automatiquement les événements non remis à votre endpoint pendant trois jours maximum, ce qui augmente le temps nécessaire pour que votre endpoint de webhook reçoive et traite tous les événements.
Ce guide explique comment accélérer ce processus en traitant manuellement les événements non envoyés.
Répertorier les événements webhook
Appel à l’API List Events avec les paramètres suivants :
ending_
: indiquez un ID d’événement envoyé juste avant que l’endpoint de webhook ne devienne indisponible.before types
: spécifiez la liste des types d’événements à récupérer.delivery_
: définissez ce paramètre sursuccess false
pour récupérer les événements qui ont été envoyés sans succès à au moins l’un de vos endpoints de webhook.
Stripe ne renvoie que les événements créés au cours des 30 derniers jours.
Par défaut, la réponse renvoie jusqu’à 10 événements. Pour récupérer tous les événements, utilisez l’autopagination après avoir récupéré les résultats.
L’utilisation de ending_
avec l’autopagination renvoie les événements dans l’ordre chronologique. Cela vous permet de traiter les événements dans l’ordre dans lequel ils ont été créés.
Traiter les événements
Ne traitez que les événements traités sans succès selon votre propre logique afin d’éviter de traiter un même événement plusieurs fois, par exemple :
- En exécutant involontairement le script deux fois de suite
- En exécutant simultanément le script pendant que Stripe renvoie automatiquement certains des événements non traités
Définissez les fonctionnalités suivantes qui permettent d’éviter la duplication des traitements :
is_
pour vérifier l’état de l’événement dans votre base de données.processing_ or_ processed mark_
pour mettre à jour votre base de données afin de marquer l’événement comme étant en cours de traitement.as_ processing mark_
pour mettre à jour votre base de données afin de marquer l’événement comme étant traité.as_ processed
Répondre aux relances automatiques
Stripe considère toujours que vos événements traités manuellement n’ont pas été envoyés et effectue donc en continu de nouvelles tentatives automatiques.
Lorsque votre endpoint de webhook reçoit un événement déjà traité, ignorez l’événement et renvoyez une réponse positive afin d’empêcher les tentatives ultérieures.