Accéder directement au contenu
Créez un compte
ou
connecter-vous
Logo de la documentation Stripe
/
Demander à l'assistant IA
Créez un compte
Connectez-vous
Démarrer
Paiements
Revenus
Plateformes et places de marché
Gestion de fonds
Ressources pour les développeurs
Aperçu
Gestion des versions
Journal des modifications
Mettre à niveau votre version de l'API
Actualiser votre version du SDK
Essentials
SDK
API
Tests
CLI Stripe
Exemples de projets
Outils
Workbench
Dashboard des développeurs
Shell Stripe
Stripe pour Visual Studio Code
Fonctionnalités
Workflows
Destinations d'événements
    Intégrer avec les événements
    Amazon EventBridge
    Endpoint de webhook
      Outil de création de webhook
      Contrôle des versions de webhook
      Corriger les erreurs de vérification de la signature du webhook
      Traiter les événements non envoyés
Alertes d'intégrité de StripeChargements de fichiers
Solutions d'IA
Boîte à outils des agents
Sécurité et confidentialité
Sécurité
Confidentialité
Extensions Stripe
Build Stripe apps
Use apps from Stripe
Partenaires
Partner ecosystem
Certification des partenaires
AccueilRessources pour les développeursEvent destinationsWebhook endpoint

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_before : indiquez un ID d’événement envoyé juste avant que l’endpoint de webhook ne devienne indisponible.
  • types : spécifiez la liste des types d’événements à récupérer.
  • delivery_success : définissez ce paramètre sur 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.

Command Line
cURL
curl -G https://api.stripe.com/v1/events \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d ending_before=evt_001 \ -d "types[]"="payment_intent.succeeded" \ -d "types[]"="payment_intent.payment_failed" \ -d delivery_success=false

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.

server.rb
Ruby
events = Stripe::Event.list({ ending_before: 'evt_001', types: ['payment_intent.succeeded', 'payment_intent.payment_failed'], delivery_success: false, }) events.auto_paging_each do |event| # This function is defined in the next section process_event(event) end

L’utilisation de ending_before 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
server.rb
Ruby
def process_event(event) if is_processing_or_processed(event) puts "skipping event #{event.id}" else puts "processing event #{event.id}" mark_as_processing(event) # Process the event # ... mark_as_processed(event) end end

Définissez les fonctionnalités suivantes qui permettent d’éviter la duplication des traitements :

  • is_processing_or_processed pour vérifier l’état de l’événement dans votre base de données.
  • mark_as_processing pour mettre à jour votre base de données afin de marquer l’événement comme étant en cours de traitement.
  • mark_as_processed pour mettre à jour votre base de données afin de marquer l’événement comme étant traité.

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.

webhook.rb
Ruby
require 'json' # Using Sinatra post '/webhook' do payload = request.body.read event = nil begin event = Stripe::Event.construct_from( JSON.parse(payload, symbolize_names: true) ) rescue JSON::ParserError => e # Invalid payload status 400 return end if is_processing_or_processed(event) puts "skipping event #{event.id}" else puts "processing event #{event.id}" mark_as_processing(event) # Process the event # ... mark_as_processed(event) end status 200 end
Cette page vous a-t-elle été utile ?
OuiNon
Besoin d'aide ? Contactez le service Support.
Rejoignez notre programme d'accès anticipé.
Consultez notre log des modifications.
Des questions ? Contactez l'équipe commerciale.
LLM ? Lire llms.txt.
Propulsé par Markdoc