Todos los artículos
Eventos de pago fluyendo como webhooks hacia un inspector local con una firma verificada.
Stripewebhook debugginglocal testingpayments

Probar webhooks de Stripe en local: guía completa

Las pruebas locales de webhooks de Stripe te permiten validar los handlers de eventos de pago en tu máquina antes de pasar a producción. Ejecutas tu app en local, la expones mediante una URL HTTPS pública y recibes eventos reales de Stripe en modo test con la verificación de firma totalmente intacta.

Por qué los webhooks de Stripe necesitan una URL pública

Stripe entrega los eventos de webhook por la internet pública a una URL de endpoint configurada. Direcciones como 127.0.0.1:3000 son inalcanzables desde los servidores de Stripe, así que el desarrollo local necesita un puente. Un túnel a localhost asigna una URL HTTPS pública a tu proceso local sin cambios en el router ni el firewall.

Qué necesitas antes de probar

  • Una cuenta de Stripe en modo test.
  • Una app local con una ruta de webhook (por ejemplo /api/webhooks/stripe).
  • Tu secreto de firma de webhook de Stripe configurado en variables de entorno.
  • Una herramienta de túnel que preserve las cabeceras de la petición para la verificación de firma.

Paso a paso: probar webhooks de Stripe en local con PortPreview

  1. Inicia tu aplicación en local en el puerto deseado.
  2. Ejecuta npx portpreview 3000 para generar una URL HTTPS pública.
  3. En el Dashboard de Stripe, ve a Desarrolladores → Webhooks y añade la URL del túnel junto con tu ruta de webhook.
  4. Selecciona los eventos que quieres probar (por ejemplo checkout.session.completed, invoice.paid).
  5. Dispara eventos de prueba desde el Dashboard o la CLI de Stripe e inspecciona cada entrega.
  6. Verifica que tu handler devuelve una respuesta 2xx y que la validación de firma pasa.

PortPreview captura cabeceras, cuerpo y estado de respuesta para que puedas depurar entregas fallidas sin adivinar solo a partir de los logs del servidor.

Validar firmas de webhook de Stripe en local

Nunca desactives la verificación de firma durante el desarrollo. Stripe firma cada payload con tu secreto de webhook, y tu handler debe validar la cabecera Stripe-Signature exactamente igual que en producción. Las herramientas de túnel que preservan las cabeceras originales te permiten probar la ruta de código real.

Fallos de firma habituales durante las pruebas locales:

  • Usar el secreto de webhook equivocado (secreto del Dashboard vs. secreto de la CLI).
  • Leer un cuerpo JSON ya parseado antes de la verificación en lugar del cuerpo crudo de la petición.
  • Desfase de reloj que supera la ventana de tolerancia de Stripe.

Eventos que conviene probar en local

Checkout y suscripciones

Prueba checkout.session.completed, customer.subscription.created e invoice.payment_failed para confirmar el aprovisionamiento, las concesiones de acceso y la lógica de cobro pendiente.

Flujos de Connect y marketplace

Si usas Stripe Connect, valida los eventos de actualización de cuenta y las notificaciones de transferencia con cuentas conectadas de prueba antes de salir a producción.

Idempotencia y reintentos

Stripe reintenta las entregas fallidas. Usa el replay de webhooks para confirmar que tu handler procesa eventos duplicados de forma segura.

Stripe CLI vs. túnel a localhost

La CLI de Stripe puede reenviar eventos con stripe listen --forward-to, lo que funciona bien para comprobaciones rápidas. Un túnel a localhost te da una URL pública estable que puedes pegar en el Dashboard, compartir con tu equipo y usar con varios proveedores, no solo con Stripe. Muchos equipos usan ambos: la CLI para iterar rápido y los túneles para pruebas de integración que reflejan la configuración de producción.

Cuándo pasar de local a staging

Las pruebas locales cubren la lógica del handler, el parseo del payload y la validación de firma. Pasa a staging para comprobaciones específicas del entorno como secretos gestionados, migraciones de base de datos y pipelines de release de extremo a extremo. Para el trabajo diario en funciones de pago, probar webhooks de Stripe en local reduce la iteración de minutos a segundos.

Lee nuestra guía completa sobre depurar webhooks en local o únete a la lista de espera de PortPreview para flujos de túnel centrados en webhooks.

Preguntas frecuentes

¿Cómo pruebo webhooks de Stripe en localhost?
Ejecuta tu app en local, inicia un túnel con PortPreview para obtener una URL HTTPS pública y añade esa URL como endpoint de webhook en el Dashboard de Stripe. Dispara eventos en modo test e inspecciona cada entrega.
¿Funciona la verificación de firma de Stripe con un túnel?
Sí, siempre que tu túnel preserve las cabeceras y el cuerpo originales de la petición. PortPreview reenvía las cabeceras intactas para que la validación de Stripe-Signature funcione igual que en producción.
¿Debería usar la CLI de Stripe o un túnel a localhost?
La CLI de Stripe es rápida para depurar en solitario. Un túnel a localhost da una URL pública estable para configurar el Dashboard, compartir con el equipo y probar webhooks de varios proveedores reflejando la configuración de producción.