Todos os artigos
Eventos de pagamento fluindo como webhooks para um inspetor local com uma assinatura verificada.
Stripewebhook debugginglocal testingpayments

Testar webhooks do Stripe localmente: guia completo

O teste local de webhooks do Stripe permite validar os handlers de eventos de pagamento na sua máquina antes de subir para produção. Você executa seu app localmente, expõe-no por uma URL HTTPS pública e recebe eventos reais do Stripe em modo de teste com a verificação de assinatura totalmente preservada.

Por que os webhooks do Stripe precisam de uma URL pública

O Stripe entrega eventos de webhook pela internet pública a uma URL de endpoint configurada. Endereços como 127.0.0.1:3000 são inacessíveis a partir dos servidores do Stripe, então o desenvolvimento local exige uma ponte. Um túnel para localhost mapeia uma URL HTTPS pública para o seu processo local sem mudanças no roteador ou firewall.

O que você precisa antes de testar

  • Uma conta Stripe em modo de teste.
  • Um app local com uma rota de webhook (por exemplo /api/webhooks/stripe).
  • O segredo de assinatura do webhook do Stripe configurado em variáveis de ambiente.
  • Uma ferramenta de túnel que preserve os cabeçalhos da requisição para a verificação de assinatura.

Passo a passo: testar webhooks do Stripe localmente com o PortPreview

  1. Inicie sua aplicação localmente na porta desejada.
  2. Execute npx portpreview 3000 para gerar uma URL HTTPS pública.
  3. No Dashboard do Stripe, vá em Desenvolvedores → Webhooks e adicione a URL do túnel mais o caminho do seu webhook.
  4. Selecione os eventos que deseja testar (por exemplo checkout.session.completed, invoice.paid).
  5. Dispare eventos de teste pelo Dashboard ou pela CLI do Stripe e inspecione cada entrega.
  6. Verifique se o handler retorna uma resposta 2xx e se a validação de assinatura passa.

O PortPreview captura cabeçalhos, corpo e status da resposta para que você depure entregas falhas sem adivinhar apenas pelos logs do servidor.

Validar assinaturas de webhook do Stripe localmente

Nunca desative a verificação de assinatura durante o desenvolvimento. O Stripe assina cada payload com o seu segredo de webhook, e o handler deve validar o cabeçalho Stripe-Signature exatamente como em produção. Ferramentas de túnel que preservam os cabeçalhos originais permitem testar o caminho real do código.

Falhas de assinatura comuns durante o teste local:

  • Usar o segredo de webhook errado (segredo do Dashboard vs. segredo da CLI).
  • Ler um corpo JSON já parseado antes da verificação em vez do corpo bruto da requisição.
  • Diferença de relógio além da janela de tolerância do Stripe.

Eventos que vale a pena testar localmente

Checkout e assinaturas

Teste checkout.session.completed, customer.subscription.created e invoice.payment_failed para confirmar provisionamento, concessão de acesso e a lógica de cobrança em atraso.

Fluxos de Connect e marketplace

Se você usa o Stripe Connect, valide eventos de atualização de conta e notificações de transferência com contas conectadas de teste antes de ir ao ar.

Idempotência e retentativas

O Stripe repete entregas que falham. Use o replay de webhook para confirmar que o handler processa eventos duplicados com segurança.

Stripe CLI vs. túnel para localhost

A CLI do Stripe pode encaminhar eventos com stripe listen --forward-to, o que funciona bem para verificações rápidas. Um túnel para localhost oferece uma URL pública estável que você cola no Dashboard, compartilha com colegas e usa em vários provedores — não só no Stripe. Muitas equipes usam ambos: a CLI para iteração rápida e túneis para testes de integração que espelham a configuração de produção.

Quando passar do local para o staging

O teste local cobre a lógica do handler, o parse do payload e a validação de assinatura. Passe para o staging para verificações específicas do ambiente, como segredos gerenciados, migrações de banco e pipelines de release de ponta a ponta. No dia a dia de funcionalidades de pagamento, o teste local de webhooks do Stripe reduz a iteração de minutos para segundos.

Leia nosso guia completo sobre depurar webhooks localmente ou entre na lista de espera do PortPreview para fluxos de túnel focados em webhooks.

Perguntas frequentes

Como testar webhooks do Stripe no localhost?
Execute seu app localmente, suba um túnel com o PortPreview para obter uma URL HTTPS pública e adicione essa URL como endpoint de webhook no Dashboard do Stripe. Dispare eventos em modo de teste e inspecione cada entrega.
A verificação de assinatura do Stripe funciona com um túnel?
Sim, desde que o túnel preserve os cabeçalhos e o corpo originais da requisição. O PortPreview encaminha os cabeçalhos intactos, então a validação do Stripe-Signature funciona igual à de produção.
Devo usar a CLI do Stripe ou um túnel para localhost?
A CLI do Stripe é rápida para depuração individual. Um túnel para localhost dá uma URL pública estável para configurar no Dashboard, compartilhar com a equipe e testar webhooks de vários provedores espelhando a produção.