Mit Geld arbeiten: Zahlungen und Belastungen
Die Aufteilung der Verantwortung
Der Zahlungsanbieter behandelt die Karte; Sie behandeln die Bestellung. Details werden im Formular des Anbieters oder einer isolierten Komponente eingegeben, und auf Ihrer Seite wird nur eine Kennung gespeichert. Das hält Sie aus dem Großteil der schweren Konformitätswelt heraus.
Der Betrag wird auf dem Server aus Ihren Preisen berechnet. Ein Betrag, der vom Client kam, ist eine Anfrage, keine Tatsache.
Zustände, keine Flaggen
Eine Bestellung durchläuft definierte Zustände: erstellt, wartet auf Zahlung, bezahlt, fehlgeschlagen, erstattet. Jeder Übergang wird mit Zeit und Grund erfasst. Eine boolesche „bezahlt“-Flagge verliert die Geschichte genau dann, wenn man sie braucht.
Benachrichtigungen des Zahlungsanbieters treffen außer der Reihe und manchmal doppelt ein. Behandeln Sie sie nach Ereigniskennung, auf eine sicher wiederholbare Weise.
Abgleich
Bauen Sie einen täglichen Prozess, der Ihre Datensätze mit dem Bericht des Anbieters vergleicht. Abweichungen kommen immer vor; die Frage ist, ob Sie sie finden oder der Kunde.
Im Detail
Speichern Sie Beträge als ganze Zahlen in der kleinsten Einheit, nie als Fließkomma, und stets mit einem Währungscode. Speichern Sie auch den Umrechnungskurs und den tatsächlich gezeigten Preis — das sind die Daten, die in jedem Streitfall und jedem Bericht gebraucht werden.