Webhooks

Simulando o Ciclo de Vida de um Webhook do Stripe

Vá além de um payload estático — simule a sequência real de eventos que um pagamento dispara, do "created" ao "succeeded".

Um payload só não testa o fluxo inteiro

Testar com um único evento payment_intent.succeeded valida se seu handler processa aquele formato — mas não testa se seu sistema trata corretamente a sequência de eventos que um pagamento real dispara: criação, processamento, e só depois sucesso (ou falha). Veja a referência de endpoints e payload do Stripe se você só precisa de um exemplo estático.

Modelando o ciclo de vida com Response Sequences

Configure uma Mock Rule com Response Sequences pra que cada chamada ao seu endpoint de recebimento devolva o próximo evento da sequência:

// Mock Rule: POST / → Response Sequences, mode: last
[
  { "status": 200, "body": "{\"id\":\"evt_1\",\"type\":\"payment_intent.created\",\"data\":{\"object\":{\"id\":\"pi_1\",\"status\":\"requires_payment_method\"}}}" },
  { "status": 200, "body": "{\"id\":\"evt_2\",\"type\":\"payment_intent.processing\",\"data\":{\"object\":{\"id\":\"pi_1\",\"status\":\"processing\"}}}" },
  { "status": 200, "body": "{\"id\":\"evt_3\",\"type\":\"payment_intent.succeeded\",\"data\":{\"object\":{\"id\":\"pi_1\",\"status\":\"succeeded\"}}}" }
]

Chame o mesmo endpoint 3 vezes seguidas (ou use o botão Replay do dashboard) e seu handler recebe a sequência completa, um evento por chamada — exatamente como testaria uma máquina de estados de pedido.

E a assinatura stripe-signature?

🔒
Limitação real, sem rodeio: o motor de templates do httpdrop não tem um helper de HMAC/assinatura — não dá pra gerar um header stripe-signature criptograficamente válido a partir do mock. Isso significa que a etapa de validação de assinatura do seu webhook handler precisa ser testada separadamente (ex.: bypassada por uma flag de ambiente de teste, ou testada com um payload+secret de teste gerado pela própria lib do Stripe). O httpdrop simula o payload e a sequência de eventos, não a criptografia da entrega.

Na prática, isso não é um problema pro que a maioria dos times testa no dia a dia: a lógica de negócio que reage a cada tipo de evento. A assinatura é testada uma vez, isoladamente, com as ferramentas do próprio Stripe (stripe listen/stripe trigger da Stripe CLI).

🚀
Próximo passo: veja os endpoints REST do Stripe (Payment Intents) pra completar o fluxo de checkout, não só o webhook.
Pronto para implementar? Consulte a documentação técnica completa com referência de API, exemplos de código e parâmetros detalhados.
Ver documentação →