Stripe com validação real

A biblioteca consulta a Stripe (via Netlify Functions) para saber se a pessoa pagou. Não depende só de senha compartilhada.

1. Success URL (obrigatório)

Em cada Payment Link → Depois do pagamento → redirecionar para:

https://SEU_DOMINIO.netlify.app/sucesso.html?session_id={CHECKOUT_SESSION_ID}

O trecho {CHECKOUT_SESSION_ID} a Stripe substitui sozinha. É isso que prova o pagamento.

Cancel: https://SEU_DOMINIO/cancelado.html

2. Variáveis no Netlify

Site settings → Environment variables:

STRIPE_SECRET_KEY=sk_live_...   (só no Netlify, nunca no Git/HTML)
ACCESS_TOKEN_SECRET=uma-string-longa-aleatoria
STRIPE_PRODUCT_CORE=prod_V0nT14AXj9zo9t
STRIPE_PRODUCT_BUMP=prod_XXXX     (obrigatório — product ID do Kit de Objeções)
# opcional, se core e bump forem o mesmo product com preços diferentes:
# STRIPE_PRICE_CORE=price_...
# STRIPE_PRICE_BUMP=price_...
RESEND_API_KEY=re_...
EMAIL_FROM=Vendas que Convertem <suporte@vendasqueconvertem.com.br>
SITE_URL=https://vendasqueconvertem.com.br

Importante: a liberação só olha product/price ID. Sem STRIPE_PRODUCT_BUMP, o kit de objeções nunca libera (mesmo pagando). No Stripe → Products, copie o ID prod_… do kit e cole no Netlify.

No Resend: valide o domínio vendasqueconvertem.com.br (DNS) para poder enviar de suporte@….

Redeploy depois de salvar as variáveis.

3. Fluxo do comprador

  1. Paga no Stripe Checkout
  2. Cai em sucesso.html?session_id=cs_...
  3. Function verify-session pergunta à Stripe se está paid e o que foi comprado
  4. Cookie HttpOnly libera a biblioteca (e o bump, se estava no pedido)
  5. Outro aparelho: Fazer login → digita o e-mail → recebe link mágico (20 min) → só quem abre a caixa entra

4. Payment Links (config.js no front)

Links públicos buy.stripe.com no config.js (isso pode ser público). A secret key nunca.

← Vendas