Ein HTTP-Statuscode im Bereich von 400–499 bzw. 500–599 wird von Ihrem Server ausgegeben und gibt an, dass Ihr System die Anfrage erhalten hat, sie aber nicht verarbeiten konnte. Versuchen Sie Folgendes:
Schauen Sie sich für weitere Informationen die Antwort Ihres Servers im Dashboard an: In der Antwort sind womöglich keine weiteren Informationen aufgeführt – das hängt davon ab, wie Ihr Server konfiguriert ist und wie Ihr Code auf Fehler reagieren soll
Überprüfen Sie Ihre Serverprotokolle auf Fehler oder Warnungen: Diese Fehler sollten Sie auf die Quelle der Fehlerantwort verweisen, was Ihr Code zur Handhabung von Webhooks oder ein Konfigurationsproblem auf Ihrem Server sein könnte
Überprüfen Sie, ob das Ereignis eine API-Version erhalten hat, mit der Ihr Code umgehen kann: API-Versionen legen die Struktur des in einem Ereignis enthaltenen Objekts fest; eine nicht übereinstimmende API-Version zwischen einem eingehenden Ereignis und Ihrem Verarbeitungscode kann zu unerwarteten Fehlern führen.
Einige häufige Fehler, die die Statuscodes 4xx und 5xx verursachen, sowie ihre Lösungen sind unten aufgeführt.
Dieser oder ein ähnlicher Fehler (die Formulierung kann je nach Bibliothek variieren) bedeutet, dass der Prozess für die Webhook-Signaturverifizierung fehlgeschlagen ist. Dieser Fehler hat normalerweise die folgende Ursache:
Während des Prozesses für die Signaturverifizierung wurde der falsche Webhook-Geheimschlüssel für die Signatur (whsec_
) verwendet
Achten Sie darauf, dass Sie den Webhook-Geheimschlüssel für die Signatur verwenden, der dem Webhook-Endpoint für die Übertragung des Ereignisses entspricht. Diesen können Sie im Dashboard finden, nachdem Sie einen spezifischen Webhook-Endpoint ausgewählt haben.
Falls Sie Stripe CLI verwenden, wird dies einen Webhook-Geheimschlüssel für die Signatur erstellen und anzeigen, den Sie verwenden können, wenn Sie den Befehl stripe listen
ausführen.
Der Text der Anfrage wurde vor der Webhook-Signaturverifizierung verändert
Damit die Webhook-Signaturverifizierung funktioniert, ist der unveränderte Text der eingehenden Anfrage von Stripe erforderlich.
Falls Ihr Code den Text der Anfrage vor der Webhook-Signaturverifizierung zerlegt, formatiert oder anderweitig verändert, sehen Sie solche einen Fehler.
Ändern oder entfernen Sie den Code, einschließlich Middleware, der den Text der eingehenden Anfrage verändern könnte, und versuchen Sie es erneut.
Hinweis: Häufig verändert die Middleware Node.js den Text der eingehenden Anfragen; versuchen Sie, den unveränderten Text zu extrahieren, bevor eine Middleware ausgeführt wird.
Dieser oder ein ähnlicher Fehler (die Formulierung kann je nach Bibliothek variieren) bedeutet, dass das Ereignis zu alt für eine erfolgreichen Verifizierung ist. Webhook-Signaturen haben eine Zeitkomponente und müssen kurz nach Eingang verifiziert werden.
Versuchen Sie Folgendes:
Überprüfen Sie, ob Uhrzeit und Datum auf Ihrem Server richtig eingestellt sind.
Achten Sie darauf, dass Sie eingehende Webhook-Signaturen nach Eingang schnellstmöglich und ohne Verzögerung verifizieren.
Diese Fehlerart entsteht in der Regel dadurch, dass der Code eine Ausnahme, einen Parsing-Fehler oder eine Unterbrechung auslösende Änderung ausgibt.
Meist ist diese Fehlerart auf eine Änderung auf dem Server oder der Infrastruktur zurückzuführen, die für die Annahme und Verarbeitung der Webhooks verantwortlich ist. Neuer oder geänderter Code, ein Serverupdate oder eine Änderung der Konfiguration können einen neuen Fehlermodus oder Inkompatibilität auslösen.
Wenn Sie diesen Fehler sehen, sollten Sie die Fehlerprotokolle Ihres Servers auf weitere Informationen hin überprüfen. Der Speicherort der Fehlerprotokolle variiert von Server zu Server und ist von Konfiguration, Betriebssystem, Webserver, verwendeter Programmiersprache und anderen Faktoren abhängig, sodass wir dazu keine genauen Anweisungen geben können. Wir empfehlen Ihnen, sowohl die Protokolle als auch die Fehlerprotokollkonfiguration auf die folgenden Punkte hin zu überprüfen, die Sie für den Empfang von Webhooks verwenden können:
Ihre Programmiersprache (Ruby, Python, PHP, Java, Node.js, Go, .NET usw.)
Ihr Webserver (Nginx, Apache, Microsoft IIS usw.)
Ihr Cloud- oder Server-Anbieter (Amazon Web Services, Google Cloud Computing, Cloudflare usw.)