Pular para o conteúdo
supastack
Explorar a documentação

For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /pt/docs/web/stripe-payments.md (or send Accept: text/markdown).

Adicionar os pagamentos com Stripe

Crie uma conta Stripe gratuita, um produto com um preço recorrente, uma chave secreta e o webhook assinado que concede entitlements após o checkout.

Passo a passo para iniciantes

Pré-requisitos: a app a correr em local (Online em 5 minutos) e uma base de dados migrada para contas reais (Configurar a base de dados). Precisa de um endereço de email para a conta Stripe — sem cartão e sem cobranças. Tudo neste guia acontece em modo de teste: dinheiro falso, números de cartão de teste, tentativas ilimitadas antes de entrar em produção.

Terminologia rápida: o modo de teste é o sandbox da Stripe — o interruptor Test mode do painel mantém cada chave, produto e pagamento falsos até o desligar. Uma secret key (sk_test_…) é a palavra-passe do seu servidor junto da Stripe. Um produto com um preço é o que os clientes compram; um price id (price_…) nomeia-o no código. Um webhook é a Stripe a chamar o seu servidor quando um pagamento tem êxito ou uma assinatura muda, e o signing secret (whsec_…) prova que a chamada vem mesmo da Stripe.

O que cria: uma conta Stripe, um produto com um preço recorrente, uma chave de API secreta e um endpoint de webhook — cerca de vinte minutos. A Stripe aloja a própria página de checkout; o kit cria a sessão no servidor e redireciona, por isso não é precisa nenhuma publishable key de browser.

Tenha o âmbito em mente: este guia vende apenas assinaturas web. As compras dentro da app iOS/Android têm de passar pela faturação da Apple e da Google — nunca pelo Stripe Checkout — e é por isso que o mobile usa RevenueCat.

Criar a conta Stripe

1. Abra stripe.com → Start now e registe-se com o seu email.

2. A integração pergunta pelo seu negócio — em modo de teste pode saltar todas as perguntas e mesmo assim usar o sandbox completo; conclua a ativação só antes de aceitar pagamentos reais.

Esperado: chega ao painel com o interruptor Test mode visível no cabeçalho. Mantenha-o ligado para tudo o que segue — as chaves live vão mais tarde para o seu secret store de produção, nunca para um ficheiro env do portátil.

Copiar as chaves de API

1. No painel abra Developers → API keys.

2. Vê duas chaves de teste: uma Publishable key pk_test_… e uma Secret key mascarada. Clique em Reveal test key junto ao segredo e copie o valor sk_test_….

O kit só precisa da secret key: as sessões de checkout são criadas no servidor e o utilizador é redirecionado para a página alojada da Stripe, por isso nenhuma publishable key chega às variáveis env. Se um produto que construir mais tarde adicionar Stripe.js, usaria a publishable key no cliente; o fluxo de faturação do kit não o faz.

A chave sk_test_… é uma credencial completa para a conta sandbox: vive em apps/web/.env.local ou num secret store, nunca em variáveis NEXT_PUBLIC_/EXPO_PUBLIC_ e nunca no Git.

Criar o produto e o preço

1. Abra Product catalog → Add product.

2. Dê-lhe o nome do seu plano — Pro corresponde ao plano incluído do kit — dê-lhe um preço e escolha Recurring (mensal, por exemplo): o checkout do kit cria sessões em modo de assinatura, que exigem um preço recorrente, não um pagamento único.

3. Guarde, abra o produto e copie o price id — começa com price_… (não prod_…, que é o id do produto).

O plano pro incluído já mostra um alternador Monthly/Yearly: o mensal paga com STRIPE_PRICE_ID, e a opção anual precisa de um segundo preço recorrente em STRIPE_PRICE_ID_PRO_YEARLY — sem ele, um checkout anual falha com price-unconfigured. Mude os nomes de planos, os montantes e o que uma compra concede em apps/web/src/product-plans.ts — a Stripe guarda o lado do dinheiro, o ficheiro de planos guarda o lado do entitlement.

Adicionar o endpoint de webhook

O webhook é o que realmente concede o acesso: o kit só ativa o entitlement depois de chegar um evento assinado da Stripe, por isso um redirecionamento de checkout sozinho não prova nada.

1. Abra Developers → Webhooks → Add endpoint.

2. Endpoint URL: o seu URL público mais /api/billing/webhook — por exemplo https://yourdomain.com/api/billing/webhook. Os outros provedores de faturação têm o seu próprio caminho debaixo desse diretório; o recetor da Stripe vive na raiz.

3. Em Select events escolha os eventos que o kit trata: checkout.session.completed, checkout.session.async_payment_succeeded, checkout.session.async_payment_failed, invoice.paid, invoice.payment_failed, customer.subscription.created, customer.subscription.updated e customer.subscription.deleted.

4. Crie o endpoint, abra a sua página, clique em Reveal em Signing secret e copie o valor whsec_… — cada endpoint tem o seu próprio segredo.

O desenvolvimento local não consegue receber os servidores da Stripe, por isso use a Stripe CLI: stripe login uma vez, depois stripe listen --forward-to localhost:3000/api/billing/webhook num segundo terminal. Ela imprime um whsec_… temporário — esse valor, não o do painel, vai para .env.local enquanto stripe listen corre.

Adicionar os valores à app

Preencha as linhas abaixo em apps/web/.env.local. BILLING_PROVIDER=stripe seleciona o adaptador; as outras três são a chave, o preço e o signing secret. Ativar o provedor com alguma delas em falta faz o arranque falhar e nomeia a variável.

