Accéder directement au contenu
Créez un compte
ou
connecter-vous
Logo de la documentation Stripe
/
Demander à l'assistant IA
Créez un compte
Connectez-vous
Démarrer
Paiements
Automatisation des opérations financières
Plateformes et places de marché
Gestion de fonds
Outils de développement
Démarrer
Paiements
Automatisation des opérations financières
Démarrer
Paiements
Automatisation des opérations financières
Plateformes et places de marché
Gestion de fonds
Aperçu
Gestion des versions
Journal des modifications
Mettre à niveau votre version de l'API
Actualiser votre version du SDK
Outils de développement
SDK
API
Tests
Workbench
Destinations d'événements
    Intégrer avec les événements
    Amazon EventBridge
    Endpoint de webhook
      Outil de création de webhook
      Contrôle des versions de webhook
      Corriger les erreurs de vérification de la signature du webhook
      Traiter les événements non envoyés
Workflows
CLI Stripe
Shell Stripe
Dashboard des développeurs
Boîte à outils des agents
Alertes d'intégrité de StripeDéveloppez avec des grands modèles de langage (LLM)Stripe pour Visual Studio CodeChargements de fichiers
Sécurité
Sécurité
Extensions Stripe
Stripe Apps
Connecteurs Stripe
Partenaires
Partner ecosystem
Certification des partenaires
AccueilOutils de développementEvent DestinationsWebhook endpoint

Corrigez les erreurs de vérification de la signature du webhook

Découvrez comment corriger une erreur courante lors de l'écoute d'événements de webhook.

Copier la page

Lorsque vous traitez des événements de webhook, nous vous recommandons de sécuriser votre endpoint en vérifiant que l’événement provient bien de Stripe. Pour ce faire, utilisez l’en-tête Stripe-Signature et appelez la fonction constructEvent() avec trois paramètres :

  • requestBody : la chaîne du corps de la demande envoyée par Stripe
  • signature : l’en-tête Stripe-Signature dans la requête envoyée par Stripe
  • endpointSecret: la clé secrète associée à votre endpoint
Ruby
Stripe::Webhook.construct_event(request_body, signature, endpoint_secret)

Cette fonction peut déclencher une erreur de vérification de la signature.

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

Si vous obtenez cette erreur, c’est qu’au moins l’un des trois paramètres que vous avez transmis à la fonction ci-dessus est incorrect. Les étapes suivantes expliquent comment vérifier que chaque paramètre est correctement défini.

Vérifier la clé secrète de l’endpoint

L’erreur la plus fréquente est l’utilisation d’une clé secrète d’endpoint erronée. Si vous utilisez un endpoint de webhook créé dans le Dashboard, ouvrez l’endpoint dans le Dashboard et cliquez sur le lien Révéler la clé secrète en haut de la page pour afficher la clé secrète.

Capture d'écran du Dashboard montrant où trouver la clé secrète du webhook

Si vous utilisez l’interface de ligne de commande Stripe, la clé secrète s’affiche sur le terminal lorsque vous exécutez la commande stripe listen.

Capture d'écran de l'interface de ligne de commande montrant où trouver la clé secrète du webhook

Dans les deux cas, la clé secrète commence par un préfixe whsec_, mais la clé elle-même est différente. Ne vérifiez pas les signatures sur les événements transmis par l’interface de ligne de commande en utilisant la clé secrète d’un endpoint géré par le Dashboard, ou l’inverse.

Enfin, imprimez l’endpointSecret utilisé dans votre code, et assurez-vous qu’il correspond à celui que vous avez trouvé ci-dessus.

Vérifier le corps de la requête

Le corps de la requête doit être la chaîne de caractères que Stripe envoie en encodage UTF-8 sans aucune modification. Lorsque vous l’imprimez en tant que chaîne, il ressemble à ceci :

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

Récupérer le corps de la requête brute

Certains cadres peuvent modifier le corps de la requête en ajoutant ou en supprimant des espaces, en réorganisant les paires clé-valeur, en convertissant la chaîne en JSON ou en changeant l’encodage. Dans tous ces cas, la vérification de la signature échoue.

Voici une liste non exhaustive de structures qui peuvent analyser ou modifier les données à l’aide de configurations courantes, ainsi que quelques conseils pour obtenir le corps de la requête brute.

CadreMéthode de recherche
Bibliothèque stripe-node avec ExpressSuivez notre guide de démarrage rapide de l’intégration.
Bibliothèque stripe-node avec Body ParserEssayez les solutions répertoriées dans ce problème GitHub.
Bibliothèque stripe-node avec App Router de Next.jsJetez un coup d’œil à cet exemple.
Bibliothèque stripe-node avec Pages Router de Next.jsEssayez de désactiver bodyParser et d’utiliser buffer(request), comme dans cet exemple.

Plateforme API AWS avec la fonction Lambda

Pour récupérer le corps de la requête brute pour la passerelle API AWS avec la fonction Lambda, configurez un modèle de mappage du corps dans la passerelle API, comme suit :

  • Content-Type : application/json
  • Contenu du modèle :
{ "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 } }

Ensuite, dans la fonction Lambda, accédez au corps brut avec la propriété de l’événement rawBody et aux en-têtes avec la propriété de l’événement headers.

Vérifier la signature

Imprimez le paramètre signature et confirmez qu’il ressemble à ceci :

t=xxx,v1=yyy,v0=zzz

Si ce n’est pas le cas, vérifiez si vous avez un problème dans votre code lorsque vous essayez d’extraire la signature de l’en-tête.

Cette page vous a-t-elle été utile ?
OuiNon
Besoin d'aide ? Contactez le service Support.
Rejoignez notre programme d'accès anticipé.
Consultez notre log des modifications.
Des questions ? Contactez l'équipe commerciale.
LLM ? Lire llms.txt.
Propulsé par Markdoc