🚀 Oferta especial: 60% OFF no CrazyStack - Últimas vagas!Garantir vaga →
🎯 Aula 08

💳 Stripe Gateway: Do Zero ao Webhook

Integre o gateway de pagamento mais confiável do mundo. Aprenda a processar pagamentos, gerenciar assinaturas e implementar webhooks para sincronizar dados automaticamente.

45 min
Nível: Intermediário

🎯 Por que isso é importante

Stripe processa mais de $640 bilhões anualmente e é usado por 85% das Fortune 500. Dominar esta integração significa criar sistemas de pagamento seguros, escaláveis e confiáveis que geram receita real para negócios.

🧠 Conceitos Fundamentais

Payment Intent

Objeto que representa a intenção de coletar pagamento do cliente. Controla todo o fluxo de autorização e captura do pagamento.

Webhooks

Notificações HTTP que o Stripe envia para sua aplicação quando eventos importantes acontecem (pagamento aprovado, falha, etc.).

Customer Portal

Interface pronta do Stripe onde clientes gerenciam assinaturas, métodos de pagamento e faturas sem código adicional.

PCI Compliance

Stripe Elements garante conformidade PCI automaticamente, protegendo dados sensíveis sem complexidade adicional.

🛠️ Implementação Completa

Configuração Inicial

1. Instalação das Dependências

terminal

2. Conta Stripe Dashboard

• Crie conta gratuita em stripe.com
• Acesse o Dashboard → Developers → API Keys
• Copie as chaves: Publishable Key e Secret Key
• Configure webhook endpoint para receber eventos

💰 Exemplo Prático: Tela de Pricing

Componente de Pricing Completo

Vamos criar uma tela de pricing profissional que se conecta diretamente ao Stripe. Este exemplo mostra como implementar planos de assinatura com checkout automático.

app/pricing/page.tsx

🔌 API Route: Checkout Session

Criando Sessão de Checkout

Esta API route cria uma sessão segura de checkout no Stripe e redireciona o usuário para a página de pagamento oficial.

app/api/create-checkout-session/route.ts

🗄️ Modelo do Banco de Dados

Schema Prisma para Assinaturas

Primeiro, vamos definir o modelo de dados para armazenar as informações das assinaturas do Stripe. Este modelo será usado para sincronizar os dados entre o Stripe e nosso banco de dados.

prisma/schema.prisma

📋 Campos do Modelo:

  • clerkUserId - ID único do usuário no Clerk
  • stripeCustomerId - ID do cliente no Stripe
  • stripeSubscriptionId - ID da assinatura no Stripe
  • status - Status da assinatura (active, canceled, etc.)
  • priceId - ID do preço/plano no Stripe
  • cancelAtPeriodEnd - Se deve cancelar no fim do período

⚡ Comandos Prisma:

npx prisma migrate dev --name add-subscription
npx prisma generate

🔧 Serviços de Assinatura

Gerenciamento de Assinaturas

Primeiro, vamos criar os serviços para gerenciar assinaturas no banco de dados. Estas funções serão utilizadas pelos webhooks para sincronizar dados.

lib/services/subscription.ts

📡 API para Consultar Assinatura

Endpoint para Assinatura Atual

Esta API permite que o frontend consulte o status da assinatura do usuário logado, verificando se possui uma assinatura ativa e seus detalhes.

app/api/subscriptions/current/route.ts

✅ Funcionalidades:

  • • Autenticação via Clerk
  • • Busca assinatura por ID do usuário
  • • Verifica se a assinatura está ativa
  • • Retorna dados sanitizados da assinatura
  • • Tratamento de erros completo

📋 Exemplo de Uso no Frontend:

const response = await fetch('/api/subscriptions/current'); const { subscription, hasActiveSubscription } = await response.json();

🏠 Tela de Dashboard

Dashboard do Usuário

Implementação completa de uma tela de dashboard que consome a API de assinatura e exibe informações detalhadas sobre o status da assinatura do usuário.

app/dashboard/page.tsx

🎯 Funcionalidades do Dashboard:

  • Estado de Loading: Spinner durante carregamento dos dados
  • Mensagem de Sucesso: Exibe confirmação após checkout bem-sucedido
  • Status da Assinatura: Badges dinâmicos baseados no status
  • Detalhes Completos: Informações formatadas da assinatura
  • Portal do Cliente: Botão para gerenciar assinatura no Stripe
  • Estado Vazio: Mensagem quando não há assinatura ativa
  • Tratamento de Erros: Feedback visual para problemas de API

🔄 Fluxo de Estados:

1. Loading: Exibe spinner enquanto busca dados da API

2. Success: Mostra dados da assinatura se encontrada

3. Empty: Exibe call-to-action para criar assinatura

4. Error: Mostra mensagem de erro em caso de falha

📱 Recursos de UX:

  • • Design responsivo com grid adaptativo
  • • Ícones contextuais para cada status
  • • Formatação de datas em português
  • • Suspense boundary para carregamento
  • • URL params para feedback de checkout
  • 🔔 Webhook: Sincronização Automática

    Processamento de Eventos

    Webhooks garantem que sua aplicação seja notificada instantaneamente sobre mudanças no status de pagamentos, assinaturas e outros eventos importantes.

    app/api/webhooks/stripe/route.ts

    👤 Customer Portal: Autoatendimento

    Portal do Cliente

    O Customer Portal do Stripe oferece uma interface completa onde clientes podem gerenciar assinaturas, métodos de pagamento e faturas sem código adicional.

    app/api/create-portal-session/route.ts

    ✅ Vantagens desta Implementação

    Segurança Máxima

    • PCI Compliance automático - Stripe cuida da certificação
    • Webhook verification - Eventos validados criptograficamente
    • 3D Secure nativo - Proteção contra fraudes

    Performance

    • API ultra-rápida - 99.99% uptime garantido
    • Checkout otimizado - Conversão 30% maior
    • Retry automático - Falhas temporárias tratadas

    Escala Global

    • 135+ moedas - Vendas internacionais
    • Métodos locais - PIX, boleto, cartões
    • Multi-idioma - Experiência localizada

    Automação Total

    • Webhooks confiáveis - Sincronização automática
    • Customer Portal - Autoatendimento completo
    • Retry inteligente - Recuperação de falhas

    🧪 Testando a Implementação

    Validação Completa

    Antes de ir para produção, é essencial testar todos os fluxos de pagamento usando as ferramentas de teste do Stripe.

    🔧 Cartões de Teste

    test-cards.txt

    📋 Checklist de Testes

    • • ✅ Checkout com cartão válido
    • • ❌ Checkout com cartão inválido
    • • 🔄 Webhook recebido e processado
    • • 👤 Customer Portal funcionando
    • • 📧 Emails de confirmação enviados
    • • 🗄️ Dados salvos no banco
    • • 🔐 Permissões atualizadas

    🚀 Próximos Passos

    Recursos Avançados

    • Stripe Connect - Marketplace com múltiplos vendedores
    • Recurring Billing - Assinaturas com múltiplos planos
    • Payment Links - Links de pagamento sem código
    • Terminal API - Pagamentos presenciais

    Integrações Complementares

    • Stripe Radar - Machine learning anti-fraude
    • Stripe Tax - Cálculo automático de impostos
    • Stripe Issuing - Cartões corporativos
    • Stripe Treasury - Contas bancárias programáveis

    🎯 Resumo da Aula

    Você aprendeu a implementar um sistema completo de pagamentos com Stripe: tela de pricing profissional, checkout seguro, webhooks para sincronização, customer portal para autoatendimento e sistema de logs para monitoramento. Esta base sólida permite escalar para milhões de transações com segurança.