Resolvendo Erros de Conciliação de Pagamentos
Um cliente perdeu 2.000 dólares. O líder financeiro passou quatro noites procurando a diferença.
O problema era um job de retry. O sistema processou 120 pagamentos duas vezes. Ele não cobrou os clientes novamente. Apenas adicionou registros duplicados ao livro razão.
Resolvemos isso com uma camada de idempotência. Isso garante que um pagamento seja processado apenas uma vez.
Aqui está como fizemos:
- Usamos um lock do Redis para impedir requisições duplicadas.
- Adicionamos um índice único no banco de dados como backup.
- Usamos uma chave com o nome do gateway e o ID da transação.
Também corrigimos as taxas de câmbio. O sistema usava taxas em tempo real. As taxas mudam rápido. Isso criava lacunas.
Agora, travamos a taxa quando o pedido começa. O cliente vê um preço. A equipe financeira vê o mesmo preço.
Também construímos um relatório diário. Ele compara arquivos CSV do banco com nossos registros. O trabalho mensal caiu de 15 horas para 2 horas.
Pare de depender do Excel e de noites em claro. Erros de pagamento são problemas de design.
Comece com um índice de banco de dados. Adicione locks do Redis conforme você cresce. Nunca presuma que uma notificação de pagamento chegue apenas uma vez.