Aller au contenu
Tous les articles

Confiance et conformité

Secret de signature de webhook : Stripe, Shopify, WooCommerce

Ce qu''est un secret de signature de webhook, pourquoi Provedly ne marque un achat comme vérifié que si la signature est valide, et comment connecter Stripe ou Shopify en toute sécurité.

L'équipe Provedly··6 min de lecture

Un secret de signature de webhook est une clé partagée qui permet à Provedly de confirmer qu'un événement d'achat provient réellement de Stripe ou de Shopify et n'a pas été modifié en chemin. C'est ce qui permet à Provedly d'apposer la mention « Achat vérifié » sur une notification : cette mention signifie que la signature a été validée. Cet article explique ce qu'est un webhook, ce que fait la signature, comment connecter chaque plateforme, et ce que le secret permet ou ne permet pas s'il fuite.

Les webhooks en un paragraphe. Quand un événement se produit sur votre plateforme de paiement, comme une commande finalisée, la plateforme peut envoyer une requête HTTP à une URL que vous indiquez, avec les détails dans le corps. Cette requête est un webhook. C'est la plateforme qui envoie l'information à Provedly, plutôt que Provedly qui la réclame sans cesse. Pour Shopify, l'événement concerné est orders/create. Pour Stripe, il s'agit généralement de checkout.session.completed ou payment_intent.succeeded.

Le problème de toute URL qui accepte un POST, c'est que n'importe qui peut y envoyer un POST. Sans contrôle, quelqu'un pourrait envoyer à Provedly une fausse « commande » et la faire afficher comme réelle. La signature est ce contrôle.

Ce que fait la signature

Stripe et Shopify signent chaque webhook avec HMAC-SHA256. La plateforme prend le corps brut de la requête, calcule une empreinte avec un secret que seuls elle et vous connaissez, et envoie cette empreinte dans un en-tête. Provedly recalcule l'empreinte avec le même secret et compare. Si elles correspondent, deux choses sont établies à la fois : la requête vient de quelqu'un qui détient le secret, et le corps n'a pas été modifié en transit.

Si elles ne correspondent pas, la requête est rejetée. Elle n'est ni affichée, ni enregistrée comme achat, ni comptée. Il n'existe pas de catégorie « achat non vérifié ». Il y a les achats vérifiés, passés par ce contrôle, et les enregistrements que le marchand a ajoutés autrement, qui sont toujours étiquetés : « Sample » pour les lignes ajoutées à la main, « Imported » pour celles issues d'un CSV ou de l'API Records. Il n'y a rien entre les deux.

C'est tout le fondement de la mention « Achat vérifié », et c'est pourquoi nous pouvons indiquer sur la page de vérification publique quelles sources sont connectées et quand le dernier achat vérifié est arrivé. /fr/blog/reading-the-verification-page explique comment un acheteur lit cette page.

Connecter Shopify

Si vous avez installé Provedly depuis le Shopify App Store, vous ne manipulez pas du tout le secret. Shopify enregistre les webhooks à l'installation de l'application et les signe avec un secret lié à l'application. Provedly les vérifie automatiquement. La configuration est décrite dans /fr/blog/shopify-setup-guide.

Une chose à savoir : en raison du programme Protected Customer Data de Shopify, les premiers webhooks peuvent arriver sans le nom de l'acheteur. Ils sont tout de même signés et vérifiés ; la notification indique simplement « Someone » jusqu'à ce que l'accès soit approuvé. /fr/blog/shopify-someone-protected-customer-data donne les détails.

Connecter Stripe

Pour les sites hors Shopify, vous créez un point de terminaison webhook dans votre tableau de bord Stripe qui pointe vers l'URL fournie par Provedly, vous sélectionnez les événements, et Stripe vous affiche un secret de signature pour ce point de terminaison. Il commence par whsec_. Vous le collez une fois dans les réglages de la source dans Provedly.

Quelques points pour bien faire les choses.

  • Utilisez un point de terminaison dédié. Créez un nouveau point de terminaison pour Provedly plutôt que d'en réutiliser un qu'écoute votre propre application. Chaque point de terminaison a son propre secret : un problème sur l'un ne touche pas l'autre.
  • Ne sélectionnez que les événements nécessaires. Provedly a besoin des paiements finalisés. Il n'a pas besoin des mises à jour clients, des litiges ni des virements.
  • Mode live, pas mode test. Les événements du mode test sont signés avec un autre secret et décrivent des paiements qui n'ont pas eu lieu. Connectez un point de terminaison en mode live à votre site de production pour que des paiements de test ne soient jamais présentés comme réels.
  • Collez-le une seule fois. Après l'enregistrement, considérez le secret comme stocké. Si vous le perdez de vue, régénérez-le dans Stripe et collez le nouveau.

