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-StatuswarnungenAufbau mit LLMsStripe für Visual Studio CodeHochgeladene Dateien
Sicherheit
Sicherheit
Extend Stripe
Stripe-Apps
Stripe Connectors
Partner
Partner-Ecosystem
Partner-Zertifizierung
StartseiteEntwickler-ToolsEvent DestinationsWebhook endpoint

Signaturprüfungsfehler von Webhooks beheben

Erfahren Sie, wie Sie einen häufigen Fehler beim Abhören von Webhook-Ereignissen beheben.

Seite kopieren

Bei der Verarbeitung von Webhook-Ereignissen empfehlen wir, Ihren Endpoint zu sichern, indem Sie überprüfen, ob das Ereignis von Stripe stammt. Hierfür können Sie den Stripe-Signature-Header verwenden und die Funktion constructEvent() mit drei Parametern aufrufen:

  • requestBody: der von Stripe gesendete Anfragetext für die Hauptzeichenfolge
  • signature: der Stripe-Signature-Header in der von Stripe gesendeten Anfrage
  • endpointSecret: der mit Ihrem Endpoint verknüpfte Geheimschlüssel
Ruby
Stripe::Webhook.construct_event(request_body, signature, endpoint_secret)

Es ist möglich, dass durch diese Funktion ein Signaturprüfungsfehler ausgelöst wird.

Webhook signature verification failed. Err: No signatures found matching the expected signature for payload.

Wenn Sie diesen Fehler erhalten, ist mindestens einer der drei Parameter, die Sie an die obige Funktion übergeben haben, falsch. In den folgenden Schritten wird erläutert, wie Sie überprüfen, ob die einzelnen Parameter korrekt sind.

Endpoint-Geheimschlüssel prüfen

Der häufigste Fehler ist die Verwendung des falschen Endpoint-Geheimschlüssels. Wenn Sie einen Webhook-Endpoint verwenden, der im Dashboard erstellt wurde, öffnen Sie den Endpoint im Dashboard und klicken oben auf der Seite auf den Link Geheimschlüssel anzeigen, um den Schlüssel anzuzeigen.

Dashboard-Screenshot, der zeigt, wo der geheime Webhook-Geheimschlüssel zu finden ist

Wenn Sie die Stripe-CLI verwenden, wird der Geheimschlüssel im Terminal angezeigt, wenn Sie den Befehl stripe listen ausführen.

cli-Screenshot, der zeigt, wo der Webhook-Geheimschlüssel zu finden ist

In beiden Fällen beginnt der Geheimschlüssel mit einem whsec_-Präfix, der Schlüssel selbst ist jedoch anders. Überprüfen Sie Signaturen von Ereignissen, die von der CLI weitergeleitet werden, nicht mithilfe des Schlüssels von einem vom Dashboard verwalteten Endpoint oder umgekehrt.

Geben Sie schließlich den in Ihrem Code verwendeten endpointSecret ein und vergewissern Sie sich, dass er mit den oben gefundenen Angaben übereinstimmt.

Anfragetext prüfen

Der Anfragetext muss die Haupttext-Zeichenfolge sein, die Stripe in UTF-8-Codierung ohne Änderungen sendet. Wenn Sie dies als Zeichenfolge aufschreiben, sollte es in etwa so aussehen:

{ "id": "evt_xxx", "object": "event", "data": { ... } }

Den reinen Anfragetext abrufen

Einige Frameworks können den Anfragetext bearbeiten, indem sie zum Beispiel Leerzeichen hinzufügen oder entfernen, die Schlüsselwertpaare neu anordnen, die Zeichenfolge in das JSON-Format konvertieren oder die Codierung ändern. Alle diese Fälle führen zu einer fehlgeschlagenen Signaturprüfung.

Im Folgenden finden Sie eine nicht vollständige Liste der Frameworks, die die Daten mithilfe gängiger Konfigurationen analysieren oder ändern können, sowie einige Tipps zum Abrufen des Raw-Anfragetextes.

FrameworkAbrufmethode
Stripe-Node-Bibliothek mit ExpressFolgen Sie unserem Quickstart-Leitfaden für Integrationen.
Stripe-Node-Bibliothek mit Body ParserProbieren Sie die Lösungen aus, die in diesem GitHub-Problem aufgeführt sind.
Stripe-Node-Bibliothek mit Next.js App-RouterSehen Sie sich dieses funktionierende Beispiel an.
Stripe-Node-Bibliothek mit Next.js Pages-RouterVersuchen Sie, bodyParser zu deaktivieren und buffer(request) zu verwenden, wie in diesem Beispiel gezeigt.

AWS API Gateway mit Lambda-Funktion

Um den reinen Anfragetext für das AWS API Gateway mit Lambda-Funktion im API Gateway abzurufen, richten Sie eine Body-Mapping-Vorlage ein, die in etwa so aussieht:

  • Inhaltstyp: application/json
  • Vorlageninhalte:
{ "method": "$context.httpMethod", "body": $input.json('$'), "rawBody": "$util.escapeJavaScript($input.body).replaceAll("\\'", "'")", "headers": { #foreach($param in $input.params().header.keySet()) "$param": "$util.escapeJavaScript($input.params().header.get($param))" #if($foreach.hasNext),#end #end } }

Greifen Sie dann in der Lambda-Funktion auf den Raw-Body mit der rawBody-Eigenschaft des Ereignisses und die Header mit der headers-Eigenschaft des Ereignisses zu.

Signatur prüfen

Geben Sie den signature-Parameter ein und bestätigen Sie, dass er in etwa so aussieht:

t=xxx,v1=yyy,v0=zzz

Wenn nicht, prüfen Sie, ob ein Problem in Ihrem Code vorliegt, wenn versucht wird, die Signatur aus dem Header zu extrahieren.

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