fix: Stripe-Ratenplan bei Prüfung anhalten, doppelte Pläne verhindern
Befunde aus dem Sicherheits-Review des vorherigen Commits: - Gerät eine Buchung in "Prüfung nötig" (Rückbuchung, Doppelzahlung ...), wird der Stripe-Plan beendet und offene Rechnungen storniert. Nach Bestätigung legt der Worker einen neuen Plan für die offenen Raten an. Vorher zog Stripe auch bei Buchungen in Prüfung weiter ein. - Vor dem Anlegen wird bei Stripe nach einem laufenden Plan der Buchung gesucht; der Idempotenzschlüssel enthält Generation und Start. Verhindert einen zweiten Plan nach verlorener ID und die Rückgabe des alten, beendeten Plans nach einer Prüfung. - Start bei bereits verstrichener Fälligkeit deterministisch am nächsten 9-Uhr-Termin, letzte Rate bleibt am Stichtag. - Rückbuchungs-Event meldet die betroffene Buchung zurück. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
This commit is contained in:
1 parent
c1ad9ad2ca
commit
1ce7947d93
8 files changed
+168
-23
No files matched your search
@@ -115,6 +115,13 @@ export class FakeGateway implements PaymentGateway {
|
||||
});
|
||||
}
|
||||
|
||||
async findInstallmentSchedule(customerId: string, bookingId: string): Promise<{ id: string } | null> {
|
||||
const found = [...this.schedules.values()].find(
|
||||
(s) => s.status === "active" && s.params.customerId === customerId && s.params.metadata.bookingId === bookingId,
|
||||
);
|
||||
return found ? { id: found.id } : null;
|
||||
}
|
||||
|
||||
async cancelInstallmentSchedule(id: string): Promise<void> {
|
||||
const schedule = this.schedules.get(id);
|
||||
if (!schedule) throw new Error(`Unbekannter Zeitplan ${id}`);
|
||||
|
||||
Reference in new issue
Block a user