Os três valores STRIPE_* são apenas do servidor — nunca NEXT_PUBLIC_/EXPO_PUBLIC_, nunca commitados; a produção recebe-os através do gestor de segredos do hosting (o guia de implementação cobre o Secret Manager). Reinicie o servidor de desenvolvimento depois de editar.

# apps/web/.env.local
BILLING_PROVIDER=stripe
STRIPE_SECRET_KEY=sk_test_…
STRIPE_PRICE_ID=price_…
STRIPE_WEBHOOK_SECRET=whsec_…   # `stripe listen` value locally; endpoint signing secret in production
# STRIPE_PRICE_ID_PRO_YEARLY=price_…   # required for the shipped Yearly toggle

Verificar e resolver problemas

Arranque stripe listen --forward-to localhost:3000/api/billing/webhook e deixe-o a correr, reinicie o servidor de desenvolvimento, depois abra /billing, escolha o plano Pro e conclua o checkout alojado da Stripe com o cartão de teste 4242 4242 4242 4242, qualquer validade futura e qualquer CVC.

Esperado: a app regressa a /billing?checkout=success e o entitlement do workspace passa a ativo — o terminal de listen regista os eventos entregues, e Developers → Webhooks → o seu endpoint no painel mostra entregas verdes.

Para exercitar o recetor sem clicar pelo checkout, stripe trigger checkout.session.completed envia um evento sintético através do reencaminhador de listen.

Falhas comuns: um 400 em cada entrega significa que o signing secret não corresponde a esse endpoint — copie novamente o whsec_… do endpoint certo e atualize o env; não-operações silenciosas significam que BILLING_PROVIDER ainda é local; e chaves sk_live_ misturadas numa montagem de teste significam que copiou as chaves do modo errado — mantenha test e live estritamente separados.

O kit inclui o mesmo adaptador de contrato único para Lemon Squeezy, Creem, Polar, Whop, Paddle, Dodo e PayPal — mesmo fluxo, consola e nomes env diferentes — e as compras mobile ficam na RevenueCat, não na Stripe.

Perguntas frequentes

14 perguntas

O que é o supastack?

O supastack é uma base modular para construir produtos SaaS com IA. Reúne a infraestrutura comum para que possas concentrar-te nas funcionalidades próprias do teu produto.

Suporta web e mobile?

Sim. O supastack inclui apps Next.js e Expo como pontos de partida para experiências web e mobile.

Que autenticação está incluída?

O Better Auth cobre email/palavra-passe, OTP e login social. Os workspaces pessoais são aprovisionados com a conta para que os registos fiquem delimitados desde o primeiro dia.

Como é suportada a IA?

O supastack inclui IA multi-fornecedor configurável, registo de utilização, orçamentos e suporte encriptado de chaves próprias (BYOK).

Como são geridas as subscrições?

Para produtos construídos sobre o kit, a faturação Stripe, as subscrições e as permissões formam a base do acesso pago. Os segredos de fornecedor ficam no servidor.

Onde vive o código próprio do meu produto?

As funcionalidades próprias do produto ficam num codebase separado, enquanto o produto configura e integra os módulos base do supastack.

Como funciona o preço do supastack?

O kit é uma compra única com atualizações vitalícias: Uma framework por 249 $ (preço de lançamento temporário — 100 $ de desconto sobre o preço normal de 349 $) ou Todas as frameworks (Next.js, iOS, Android) por 499 $ (preço de lançamento temporário — 100 $ de desconto sobre o preço normal de 599 $), mais 75 $ por lugar de programador adicional. Sem subscrição do kit. O checkout neste site entrega a tua chave de licença por email, com acesso ao repo por convite GitHub.

Como é que os workspaces delimitam os meus dados?

Os registos do utilizador são delimitados por workspaceId. Identidade, permissões, utilização de IA, eventos de faturação e entradas de auditoria ficam dentro do limite do workspace pessoal.

Como funcionam os jobs em segundo plano?

O Trigger.dev é o runtime de jobs explícito. O contrato JobRunner só promete enqueue, status e cancel — a semântica de workflow permanece específica e explícita do Trigger.dev.

Como difere o email da divulgação?

O email transacional cobre fluxos de produto como avisos de conclusão de tarefas. A divulgação fria e as campanhas pertencem ao próprio produto, fora do módulo de email deste kit.

Como funcionam as compras no aplicativo móvel?

O aplicativo móvel inclui compras nativas e restauração via RevenueCat, com acesso verificado pelo servidor. Configure as contas das lojas e conclua os testes em dispositivos antes de publicar. A cobrança web permanece separada.

Onde residem as chaves dos fornecedores de IA?

As credenciais BYOK são encriptadas e ficam no servidor. As chaves são higienizadas nos logs; a utilização e os orçamentos ficam visíveis ao nível do workspace.

Quais métodos de pagamento o checkout aceita?

O checkout hospedado na Stripe aceita cartões e também pode oferecer Alipay e WeChat Pay quando essas carteiras estiverem ativadas na conta Stripe — útil para compradores na China. As autorizações de carteira são confirmadas de forma assíncrona, então a página da licença é atualizada assim que o pagamento é liquidado.

Posso solicitar um reembolso?

Depois de obter acesso ao repositório, o supastack é seu para sempre, portanto não pode ser reembolsado. Mas fique tranquilo: você recebe o código-fonte completo com atualizações vitalícias para criar e lançar produtos ilimitados para você ou seus clientes. Você apenas não pode revender o código nem redistribuir o repositório como starter kit ou modelo.

PT
Tema