Probar un webhook de Stripe en local
Integrar los webhooks de Stripe suele obligar a disparar pagos reales en modo test para verificar el handler. Con Webhook Toolkit, genera un evento de Stripe firmado y válido con un clic, edita el payload y envíalo directamente a tu endpoint local. Tu verificación de Stripe-Signature se prueba al instante.
Verificar la firma en el servidor
En Node.js, tu handler debe validar el header antes de procesar el 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') {
// ...
}Acuérdate de pasar el raw body (sin parsear) a constructEvent, o la firma nunca coincidirá. Para recibir un evento real desde Stripe en tu localhost, crea un túnel Relay.
Getting signature verification failed instead of a clean 200? The Stripe signature validator recomputes the HMAC from your whsec, raw body and Stripe-Signature header and names the exact cause.
Preguntas frecuentes
¿Cómo probar un webhook de Stripe en local sin un pago real?
Usa el generador de arriba: elige el evento (p. ej. payment_intent.succeeded), pega tu signing secret whsec_…, indica la URL de tu handler local (vía el Relay o un endpoint Receiver) y haz clic en Firmar y enviar. El header Stripe-Signature se calcula exactamente igual que en Stripe.
¿El header Stripe-Signature generado es válido?
Sí. Sigue el esquema oficial t=timestamp,v1=HMAC_SHA256(timestamp.payload, secret). stripe.webhooks.constructEvent() lo validará sin error siempre que uses el signing secret correcto.
¿Puedo modificar el importe o el customer?
Sí, el payload es totalmente editable antes del envío. Cambia el importe, el customer ID, el estado… y reenvía tantas veces como necesites.
¿Diferencia con la CLI de Stripe?
La CLI de Stripe solo funciona para Stripe y requiere instalación. Webhook Toolkit gestiona también GitHub, Slack, Twilio, Mailgun y Shopify, desde el navegador, y captura/inspecciona las peticiones recibidas.