Testare un webhook Stripe in locale
Integrare i webhook Stripe spesso costringe a scatenare pagamenti reali in test per verificare il proprio handler. Con Webhook Toolkit, generi un evento Stripe firmato e valido con un clic, modifichi il payload e lo invii direttamente al tuo endpoint locale. La tua verifica di Stripe-Signature viene testata all'istante.
Verificare la firma lato server
Lato Node.js, il tuo handler deve validare l'header prima di elaborare l'evento:
const sig = req.headers['stripe-signature'];
const event = stripe.webhooks.constructEvent(
rawBody, sig, process.env.STRIPE_WEBHOOK_SECRET
);
if (event.type === 'payment_intent.succeeded') {
// ...
}Ricordati di passare il raw body (non parsato) a constructEvent, altrimenti la firma non corrisponderà mai. Per ricevere un evento reale da Stripe sul tuo localhost, crea un tunnel Relay.
Domande frequenti
Come testare un webhook Stripe in locale senza un pagamento reale?
Usa il generatore qui sopra: scegli l'evento (es. payment_intent.succeeded), incolla il tuo signing secret whsec_…, indica l'URL del tuo handler locale (tramite il Relay o un endpoint Receiver) poi clicca su Firma & invia. L'header Stripe-Signature viene calcolato esattamente come fa Stripe.
L'header Stripe-Signature generato è valido?
Sì. Segue lo schema ufficiale t=timestamp,v1=HMAC_SHA256(timestamp.payload, secret). stripe.webhooks.constructEvent() lo validerà senza errori finché usi il signing secret corretto.
Posso modificare l'importo o il customer?
Sì, il payload è completamente modificabile prima dell'invio. Cambia l'importo, il customer ID, lo stato… poi reinvia tutte le volte che serve.
Differenza con la CLI di Stripe?
La CLI di Stripe funziona solo per Stripe e richiede un'installazione. Webhook Toolkit gestisce anche GitHub, Slack, Twilio, Mailgun e Shopify, nel browser, e cattura/ispeziona le richieste ricevute.