Résoudre les erreurs de réconciliation de paiement
Un client a perdu 2 000 dollars. Leur responsable financier a passé quatre nuits à chercher l'origine de l'écart.
Le problème venait d'un job de retry. Le système a traité 120 paiements deux fois. Il n'a pas facturé à nouveau les clients. Il a seulement ajouté des doublons dans le grand livre.
Nous avons résolu cela avec une couche d'idempotence. Cela garantit qu'un paiement n'est traité qu'une seule fois.
Voici comment nous avons procédé :
- Nous avons utilisé un verrou Redis pour empêcher les doubles requêtes.
- Nous avons ajouté un index unique dans la base de données en guise de sécurité.
- Nous avons utilisé une clé combinant le nom de la passerelle et l'ID de la transaction.
Nous avons également corrigé le problème des taux de change. Le système utilisait des taux en temps réel. Les taux changent rapidement, ce qui créait des écarts.
Désormais, nous verrouillons le taux au moment où la commande commence. Le client voit un prix. L'équipe financière voit le même prix.
Nous avons également mis en place un rapport quotidien. Il compare les fichiers CSV de la banque à nos enregistrements. Le travail mensuel est passé de 15 heures à 2 heures.
Arrêtez de compter sur Excel et les nuits blanches. Les erreurs de paiement sont des problèmes de conception.
Commencez par un index de base de données. Ajoutez des verrous Redis à mesure que vous grandissez. Ne partez jamais du principe qu'une notification de paiement n'arrive qu'une seule fois.