Développement
Un bug de paiement que personne n'arrivait à reproduire
Toi
Depuis la mise en ligne de mardi, environ 1 paiement sur 40 échoue avec « amount mismatch ». Impossible à reproduire. Le dépôt et les 2 000 dernières lignes de journal sont joints. Trouve et corrige.
- checkout-service (dépôt)
- payments.log, 2 000 lignes
Ce qu'il a fait
- JournauxA regroupé les 51 échecs : tous en KWD, BHD ou OMR.
- CodeCes devises ont 3 décimales. Le commit de mardi arrondit tout à 2.
- TerminalA écrit un test qui échoue avec 12,345 KWD, puis corrigé roundAmount().
- TerminalSuite complète : 214 tests passent. Demande de fusion ouverte.
SunuXel
Trouvé. Les échecs ne sont pas aléatoires : ce sont toutes les commandes payées en dinar koweïtien, dinar bahreïni ou rial omanais. Ces devises ont trois décimales, et le changement de mardi arrondit tous les montants à deux. Le prestataire reçoit 12,35 quand le panier dit 12,345, alors il refuse le paiement.
La correction lit le nombre de décimales dans le code de la devise au lieu de supposer deux. J'ai ajouté un test pour chaque devise à trois décimales, pour que ça ne revienne pas sans bruit.
Livré · Demande de fusion n° 318 · 214 tests passent