Integração Stripe

Dar acesso automático aos compradores da Stripe e retirá-lo em reembolsos.

1. Criar a integração

  1. Painel → app → Vendas → Nova integração → escolha Stripe.
  2. Preencha Webhook signing secret (whsec_…), Restricted API key (rk_…) — opcional (Necessária para ler os itens comprados (price/product IDs)). Os campos secretos são guardados cifrados e servem para confirmar que cada aviso vem mesmo da plataforma.
  3. Guarde. O painel mostra o URL de webhook desta integração.

2. Configurar na Stripe

Stripe → Developers → Webhooks → Add endpoint com a URL abaixo. Eventos: checkout.session.completed, checkout.session.expired, invoice.paid, invoice.payment_failed, charge.refunded, charge.dispute.created, customer.subscription.updated, customer.subscription.deleted. ID externo: Price (price_…), Product (prod_…), Payment Link (plink_…) ou metadata.product_id.

Formato do URL (copie o seu do painel)
https://www.zurianlab.com/api/webhooks/stripe/<token-da-integração>

3. Associar produtos

Na integração, associe cada produto da Stripe (price_…, prod_…, plink_… ou metadata.product_id) a um ou mais produtos da app. Compras de produtos sem associação aparecem em Vendas com erro para corrigir com um clique.

4. Testar

Faça uma compra de teste (ou use o botão de teste/reenvio da Stripe). Em Vendas vê cada evento recebido com o estado (processado, ignorado, falhou) e pode reprocessá-lo.

O que cada evento faz

EventoEfeito
Compra ou renovação aprovadaCria o aluno (se não existir), dá acesso aos produtos associados e envia o email de acesso.
Reembolso, chargeback ou cancelamentoRetira o acesso dado por essa transação (os acessos dados por outras compras mantêm-se).
Pagamento pendente (transferência, voucher ou referência)Cria um lead para recuperação; nunca dá acesso.
Pagamento recusado ou expirado, carrinho abandonadoCria um lead e dispara as automações de recuperação.
Subscrição com pagamento em atrasoInicia o período de tolerância definido nas Definições; depois retira o acesso.
Mudança de planoTroca os produtos da subscrição.

Segurança e fiabilidade

  • Cada aviso é verificado (assinatura, token ou chave) antes de qualquer alteração; avisos não verificados são rejeitados.
  • O processamento é idempotente: o mesmo evento repetido pela plataforma nunca dá acesso duas vezes.
  • O acesso só é dado depois de a plataforma confirmar o pagamento — nunca a partir do navegador do comprador.