Idempotência: como evitar cobrança duplicada e pedidos repetidos
O cliente clicou duas vezes em "pagar" e foi cobrado duas vezes. Idempotência é a técnica que impede isso — e todo sistema com pagamentos precisa dela.
Por Equipe We Codex3 min de leitura
A internet oscila. O botão é clicado duas vezes. O app tenta de novo depois de um erro de rede. O webhook chega repetido. Em todos esses casos, a mesma operação pode ser executada mais de uma vez — e, com dinheiro envolvido, isso é grave.
O que é idempotência
Uma operação é idempotente quando executá-la várias vezes tem o mesmo efeito que executá-la uma vez. Consultar um pedido é naturalmente idempotente. Criar um pagamento não é — a menos que você o torne.
A chave de idempotência
O cliente gera um identificador único para cada intenção ("pagamento do pedido 123, tentativa de agora") e o envia junto. O servidor guarda o resultado associado à chave. Se a mesma chave chegar de novo, devolve o resultado salvo em vez de cobrar outra vez.
POST /pagamentos
Idempotency-Key: 7c9e6679-7425-40de-944b-e07fc1f90ae7Onde aplicar
- Pagamentos e estornos.
- Criação de pedidos.
- Envio de mensagens e e-mails.
- Processamento de webhooks (Webhooks confiáveis: idempotência, retentativas e ordem dos eventos).
- Sincronização de apps offline (Offline-first: apps que continuam funcionando sem internet).
Complementos no front
Desabilite o botão após o clique e mostre que está processando (Formulários que convertem: validação em tempo real sem irritar o usuário). Retentativas automáticas só para operações idempotentes (Gerenciando o erro 429 Too Many Requests: exponential backoff e retry no cliente).
No banco
Restrições de unicidade e transações garantem que duas requisições simultâneas não passem ao mesmo tempo (Transações no banco: quando duas operações precisam acontecer juntas).
A We Codex constrói fluxos de pagamento confiáveis em e-commerces e sistemas. Fale com a gente.
- Idempotência
- Pagamentos
- APIs
- Backend
Resolver de vez, com quem faz isso todo dia
Precisa de uma API ou integração que não caia quando o negócio crescer?
Este artigo mostra o caminho. A implementação sob medida — o detalhe que muda o resultado no seu caso — é o trabalho da We Codex, empresa de engenharia do grupo Wocom.
Continue lendo
Tudo sobre Backend & APIs- Ler artigo
Backend & APIs3 min
Webhooks confiáveis: idempotência, retentativas e ordem dos eventos
Webhooks chegam duplicados, fora de ordem ou nem chegam — e o pedido fica "pendente" para sempre. Veja como receber webhooks de forma confiável.
- Ler artigo
Backend & APIs3 min
Transações no banco: quando duas operações precisam acontecer juntas
O pedido foi criado, mas o estoque não baixou. O pagamento foi registrado, mas o pedido ficou pendente. Transações evitam esses estados pela metade.
- Ler artigo
Segurança3 min
Gerenciando o erro 429 Too Many Requests: exponential backoff e retry no cliente
Seu app recebe 429 e responde tentando de novo imediatamente — piorando tudo. Veja como implementar exponential backoff com jitter e dar um feedback decente ao usuário.