Backend, APIs & Daten · Gemischt

Mit Geld arbeiten: Zahlungen und Belastungen

In einem Satz: Speichern Sie nie Kartendaten, vertrauen Sie nie einem Betrag, der vom Client kam, und führen Sie stets ein unveränderliches Ereignisprotokoll.

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.