Simular un payload de webhook de Stripe

Un mock GET que devuelve un evento payment_intent.succeeded con forma de Stripe, listo para alimentar tu controlador de webhook.

Esta plantilla te proporciona una URL activa que devuelve un evento payment_intent.succeeded en forma de Stripe, para que puedas construir y depurar un controlador de webhook sin activar pagos reales. Apunta tu controlador a la URL o copia la carga directamente en un archivo de prueba. Reproduce la forma del evento, no la firma de Stripe, por lo que es la herramienta adecuada para la lógica de análisis y la herramienta incorrecta para verificar Stripe-Signature.

Devuelve un evento listo para usar: aliméntalo directamente en tu propio controlador.

Payload de respuesta

{
  "id": "evt_1QsErTLl2dK9Nqi7",
  "object": "event",
  "type": "payment_intent.succeeded",
  "created": {{now.unix}},
  "data": {
    "object": {
      "id": "pi_3QsErTLl2dK9Nqi71m2XvBnR",
      "object": "payment_intent",
      "amount": 4999,
      "currency": "usd",
      "status": "succeeded"
    }
  }
}

Campos que vale la pena conocer

Campo Lo que significa
id Un ID de evento sintético: los ID reales de Stripe siguen la misma forma evt_... pero nunca se reutilizan.
type El tipo de evento sobre el que cambia tu controlador; edítalo para desencadenar una ruta de código diferente.
created Marca de tiempo Unix del evento, generada nuevamente en cada llamada a través de {{now.unix}}.
data.object.amount El monto del cargo en unidades menores (centavos) — 4999 significa $49.99.
data.object.status El estado de payment_intent; edita el cuerpo de la respuesta para probar otros estados como requires_action.

Crear el mock

curl -X POST https://quickmock.dev/api/mocks \
  -H 'Content-Type: application/json' \
  -d '{
  "method": "GET",
  "response_status": 200,
  "content_type": "application/json",
  "response_body": "{\"id\":\"evt_1QsErTLl2dK9Nqi7\",\"object\":\"event\",\"type\":\"payment_intent.succeeded\",\"created\":{{now.unix}},\"data\":{\"object\":{\"id\":\"pi_3QsErTLl2dK9Nqi71m2XvBnR\",\"object\":\"payment_intent\",\"amount\":4999,\"currency\":\"usd\",\"status\":\"succeeded\"}}}"
}'

Llamarlo

curl https://quickmock.dev/m/<slug>

Lo que obtienes

GET /m/<slug> -> 200 a Stripe-style payment_intent.succeeded event
data.object.amount is in minor units (cents)

En qué se diferencia de la realidad

Este es un evento estático recortado de un payload real de Stripe: sin encabezado Stripe-Signature, sin objetos vivos detrás de los ID. Úsalo para dar forma a la lógica de análisis de tu controlador, no para probar la verificación de firma.

Fuentes

Preguntas frecuentes

¿Es esta la API real de Stripe?
No. Es un evento estático recortado de un payload real de Stripe y servido desde tu propia URL simulada. Los ID son sintéticos y nada existe detrás de ellos: sin cargo, sin cliente, sin objeto en vivo para obtener.
¿Puedo probar la verificación de firmas con él?
No, y eso es deliberado. No hay un encabezado Stripe-Signature, porque producir uno requeriría el secreto de firma de Stripe. Prueba la verificación contra la propia CLI de Stripe; usa esto para todo lo posterior a la verificación de la firma.
¿Cómo pruebo un tipo de evento diferente?
Edita el cuerpo de la respuesta y cambia el campo type, además de lo que el nuevo evento lleve bajo data.object. Esa es la forma más rápida de ejercitar una rama de tu controlador que no puedes activar fácilmente en el modo de prueba de Stripe.

¿Listo para usarlo?

Ábrelo en el generador de mocks para ajustarlo primero

Combina bien con esta guía: Probar un receptor de webhook

Plantillas relacionadas

← Todas las plantillas

Última actualización: 2026-10-17