Le test webhook Stripe en local permet de valider vos handlers d'événements de paiement sur votre machine avant la production. Vous exposez votre app via une URL HTTPS publique et recevez des événements test-mode avec vérification de signature intacte.
Pourquoi Stripe a besoin d'une URL publique
Stripe livre les webhooks via Internet vers un endpoint configuré. Les adresses 127.0.0.1 sont injoignables — un tunnel localhost mappe une URL HTTPS publique vers votre processus local sans modification routeur.
Prérequis avant de tester
- Un compte Stripe en mode test.
- Une app locale avec route webhook (ex.
/api/webhooks/stripe). - Le secret de signature webhook configuré en variable d'environnement.
- Un outil tunnel qui préserve les en-têtes pour la vérification de signature.
Étapes : test webhook Stripe avec PortPreview
- Lancez votre application localement.
- Exécutez
npx portpreview 3000pour obtenir une URL HTTPS publique. - Dans Stripe Dashboard → Webhooks, ajoutez l'URL tunnel et votre chemin webhook.
- Sélectionnez les événements à tester (
checkout.session.completed,invoice.paid…). - Déclenchez des événements test et inspectez chaque livraison.
- Vérifiez que votre handler retourne 2xx et que la validation de signature passe.
Valider les signatures Stripe en local
Ne désactivez jamais la vérification de signature. Votre handler doit valider l'en-tête Stripe-Signature comme en production. Les échecs courants : mauvais secret, corps JSON parsé avant vérification, décalage d'horloge.
Stripe CLI vs tunnel localhost
Le CLI Stripe (stripe listen) convient aux checks rapides. Un tunnel offre une URL stable pour le Dashboard, le partage d'équipe et les tests multi-providers qui reflètent la configuration production.
Quand passer du local au staging
Le test local couvre la logique handler et la validation de signature. Passez en staging pour les secrets managés et les pipelines de release. Guide complet : déboguer les webhooks en local. Rejoignez la waitlist PortPreview.
Événements Stripe à tester
Priorisez checkout.session.completed, abonnements, échecs de paiement et flux Connect. Utilisez le rejeu webhook pour valider l'idempotence sans re-déclencher Stripe.