Configurar Integracao Stripe
Levy Fleets usa o Stripe como processador de pagamentos principal para todas as transacoes financeiras. Este guia abrangente cobre a configuracao e configuracao completa da integracao Stripe para operadores de frota, incluindo chaves de API, webhooks, modo de teste e recursos avancados.
O Que o Stripe Processa
O Stripe suporta todos os recursos relacionados a pagamentos no Levy Fleets:
- Pagamentos e cobrancas de viagens - Cobrando clientes por viagens
- Recargas de carteira - Reabastecimento manual e automatico de saldo
- Armazenamento de metodos de pagamento - Armazenamento seguro de cartoes de clientes
- Verificacao de identidade - KYC via Stripe Identity
- Processamento de reembolsos - Devolvendo fundos aos clientes
- Tentativas de pagamento - Recuperando pagamentos falhados
Conformidade PCI
Ao usar o Stripe, Levy Fleets mantem conformidade PCI. Dados de cartao nunca sao armazenados em nossos servidores - apenas referencias tokenizadas sao mantidas, garantindo o mais alto nivel de seguranca de pagamento.
Pre-requisitos
Antes de configurar a integracao Stripe, certifique-se de ter:
- Uma conta Stripe - Crie uma em stripe.com se ainda nao tiver
- Acesso de admin ao seu Dashboard Levy Fleets
- Acesso a variaveis de ambiente - Dashboard Vercel ou configuracao do servidor
- Compreensao do seu modelo de pagamento - Baseado em carteira ou pos-pagamento
Variaveis de Ambiente
Variaveis Obrigatorias
Configure estas variaveis de ambiente para o Stripe funcionar:
| Variavel | Descricao | Exemplo |
|---|---|---|
STRIPE_SECRET_KEY | Chave secreta do modo ao vivo | sk_live_... |
STRIPE_WEBHOOK_SECRET | Segredo de assinatura de webhook | whsec_... |
STRIPE_PUBLISHABLE_KEY | Chave publica do modo ao vivo | pk_live_... |
Variaveis Opcionais (Modo de Teste)
Para desenvolvimento e testes:
| Variavel | Descricao | Exemplo |
|---|---|---|
STRIPE_TEST_SECRET_KEY | Chave secreta do modo de teste | sk_test_... |
STRIPE_TEST_PUBLISHABLE_KEY | Chave publica do modo de teste | pk_test_... |
Variaveis Adicionais
| Variavel | Descricao | Exemplo |
|---|---|---|
CRON_SECRET | Autenticacao para endpoints de cron job | String aleatoria de 32+ caracteres |
Obtendo Suas Chaves Stripe
Acessar Dashboard Stripe
Faca login na sua conta Stripe em dashboard.stripe.com. Certifique-se de estar visualizando a conta correta usando o seletor de conta no canto superior esquerdo.
Encontrar Chaves de API
Navegue ate Developers na barra lateral esquerda, depois clique em API Keys. Voce vera tanto a Publishable key quanto a Secret key. Clique em "Reveal" para visualizar sua chave secreta - mantenha-a confidencial!
Configurar Segredo de Webhook
Navegue ate Developers > Webhooks. Clique em Add endpoint e insira sua URL de webhook: https://seu-dominio.com/api/webhooks/stripe. Selecione os eventos a monitorar (veja a secao Eventos de Webhook abaixo), depois clique em Add endpoint. Clique no seu novo endpoint de webhook e clique em Reveal em "Signing secret" para obter seu STRIPE_WEBHOOK_SECRET.
Configurar Ambiente
Adicione as chaves as suas variaveis de ambiente no Vercel ou sua plataforma de hospedagem.
Mantenha segredos seguros
Nunca commite chaves de API no controle de versao ou as compartilhe publicamente. Sua chave secreta fornece acesso total a sua conta Stripe e deve ser tratada como uma senha.
Configuracao de Webhook
Webhooks permitem que o Stripe notifique o Levy Fleets sobre eventos de pagamento. Configure seu endpoint de webhook para receber estes eventos:
Eventos de Webhook Obrigatorios
Eventos de Cobranca
charge.succeeded- Capturar pagamentos bem-sucedidoscharge.failed- Rastrear tentativas de pagamento falhadascharge.captured- Registrar pre-autorizacoes capturadascharge.updated- Sincronizar atualizacoes de cobrancacharge.refunded- Rastrear reembolsoscharge.expired- Tratar cobrancas expiradascharge.pending- Rastrear cobrancas pendentes
Eventos de Disputa
charge.dispute.createdcharge.dispute.updatedcharge.dispute.closedcharge.dispute.funds_withdrawncharge.dispute.funds_reinstated
Eventos de Payment Intent
payment_intent.succeeded- Processar pagamentos concluidos
Eventos de Setup Intent
setup_intent.succeeded- Salvar novos metodos de pagamento
Eventos de Cliente
customer.created- Vincular clientes Stripe ao seu banco de dadoscustomer.updated- Sincronizar mudancas de clientecustomer.deleted- Tratar exclusao de cliente
Eventos de Identidade (se usar verificacao de ID)
identity.verification_session.requires_inputidentity.verification_session.processingidentity.verification_session.canceledidentity.verification_session.verified
Seguranca de Webhook
Todos os webhooks sao automaticamente verificados atraves do mecanismo de assinatura do Stripe. O sistema tambem registra todos os eventos de webhook na tabela stripe_webhook_logs para fins de auditoria e depuracao.
Modo de Teste vs. Modo ao Vivo
Selecao Automatica de Modo de Teste
O sistema usa automaticamente o modo de teste para:
- Usuarios super admin - Todos os usuarios com a funcao super_admin usam automaticamente o modo de teste
- E-mails internos - Qualquer cliente com e-mail
@levyelectric.comusa modo de teste
Isso permite testes seguros sem risco de cobrancas de producao.
Comportamento do Modo de Teste
No modo de teste:
- Todas as chamadas de API Stripe usam a chave secreta de teste
- Metodos de pagamento usam numeros de cartao de teste
- Nenhum dinheiro real e cobrado
- O modo de teste e indicado na interface do dashboard
Numeros de Cartao de Teste
Use estes cartoes de teste para desenvolvimento:
| Numero do Cartao | Descricao |
|---|---|
4242 4242 4242 4242 | Pagamento bem-sucedido |
4000 0000 0000 0002 | Cartao recusado |
4000 0000 0000 9995 | Fundos insuficientes |
4000 0027 6000 3184 | Autenticacao necessaria |
5555 5555 5555 4444 | Mastercard |
3782 822463 10005 | American Express |
Use qualquer data de validade futura valida e qualquer CVC de 3 digitos (4 digitos para Amex).
Configuracao do Sistema de Pagamento
Configuracoes de Pagamento da Subconta
Cada subconta pode configurar seu sistema de pagamento em Configuracoes > Pagamentos:
| Configuracao | Descricao |
|---|---|
| Sistema de Pagamento | Escolha "Carteira" ou "Pos-pagamento" |
| Saldo Minimo de Carteira | Saldo necessario para iniciar uma viagem (ex: R$ 5,00) |
| Opcoes de Recarga | Valores disponiveis com bonus opcionais |
| Recarga Automatica | Ativar reabastecimento automatico de carteira |
| Valor de Recarga Automatica | Valor cobrado quando acionada |
| Limite de Recarga Automatica | Nivel de saldo que aciona a recarga automatica |
Sistema de Carteira vs. Pos-pagamento
| Recurso | Sistema de Carteira | Pos-pagamento |
|---|---|---|
| Pre-financiamento | Obrigatorio | Nao obrigatorio |
| Cobranca de viagem | Deduzido da carteira | Cobrado apos a viagem |
| Pagamentos falhados | Carteira fica negativa | Fila de tentativas de pagamento |
| Friccao do cliente | Maior (precisa recarregar) | Menor |
| Fluxo de caixa | Melhor (pre-pago) | Atrasado |
Recomendacao
A maioria dos operadores prefere o sistema de carteira para melhor fluxo de caixa e menos inadimplencias. A estrutura de bonus tambem incentiva depositos maiores.
Sistema de Recarga Automatica
A recarga automatica cobra automaticamente o cartao do cliente quando o saldo da carteira cai abaixo de um limite.
Requisitos
Para que a recarga automatica funcione:
- Configuracao da subconta - Recarga automatica ativada na subconta
- Preferencia do cliente - Cliente deve optar pela recarga automatica
- Metodo de pagamento - Cliente deve ter um metodo de pagamento padrao
- Cliente Stripe - Cliente deve ter um ID de cliente Stripe vinculado
Como Funciona
- Viagem termina ou verificacao periodica e executada
- Sistema verifica se saldo da carteira esta no ou abaixo do limite
- Sistema adquire um bloqueio para evitar cobrancas duplicadas
- PaymentIntent Stripe e criado com chave de idempotencia
- Em caso de sucesso, saldo da carteira e creditado
- Bloqueio e liberado
Prevencao de Cobranca Duplicada
O sistema usa dois mecanismos para prevenir cobrancas duplicadas:
- Bloqueio de banco de dados - Colunas rastreiam status e expiracao do bloqueio
- Chave de idempotencia Stripe - Chave unica por tentativa de recarga automatica
Sistema de Tentativa de Pagamento
Quando a carteira de um cliente fica negativa, o sistema tenta automaticamente cobrar o valor pendente.
Cronograma de Tentativas
| Periodo | Frequencia de Tentativas | Detalhes |
|---|---|---|
| Dia 1 | 3 tentativas | Imediata, +4 horas, +8 horas |
| Dias 2-7 | 1 tentativa por dia | As 9h UTC |
| Apos dia 7 | 1 tentativa por semana | A cada 7 dias |
| Maximo | 6 meses | Jobs expiram apos 180 dias |
Rotacao de Metodos de Pagamento
Ao tentar novamente, o sistema roda por todos os metodos de pagamento armazenados:
- Metodo de pagamento padrao primeiro - Tenta o cartao preferido do cliente
- Depois outros cartoes por idade - Cartoes mais antigos sao tentados primeiro
- Ciclo reinicia - Em cada nova janela de agendamento, todos os metodos sao tentados novamente
Cancelamento Automatico
Saldos abaixo de R$ 0,50 sao automaticamente cancelados (minimo do Stripe e R$ 0,50 para cobrancas em BRL).
Verificacao de Identidade (Stripe Identity)
Levy Fleets integra com Stripe Identity para verificacao de identidade de clientes.
Modos de Verificacao
Configure a verificacao de identidade no nivel da subconta:
| Modo | Descricao |
|---|---|
disabled | Nenhuma verificacao de identidade obrigatoria |
all_users | Todos os clientes devem verificar sua identidade |
risk_based | Apenas clientes de alto risco requerem verificacao |
Verificacao Baseada em Risco
Ao usar o modo baseado em risco:
- Stripe Radar pontua pagamentos (0-100)
- Niveis de risco:
normal(10),elevated(50),highest(75) - Se pontuacao >= limite, verificacao e obrigatoria
- Cliente e bloqueado ate verificacao
Cobrancas de Verificacao (Bloqueios Temporarios)
O sistema pode colocar bloqueios de autorizacao temporarios em cartoes de clientes para verificar a validade do metodo de pagamento.
Politicas de Bloqueio
| Politica | Descricao |
|---|---|
disabled | Sem cobrancas de verificacao |
first_ride | Bloquear apenas na primeira viagem do cliente |
all_rides | Bloquear em cada inicio de viagem |
Como Bloqueios Funcionam
- Autorizacao criada - Nenhuma cobranca real, apenas um bloqueio
- Cartao validado - Confirma que cartao esta ativo e tem saldo
- Bloqueio liberado - Automaticamente apos a viagem ou dentro de 7 dias
- Nunca capturado - Bloqueios de verificacao nunca sao convertidos em cobrancas reais
Integracao com Banco de Dados
Tabelas Principais
| Tabela | Proposito |
|---|---|
customers | Armazena stripe_customer_id e saldo de carteira |
payment_methods | Armazena metodos de pagamento vinculados |
stripe_charges | Espelha todas as cobrancas Stripe |
stripe_webhook_logs | Registra todos os eventos de webhook |
wallet_transactions | Registra todos os creditos/debitos de carteira |
Cron Jobs
Varios cron jobs suportam o sistema de pagamento:
| Cron | Agendamento | Proposito |
|---|---|---|
/api/cron/automatic-refunds | A cada 5 minutos | Processar reembolsos automaticos |
/api/cron/payment-retries | A cada 5 minutos | Tentar novamente pagamentos falhados |
/api/cron/bill-active-rides | A cada minuto | Cobrar viagens ativas |
Todos os endpoints cron requerem o header CRON_SECRET para autenticacao.
Desenvolvimento Local
Testando com Stripe CLI
Instalar Stripe CLI
Baixe e instale o Stripe CLI de stripe.com/docs/stripe-cli
Login no Stripe
Execute stripe login para autenticar com sua conta Stripe
Encaminhar Webhooks
Execute stripe listen --forward-to localhost:3000/api/webhooks/stripe para encaminhar eventos de webhook para seu servidor local. A CLI exibira um segredo de assinatura de webhook para testes locais.
Disparar Eventos de Teste
# Disparar um evento charge.succeeded
stripe trigger charge.succeeded
# Disparar um evento payment_intent.succeeded
stripe trigger payment_intent.succeeded
Monitoramento e Depuracao
Verificar Logs de Webhook
Visualize atividade recente de webhook no seu banco de dados:
SELECT
event_type,
status,
COUNT(*) as count,
MAX(processed_at) as last_seen
FROM stripe_webhook_logs
WHERE processed_at > NOW() - INTERVAL '24 hours'
GROUP BY event_type, status
ORDER BY last_seen DESC;
Analisar Pagamentos Falhados
SELECT
decline_reason,
COUNT(*) as count,
SUM(amount) / 100.0 as total_brl
FROM stripe_charges
WHERE status = 'failed'
AND created_at > NOW() - INTERVAL '7 days'
GROUP BY decline_reason
ORDER BY count DESC;
Solucao de Problemas
Problemas Comuns
"Verificacao de assinatura de webhook falhou"
Causa: STRIPE_WEBHOOK_SECRET incorreto ou corpo da requisicao modificado
Solucao:
- Verifique se o segredo corresponde ao seu Dashboard Stripe
- Garanta que nenhum middleware modifique o corpo da requisicao
- Verifique o nome correto do header:
stripe-signature
"Cliente nao encontrado" no Stripe
Causa: Cliente foi excluido no Stripe ou nunca sincronizado
Solucao:
- Verifique
stripe_customer_idna tabela customers - Verifique se o ID existe no Dashboard Stripe
- Limpe o ID e deixe o sistema recria-lo
Pagamentos nao estao sincronizando
Causa: Endpoint de webhook mal configurado ou falhando
Solucao:
- Verifique
stripe_webhook_logspara erros - Verifique a URL do webhook no Dashboard Stripe
- Reenvie eventos falhados do Dashboard Stripe
- Verifique logs da aplicacao para erros
Modo de teste nao funciona
Causa: Chaves de teste nao configuradas
Solucao:
- Adicione
STRIPE_TEST_SECRET_KEYeSTRIPE_TEST_PUBLISHABLE_KEY - Verifique se as chaves comecam com
sk_test_epk_test_ - Verifique se o usuario tem e-mail
@levyelectric.comou funcao super_admin
Melhores Praticas de Seguranca
- Nunca registre numeros de cartao completos - Apenas last4 e armazenado
- Rotacione segredos de webhook - Mude regularmente
- Use chaves de teste/ao vivo separadas - Nunca misture ambientes
- Ative Radar - Deteccao de fraude do Stripe
- Monitore anomalias - Configure alertas para atividade incomum
- Conformidade PCI - Nunca processe dados brutos de cartao no servidor
Proximos Passos
- Metodos de Pagamento - Gerenciar metodos de pagamento de clientes
- Reembolsos Automaticos - Como reembolsos automaticos funcionam
- Cobrancas de Danos - Cobrar clientes por danos
Integracao Concluida
Uma vez que sua integracao Stripe esteja configurada e testada, voce esta pronto para processar pagamentos. Monitore seu Dashboard Stripe e analytics Levy Fleets para acompanhar desempenho de pagamentos e identificar problemas rapidamente.