Een HTTP-statuscode in de reeks 400-499 of 500-599 komt van je server, en geeft aan dat je systeem het verzoek heeft ontvangen, maar het niet kon verwerken. Probeer het volgende:
Kijk in het dashboard naar het antwoord van je server voor aanvullende informatie: Het is mogelijk dat er geen extra informatie in het antwoord staat. Dit hangt af van hoe je server is geconfigureerd en hoe je code is ontworpen om op fouten te reageren
Controleer de logboeken van je server op fouten of waarschuwingen: Deze fouten moeten je wijzen naar de bron van de foutmelding, wat de afhandelingscode van je webhook of een configuratieprobleem op je server kan zijn
Bevestig dat de ontvangen gebeurtenis een API-versie heeft die jouw code aankan: API-versies bepalen de structuur van het object in een gebeurtenis. Een verkeerde API-versie tussen een inkomende gebeurtenis en jouw verwerkingscode kan leiden tot onverwachte fouten
Een aantal veel voorkomende fouten die statuscodes 4xx en 5xx veroorzaken en de oplossingen ervoor staan hieronder.
Deze of een soortgelijke fout (de formulering kan per bibliotheek verschillen) betekent dat de verificatie van de webhook-handtekening is mislukt. Deze fout wordt meestal veroorzaakt door een van de volgende zaken:
De verkeerde geheime sleutel voor ondertekening van de webhook (whsec_
) werd gebruikt tijdens het verificatieproces van de handtekening
Zorg ervoor dat je de geheime sleutel voor ondertekening van de webhook gebruikt dat overeenkomt met het webhookeindpunt dat de gebeurtenis levert. Je kunt deze vinden in het dashboard na het selecteren van een specifiek webhook-eindpunt
Als je Stripe-CLI gebruikt genereert het een geheime sleutel voor ondertekening van de webhook die wordt weergegeven en die je kunt gebruiken als je de opdracht stripe listen
uitvoert
De hoofdtekst van het verzoek werd gewijzigd voordat de verificatie van de webhook-handtekening plaatsvond
Het verificatieproces van de webhook-handtekening vereist de onbewerkte, ongewijzigde inhoud van het inkomende verzoek van Stripe om te kunnen werken
Als je code de hoofdtekst van het verzoek parseert, formatteert of anderszins wijzigt vóór de verificatie van de handtekening, dan zie je een fout zoals deze
Code aanpassen of verwijderen, inclusief middleware, die mogelijk de onbewerkte hoofdtekst van het inkomende verzoek wijzigt en probeer het opnieuw
Opmerking: Node.js middleware wijzigt vaak de hoofdtekst van inkomende verzoeken. Probeer de onbewerkte hoofdtekst eruit te halen voordat andere middleware draait
Deze of een soortgelijke fout (de formulering kan per bibliotheek verschillen) betekent dat de ontvangen gebeurtenis te oud is om te kunnen verifiëren. Webhook-handtekeningen hebben een tijdscomponent, en moeten kort na ontvangst worden geverifieerd.
Probeer het volgende:
Bevestig dat de tijd en datum op je server correct zijn ingesteld
Zorg ervoor dat je inkomende webhook-handtekeningen verifieert zodra je gebeurtenissen ontvangt, zonder vertraging
Deze fouten worden meestal veroorzaakt door code die een uitzondering maakt, een parsing-fout of een of andere brekende wijziging.
Meestal wordt deze soort fout veroorzaakt door een of andere verandering op de server of infrastructuur die verantwoordelijk is voor het accepteren en verwerken van webhooks. Nieuwe of gewijzigde code, een serverupdate of een configuratieverandering kan voor een nieuwe foutmodus of incompatibiliteit zorgen.
Als je deze fout tegenkomt, controleer dan de foutenlogboeken van je server voor meer informatie. De locatie van foutenlogboeken varieert per server, op basis van configuratie, besturingssysteem, webserver, de gebruikte programmeertalen en andere factoren, dus we kunnen geen specifieke instructies geven. We raden je aan zowel de logboeken als de configuratie van het foutenlogboek te controleren op een van de volgende zaken die je mogelijk gebruikt om webhooks te ontvangen:
Je programmeertaal (Ruby, Python, PHP, Java, Node.js, Go, .NET, etc.)
Je webserver (Nginx, Apache, Microsoft IIS, enz.)
Je cloud- of serverprovider (Amazon Web Services, Google Cloud Computing, Cloudflare, etc.)