Metodos de Pagamento de Clientes
O sistema de metodos de pagamento permite que clientes armazenem e gerenciem seus cartoes de pagamento para usar os servicos Levy Fleets. Este guia cobre como administradores podem gerenciar metodos de pagamento em nome dos clientes atraves do painel, bem como como o sistema lida com cartoes nos bastidores.
Como Metodos de Pagamento Funcionam
Arquitetura de Armazenamento
Metodos de pagamento sao armazenados em dois locais por razoes de seguranca e eficiencia:
- Stripe - Os dados reais do metodo de pagamento (numero do cartao, data de validade, CVC) sao armazenados de forma segura pelo Stripe
- Banco de Dados Levy - Apenas metadados nao sensiveis sao armazenados localmente:
- ID do metodo de pagamento Stripe
- Bandeira do cartao (Visa, Mastercard, etc.)
- Ultimos 4 digitos
- Tipo do cartao
- Status de padrao
Esta arquitetura garante conformidade PCI enquanto permite consultas locais eficientes.
Conformidade PCI
Levy Fleets nunca processa ou armazena dados brutos de cartao. Toda captura de cartao acontece via Stripe Elements ou Stripe Mobile SDK, garantindo o mais alto nivel de seguranca de pagamento.
Fluxo de Metodo de Pagamento
Quando um cliente adiciona um cartao:
Cliente Inicia
Cliente adiciona um cartao no aplicativo movel ou administrador adiciona via painel
SetupIntent Criado
Um Stripe SetupIntent e criado para capturar detalhes do cartao de forma segura
Detalhes do Cartao Capturados
Detalhes do cartao sao capturados pelo Stripe Elements (nunca tocam nossos servidores)
Stripe Valida
Stripe valida e tokeniza o cartao
SetupIntent Concluido
SetupIntent e concluido com sucesso
Metodo de Pagamento Anexado
Metodo de pagamento e anexado ao cliente Stripe
Metadados Salvos
Metadados do cartao (bandeira, ultimos 4, etc.) sao salvos na tabela payment_methods
Esquema do Banco de Dados
Tabela de Metodos de Pagamento
| Coluna | Tipo | Descricao |
|---|---|---|
id | uuid | Chave primaria |
customer_uuid | uuid | Referencia a tabela customers |
stripe_payment_method_id | text | ID do metodo de pagamento do Stripe (pm_xxx) |
type | text | Tipo de metodo de pagamento (normalmente "card") |
brand | text | Bandeira do cartao (visa, mastercard, amex, etc.) |
last4 | text | Ultimos 4 digitos do numero do cartao |
is_default | boolean | Se este e o metodo de pagamento padrao |
created_at | timestamptz | Quando o cartao foi adicionado |
updated_at | timestamptz | Ultimo momento de modificacao |
Gerenciando Metodos de Pagamento no Painel
Acessando Metodos de Pagamento
- Navegue ate Painel > Clientes
- Clique em um cliente para visualizar seu perfil
- Encontre a secao Metodos de Pagamento
Visualizando Cartoes
A secao de metodos de pagamento mostra:
- Bandeira do cartao e ultimos 4 digitos (ex: "VISA **** 4242")
- Data em que o cartao foi adicionado
- Badge de padrao para o cartao primario
- Botao de excluir para cada cartao
Adicionando um Cartao
Clicar em Adicionar Cartao
Clique no botao + Adicionar Cartao na secao de metodos de pagamento
Formulario Stripe Abre
Um modal abre com o formulario Stripe Elements para entrada segura de cartao
Inserir Detalhes do Cartao
Insira os detalhes do cartao diretamente no formulario seguro do Stripe
Salvar Cartao
Clique em Salvar Cartao para validar e salvar o metodo de pagamento
Cartao Adicionado
O modal fecha e a lista de cartoes atualiza para mostrar o novo cartao
Indicacao de Modo de Teste
Ao adicionar cartoes para contas de teste:
- Um banner amarelo mostra "Modo de teste ativo"
- Use numeros de cartao de teste do Stripe (veja abaixo)
- Nenhuma cobranca real sera feita
Excluindo um Cartao
- Clique no icone de lixeira ao lado do cartao
- Confirme a exclusao no dialogo
- O cartao e removido tanto do Stripe quanto do banco de dados
Comportamento de Exclusao
Excluir um metodo de pagamento o remove tanto do Stripe quanto do banco de dados local. Se o cartao excluido era o padrao, o cartao restante mais antigo automaticamente se torna o novo padrao.
Modo de Teste
Quando o Modo de Teste Esta Ativo
O modo de teste e automaticamente ativado quando:
- Usuarios Super Admin - Qualquer usuario com a funcao
super_admin - E-mails Internos de Teste - Clientes com e-mail
@levyelectric.com
Comportamento do Modo de Teste
No modo de teste:
- Usa chaves de API de teste do Stripe
- Cartoes sao armazenados no ambiente de teste do Stripe
- Nenhuma cobranca real e feita
- Setup Intents usam endpoints de teste
- Painel mostra "Modo de teste ativo"
Numeros de Cartao de Teste
| Numero do Cartao | Descricao |
|---|---|
4242 4242 4242 4242 | Sucesso |
4000 0000 0000 0002 | Cartao recusado |
4000 0000 0000 9995 | Fundos insuficientes |
4000 0027 6000 3184 | Autenticacao requerida |
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).
Metodo de Pagamento Padrao
Selecao Automatica de Padrao
Quando um cliente adiciona seu primeiro metodo de pagamento, ele automaticamente se torna o padrao. Isso garante que sempre haja um metodo de pagamento utilizavel para:
- Recargas de carteira
- Cobrancas de recarga automatica
- Tentativas de pagamento
Como o Padrao e Determinado
- Primeiro cartao adicionado e padrao
- Se o cartao padrao for excluido, o cartao restante mais antigo se torna padrao
Como o Padrao e Usado
O metodo de pagamento padrao e usado para:
- Recarga Automatica - Reposicao automatica de carteira
- Tentativas de Pagamento - Recuperar saldos negativos de carteira
- Cobrancas Off-Session - Qualquer cobranca iniciada sem presenca do cliente
Integracao com Sistema de Tentativa de Pagamento
Metodos de pagamento desempenham um papel critico no sistema automatico de tentativa de pagamento para recuperar saldos negativos de carteira.
Como Metodos de Pagamento Sao Usados para Tentativas
Quando a carteira de um cliente fica negativa, o sistema cria um job de tentativa de pagamento que:
- Primeiro Tenta o Metodo de Pagamento Padrao
- Roda Atraves de Outros Cartoes ordenados por data de criacao (mais antigo primeiro)
- Rastreia Quais Metodos Foram Tentados para evitar tentativas duplicadas dentro da mesma janela de agendamento
- Reinicia o Ciclo ao mudar para um novo dia ou nova semana
Ordem de Rotacao de Metodos de Pagamento
1. Metodo de pagamento padrao (is_default = true)
2. Cartao nao-padrao mais antigo
3. Segundo cartao nao-padrao mais antigo
4. ... continua atraves de todos os cartoes
Importancia de Multiplos Cartoes
Clientes com multiplos metodos de pagamento tem maiores taxas de recuperacao de pagamento porque:
- Se um cartao for recusado, outros sao tentados automaticamente
- Cartoes diferentes podem ter limites de credito diferentes
- Problemas especificos de banco (bloqueios temporarios, alertas de fraude) nao bloqueiam completamente o pagamento
Incentivar Cartoes de Backup
Incentive clientes a adicionar metodos de pagamento de backup. Mostre lembretes no app movel apos uma transacao recusada ou ofereca pequenos bonus de carteira por adicionar um segundo cartao.
Integracao de Webhook
Metodos de pagamento tambem podem ser criados via webhooks do Stripe quando clientes adicionam cartoes atraves do app movel:
setup_intent.succeeded
Quando um SetupIntent e concluido do app movel:
- Sistema busca o cliente por ID Stripe
- Recupera detalhes do metodo de pagamento do Stripe
- Salva metadados do cartao no banco de dados
- Define como padrao se for o primeiro cartao
payment_intent.succeeded
Quando um pagamento e concluido com um novo metodo de pagamento:
- Sistema verifica se o metodo de pagamento ja existe
- Se nao, salva o novo metodo de pagamento
- Atualiza o padrao do cliente se necessario
Integracao com App Movel
Adicionando Cartoes pelo App
O app movel usa o SDK nativo do Stripe:
- App solicita uma Ephemeral Key do servidor
- Stripe CustomerSheet ou PaymentSheet e apresentado
- Cliente insere detalhes do cartao na UI nativa do Stripe
- Em sucesso, webhook
setup_intent.succeedede disparado - Metodo de pagamento e salvo no banco de dados
Acoes de Pagamento no App
| Acao | Descricao |
|---|---|
add-funds | Recarregar carteira manualmente com valor selecionado |
redeem-promo | Aplicar codigo promocional para credito de carteira |
toggle-auto-topup | Ativar/desativar recarga automatica de carteira |
update-auto-topup-amount | Alterar valor de recarga automatica |
Consideracoes de Seguranca
Conformidade PCI
O sistema de metodos de pagamento mantem conformidade PCI atraves de:
- Nunca Processar Dados Brutos de Cartao - Toda captura de cartao usa Stripe Elements/SDK
- Armazenar Apenas Tokens - Apenas IDs de metodos de pagamento Stripe sao armazenados
- Mascarar Numeros de Cartao - Apenas ultimos 4 digitos sao armazenados
- Transmissao Segura - Todas as chamadas de API usam HTTPS
- Verificacao de Webhook - Todos os webhooks do Stripe sao verificados por assinatura
Controle de Acesso
Operacoes de metodos de pagamento requerem usuarios autenticados com funcoes apropriadas:
| Operacao | Funcoes Requeridas |
|---|---|
| Listar | Todas as funcoes admin |
| Adicionar | Todas as funcoes admin |
| Excluir | Todas as funcoes admin |
Comportamento de Exclusao
Ao excluir um metodo de pagamento:
- Desanexar do Stripe - Cartao e desanexado do cliente Stripe
- Exclusao Local - Registro removido do banco de dados
- Reatribuicao de Padrao - Se padrao foi excluido, o proximo mais antigo se torna padrao
- Ambos Ambientes Tentados - Sistema tenta tanto Stripe ao vivo quanto de teste para limpeza
Solucao de Problemas
Problemas Comuns
"Falha ao inicializar formulario Stripe"
Causa: Criacao do Setup Intent falhou
Solucoes:
- Verifique se as chaves de API do Stripe estao corretas
- Verifique se o cliente tem um ID de cliente Stripe
- Verifique o painel Stripe para limites de taxa
Cartao Nao Aparece Apos Adicionar
Causa: Registro falhou apos SetupIntent
Solucoes:
- Verifique console do navegador para erros
- Verifique se o webhook
setup_intent.succeededesta sendo recebido - Verifique banco de dados para metodos de pagamento orfaos
"Nenhum metodo de pagamento registrado" na Recarga Automatica
Causa: Cliente nao tem metodos de pagamento ou nenhum padrao
Solucoes:
- Verifique tabela
payment_methodspara o cliente - Verifique se pelo menos um cartao tem
is_default = true - Adicione um metodo de pagamento se nenhum existir
Modo de Teste Nao Funcionando
Causa: Chaves de teste nao configuradas
Solucoes:
- Verifique se
STRIPE_TEST_SECRET_KEYesta definida - Verifique se
STRIPE_TEST_PUBLISHABLE_KEYesta definida - Garanta que usuario e super_admin ou cliente tem e-mail @levyelectric.com
Consultas de Diagnostico
Listar Metodos de Pagamento de um Cliente
SELECT
pm.id,
pm.brand,
pm.last4,
pm.is_default,
pm.created_at,
c.email
FROM payment_methods pm
JOIN customers c ON c.id = pm.customer_uuid
WHERE c.id = 'uuid-do-cliente-aqui'
ORDER BY pm.created_at;
Encontrar Clientes Sem Metodos de Pagamento
SELECT
c.id,
c.email,
c.full_name,
c.stripe_customer_id
FROM customers c
LEFT JOIN payment_methods pm ON pm.customer_uuid = c.id
WHERE pm.id IS NULL
AND c.stripe_customer_id IS NOT NULL
ORDER BY c.created_at DESC
LIMIT 50;
Verificar Metodos de Pagamento Duplicados
SELECT
stripe_payment_method_id,
COUNT(*) as count
FROM payment_methods
GROUP BY stripe_payment_method_id
HAVING COUNT(*) > 1;
Melhores Praticas
Para Operadores
- Incentivar Multiplos Cartoes - Clientes com cartoes de backup tem menos falhas de pagamento
- Monitorar Cartoes Recusados - Acompanhar clientes cujos cartoes falham
- Usar Modo de Teste - Sempre testar fluxos de cartao com cartoes de teste antes de producao
Para Suporte ao Cliente
- Verificar Antes de Adicionar - Confirmar identidade do cliente antes de adicionar metodos de pagamento
- Explicar o Processo - Ajudar clientes a entender por que cartoes sao necessarios
- Documentar Problemas - Registrar problemas relacionados a cartao para solucao de problemas
Proximos Passos
- Configuracao Stripe - Configurar integracao Stripe
- Reembolsos Automaticos - Como reembolsos automaticos funcionam
- Cobrancas de Danos - Cobrar clientes por danos
Metodos de Pagamento Prontos
Com metodos de pagamento configurados corretamente, clientes podem pagar por viagens e recarregar suas carteiras sem problemas. Monitore suas taxas de sucesso de pagamento e entre em contato com clientes que tem problemas de pagamento para manter um fluxo de receita saudavel.