Les codes d'état HTTP qui commencent par 4xx et par 5xx correspondent à des erreurs serveur. Ils indiquent que votre système a reçu une requête, mais n'est pas en mesure de la traiter. Dans ce cas, procédez aux vérifications suivantes :
Dans le Dashboard, examinez la réponse de votre serveur. Vous pourrez y trouver des informations complémentaires sur l'erreur rencontrée. Cela dépend de la configuration de votre serveur et des réponses aux erreurs qui ont été programmées.
Consultez vos journaux de serveurs à la recherche d'éventuels messages d'erreur ou d'avertissement. Ces derniers vous aideront à déterminer la source du problème (votre code de gestion des webhooks ou la configuration de votre serveur, par exemple).
Vérifiez que la version d'API de l'événement reçu est prise en charge par votre code. Les versions d'API définissent la structure de l'objet contenu dans un événement. Par conséquent, des erreurs peuvent survenir si l'événement entrant et votre code de traitement n'utilisent pas la même version.
Nous avons référencé ci-dessous quelques erreurs de traitement de requête courantes et les mesures de résolution associées.
Cette erreur indique que la procédure de vérification de signature de webhook a échoué. (Notez que la formulation du message peut varier d'une bibliothèque à l'autre.) Elle est généralement causée par les problèmes suivants :
le secret de signature de webhook (whsec_
) utilisé pour la procédure de vérification n'est pas le bon.
Assurez-vous d'utiliser le secret qui correspond à l'endpoint de webhook qui transmet l'événement. Vous pouvez le consulter dans le Dashboard en sélectionnant l'endpoint concerné.
Si vous utilisez l'interface de ligne de commande de Stripe, exécutez la commande stripe listen
pour générer et afficher le secret de signature de webhook à utiliser.
le corps de la requête a été modifié avant la vérification de la signature du webhook.
Le corps de la requête entrante de Stripe doit être conservé tel quel.
Si votre code le décompose, le formate ou y apporte une quelconque modification avant la vérification de la signature, la procédure échouera.
Corrigez ou supprimez toute portion de code (code de votre intergiciel y compris) susceptible d'apporter des modifications au corps de la requête entrante, puis réessayez.
Remarque : il arrive fréquemment que Node.js modifie les requêtes entrantes, essayez donc d'extraire le corps avant son exécution.
Cette erreur indique que l'événement est trop ancien pour que la vérification aboutisse. (Notez que la formulation du message peut varier d'une bibliothèque à l'autre.) Les signatures de webhook ont une dimension temporelle et doivent être vérifiées rapidement après réception.
Dans ce cas, procédez aux vérifications suivantes :
la date et l'heure sont correctement configurées sur votre serveur ;
les signatures de webhook entrantes sont vérifiées dès la réception des événements, sans délai.
Ces erreurs sont généralement liées à une exception renvoyée par le code, à une erreur d'analyse ou à un changement majeur.
La plupart du temps, ce type d'erreur est dû à un changement au niveau du serveur ou de l'infrastructure responsable du traitement des webhooks. La modification ou l'ajout de code, une mise à jour de serveur ou une modification de la configuration peuvent engendrer un nouveau mode d'échec ou une incompatibilité.
Lorsque vous rencontrez ce type d'erreur, consultez vos journaux à la recherche d'informations complémentaires. Nous ne pouvons pas vous indiquer l'emplacement de ces journaux, car il varie selon la configuration du serveur, le système d'exploitation, le serveur Web, le langage de programmation utilisé et bien d'autres facteurs. Nous vous recommandons de consulter les journaux d'erreurs et la configuration des journaux pour l'ensemble des composantes impliquées dans la réception des webhooks, notamment :
votre langage de programmation (Ruby, Python, PHP, Java, Node.js, Go, .NET, etc.) ;
votre serveur Web (Nginx, Apache, Microsoft IIS, etc.) ;
votre fournisseur cloud ou de serveur (Amazon Web Services, Google Cloud Computing, Cloudflare, etc.).