Stripe no Seu Micro-SaaS Next.js EM MINUTOS! 🚀 (C/ Better Auth + Copilot)
E aÃ, Devs! Felipe Barcelos de volta na saga "Building in Public". Depois de falar do Igniter.js e da troca do NextAuth pelo Better Auth, chegou a hora de encarar o monstro que assombra muito dev/founder de SaaS: integração com Stripe.
Quem já montou um sistema de assinaturas do zero sabe a trabalheira: configurar planos, lidar com webhooks pra tudo quanto é evento (pagamento falhou, assinatura cancelada, trial acabando...), criar/atualizar cliente no Stripe, sincronizar com seu banco... Ufa! É código pra caramba, tempo precioso que a gente deveria estar usando pra melhorar o produto principal e validar a ideia no mercado.
O Problema: Reinventando a Roda da Monetização
No começo da jornada com meus Micro-SaaS e o SaaS Boilerplate, essa parte de billing era um dos maiores gargalos. Eu perdia um tempo enorme garantindo que tudo funcionasse, que os webhooks fossem seguros, que o estado da assinatura no meu banco batesse com o do Stripe. É complexo, é crÃtico (ninguém quer cobrar errado do cliente!) e, sinceramente, não é o core business da maioria dos SaaS.
A Solução (Que Simplificou Minha Vida): O Plugin Stripe do Better Auth
Quando descobri o Better Auth, o sistema de plugins foi um brilho nos olhos, e o do Stripe (@better-auth/plugin-stripe) superou as expectativas. A proposta é simples: abstrair 90% da complexidade da integração.
O que ele faz por baixo dos panos quando você instala e configura?
- Atualiza seu Schema Prisma: Adiciona as tabelas
Subscription
,Price
,Product
, etc., com os relacionamentos corretos com seuUser
. Adeus, modelagem manual disso! - Cria Cliente no Stripe Automaticamente: No primeiro login ou em um evento especÃfico, ele já cria o
customer
no Stripe pra você. - Endpoint de Webhook PRONTO: Ele te dá um handler (que você expõe numa API route) que já processa os eventos mais importantes do Stripe (ex:
checkout.session.completed
,customer.subscription.updated
,customer.subscription.deleted
) e atualiza o status da assinatura no seu banco de dados automaticamente. Cara, só isso já economiza HORAS de desenvolvimento e teste. - Métodos Simplificados: Te oferece métodos no provider (que você acessa via contexto, como mostrei no post do Better Auth) pra, por exemplo, gerar a URL de checkout (
createCheckout
) ou buscar a assinatura ativa do usuário (getSubscription
).
Na Prática (Como ficou no nosso projeto exemplo):
No vÃdeo novo, mostro como fazer o setup (instalar plugin, configurar API keys, rodar prisma migrate
). A lógica pra criar um botão de upgrade ficou ridiculamente simples.