Ce contre quoi le secret protège

Menace La signature l'arrête-t-elle ?
Quelqu'un qui envoie une fausse commande en POST à votre URL Provedly Oui
Un proxy qui modifie le montant ou le produit en transit Oui
Le renvoi d'un ancien événement authentique En grande partie ; les deux plateformes incluent des horodatages et des identifiants d'événement, qui permettent au destinataire de rejeter les événements périmés ou en double
Quelqu'un disposant de vos identifiants Stripe qui crée de vrais remboursements ou paiements Non ; cela relève de la sécurité du compte, pas de celle des webhooks

La dernière ligne compte. Le secret de signature vérifie que les événements viennent de la plateforme. Il ne rend pas la plateforme elle-même digne de confiance, et ne remplace pas l'authentification à deux facteurs sur votre compte Stripe ou Shopify.

Si le secret fuite

Un secret de signature Stripe divulgué permet à quelqu'un de forger des événements webhook vers le point de terminaison auquel il appartient. Dans le cas de Provedly, cela signifierait de faux achats vérifiés, soit précisément ce que tout le système existe pour empêcher. La solution est rapide : dans Stripe, régénérez le secret de ce point de terminaison, ce qui invalide immédiatement l'ancien, puis collez la nouvelle valeur dans Provedly.

Le secret ne permet ni de débiter des cartes, ni de lire des données clients, ni de se connecter à Stripe. Sa portée se limite à la signature des événements d'un point de terminaison. C'est pourquoi un commerçant peut le manipuler sans danger, et pourquoi nous le demandons plutôt qu'un accès plus large à l'API.

Pour Shopify, le secret de l'application est détenu par Provedly et Shopify, pas par le marchand : il n'y a donc rien que le marchand puisse divulguer ou renouveler.

Pourquoi c'est important pour le secteur

La plupart des outils de cette catégorie, en octobre 2026 et d'après leurs fiches, acceptent des données saisies par le marchand pour les notifications et les nombres de visiteurs, sans les distinguer visuellement des données issues des plateformes. Certains vérifient bien les webhooks, mais affichent ensuite les lignes importées d'un CSV dans le même style. La signature n'a d'utilité que si le produit la traite comme une frontière : signé d'un côté, étiqueté Imported ou Sample de l'autre, et aucun moyen de faire passer une ligne d'un côté à l'autre.

C'est cette frontière que la règle de la FTC sur les faux témoignages, en vigueur depuis fin 2024, demande implicitement aux marchands de pouvoir démontrer. Un webhook signé est ce qui se rapproche le plus d'un reçu pour une notification de preuve sociale.

Questions fréquentes

Puis-je connecter Shopify et Stripe à un même site ?

Oui. Une boutique Shopify qui vend aussi via un checkout Stripe en dehors de Shopify peut connecter les deux. La page de vérification les liste toutes deux comme sources, et les achats de chacune sont vérifiés indépendamment.

Le webhook contient-il des numéros de carte ?

Non. Ni Stripe ni Shopify n'incluent les données de carte dans les webhooks de commande ou de paiement. Ce dont Provedly a besoin pour une notification, c'est du produit, d'un prénom lorsqu'il est fourni, d'une localisation approximative et de l'heure.

Et si mon compte Stripe est en mode test pendant que je construis le site ?

Tenez les événements du mode test à l'écart de votre site de production. Au moment de la mise en ligne, créez un point de terminaison en mode live dans Stripe et connectez celui-là, pour que seuls de vrais paiements puissent devenir des achats vérifiés.

Connectez une source signée dès aujourd'hui et laissez la mention « Achat vérifié » faire son travail ; les plans sont sur /fr/pricing.

webhooksstripeshopifysécurité

Recevez les nouveaux articles par e-mail

Preuve sociale honnête, achats vérifiés et ce qui fait vraiment bouger la conversion. Quelques e-mails par mois au maximum ; désinscription en un clic.

Nous vous envoyons un e-mail de confirmation. Votre adresse sert uniquement à cette newsletter ; consultez la politique de confidentialité (en anglais).

Affichez des preuves que vous pouvez assumer.

Formule gratuite, un site, 2,000 impressions par mois, achats vérifiés inclus. Sur la formule gratuite, le badge renvoie vers votre page de vérification, et c'est tout l'intérêt.