Weiter zum Inhalt
Konto erstellen
oder
anmelden
Das Logo der Stripe-Dokumentation
/
KI fragen
Konto erstellen
Anmelden
Jetzt starten
Zahlungen
Finanzautomatisierung
Plattformen und Marktplätze
Geldmanagement
Entwickler-Tools
Jetzt starten
Zahlungen
Finanzautomatisierung
Jetzt starten
Zahlungen
Finanzautomatisierung
Plattformen und Marktplätze
Geldmanagement
Übersicht
Versionierung
Änderungsprotokoll
Aktualisieren Sie Ihre API-Version
Ihre SDK-Version aktualisieren
Entwickler-Tools
SDKs
API
Tests
Workbench
Ereignisziele
    Integration in Ereignisse
    Amazon EventBridge
    Webhook-Endpoint
      Webhook-Assistent
      Webhook-Versionierung
      Signaturprüfungsfehler von Webhooks beheben
      Nicht zugestellte Ereignisse verarbeiten
Arbeitsabläufe
Stripe-CLI
Stripe Shell
Entwickler-Dashboard
Agent-Toolkit
Stripe-StatuswarnungenBuild with LLMsStripe für Visual Studio CodeHochgeladene Dateien
Sicherheit
Sicherheit
Extend Stripe
Stripe-Apps
Stripe Connectors
Partner
Partner-Ecosystem
Partner-Zertifizierung
StartseiteEntwickler-ToolsEvent DestinationsWebhook endpoint

Nicht zugestellte Webhook-Ereignisse verarbeiten

Erfahren Sie, wie Sie nicht zugestellte Webhook-Ereignisse manuell verarbeiten können.

Seite kopieren

Wenn Ihr Webhook-Endpoint Ereignisse vorübergehend nicht verarbeiten kann, sendet Stripe die nicht zugestellten Ereignisse bis zu drei Tage lang automatisch an Ihren Endpoint zurück, wodurch die Zeit für den Empfang und die Verarbeitung aller Ereignisse durch den Webhook-Endpoint verlängert wird.

In diesem Leitfaden wird erläutert, wie Sie diesen Prozess beschleunigen können, indem Sie die nicht zugestellten Ereignisse manuell verarbeiten.

Webhook-Ereignisse auflisten

Rufen Sie die List Events API mit den folgenden Parametern auf:

  • ending_before: Geben Sie eine Ereignis-ID an, die gesendet wurde, kurz bevor der Webhook-Endpoint nicht mehr verfügbar war.
  • types: Geben Sie die Liste der abzurufenden Ereignistypen an.
  • delivery_success: Auf false setzen, um Ereignisse abzurufen, die nicht erfolgreich an mindestens einen Ihrer Webhook-Endpoints gesendet wurden.

Stripe gibt nur Ereignisse zurück, die in den letzten 30 Tagen erstellt wurden.

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

Standardmäßig gibt die Antwort bis zu 10 Ereignisse zurück. Um alle Ereignisse abzurufen, verwenden Sie den automatischen Seitenumbruch nach dem Abrufen der Ergebnisse.

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

Die Verwendung von ending_before mit automatischem Seitenumbruch gibt Ereignisse in chronologischer Reihenfolge zurück. Auf diese Weise können Sie Ereignisse in der erstellten Reihenfolge verarbeiten.

Die Ereignisse verarbeiten

Verarbeiten Sie nur erfolglos verarbeitete Ereignisse nach Ihrer eigenen Logik, um die mehrfache Verarbeitung eines einzelnen Ereignisses zu vermeiden, indem Sie zum Beispiel:

  • das Skript versehentlich zweimal hintereinander ausführen
  • das Skript gleichzeitig ausführen, während Stripe einige der nicht verarbeiteten Ereignisse automatisch erneut sendet
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

Definieren Sie die folgenden Funktionen, die die doppelte Verarbeitung verhindern:

  • is_processing_or_processed, um den Status des Ereignisses in Ihrer Datenbank zu überprüfen.
  • mark_as_processing, um Ihre Datenbank zu aktualisieren, um das Ereignis als „wird verarbeitet“ zu markieren.
  • mark_as_processed, um Ihre Datenbank zu aktualisieren, um das Ereignis als „verarbeitet“ zu markieren.

Auf automatische Wiederholungsversuche reagieren

Stripe betrachtet Ihre manuell verarbeiteten Ereignisse immer noch als nicht zugestellt und startet daher automatisch Wiederholungsvesuche.

Wenn Ihr Webhook-Endpoint ein bereits verarbeitetes Ereignis empfängt, ignorieren Sie das Ereignis und geben Sie eine erfolgreiche Antwort zurück, um zukünftige Wiederholungen zu stoppen.

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
War diese Seite hilfreich?
JaNein
Benötigen Sie Hilfe? Kontaktieren Sie den Kundensupport.
Nehmen Sie an unserem Programm für frühzeitigen Zugriff teil.
Schauen Sie sich unser Änderungsprotokoll an.
Fragen? Sales-Team kontaktieren.
LLM? Lesen Sie llms.txt.
Unterstützt von Markdoc