Bankkarte: IBAN pruefen + BIC/Bank offline aus Bundesbank-BLZ ausfuellen

Neuer Button "BIC & Bank aus IBAN abrufen" im Bankkarten-Modal fuellt BIC +
Banknamen automatisch und validiert dabei die IBAN-Pruefziffer (mod-97).
Leeres IBAN-Feld -> OK-Messagebox statt Anfrage.

Datenschutzfreundlich/offline: kein Dritt-Dienst. Nachschlag im eigenen
Backend ueber die Bundesbank-Bankleitzahlendatei (bankdata-germany) +
ibantools fuer die Pruefziffer. Die IBAN verlaesst nie den Server; zurueck
kommen nur oeffentliche Bankverzeichnis-Daten.

Endpoint: POST /api/bank-cards/iban-lookup (nur eingeloggt).
Wartung: bankdata-germany/ibantools ~quartalsweise per npm update ziehen.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-08-12 12:32:53 +02:00
co-authored by Claude Opus 4.8
parent aff3f7e84a
commit 73bd72bd9f
7 changed files with 196 additions and 6 deletions
+15
View File
@@ -377,8 +377,23 @@ export const bankCardApi = {
const res = await api.delete<ApiResponse<void>>(`/bank-cards/${id}`);
return res.data;
},
// IBAN-Prüfung + BIC/Bank-Nachschlag (offline, Bundesbank-BLZ) die IBAN
// verlässt nur unser eigenes Backend, kein Dritt-Dienst.
ibanLookup: async (iban: string) => {
const res = await api.post<ApiResponse<IbanLookupResult>>(`/bank-cards/iban-lookup`, { iban });
return res.data;
},
};
export interface IbanLookupResult {
valid: boolean;
iban: string;
country?: string;
bic?: string | null;
bankName?: string | null;
blz?: string | null;
}
// Identity Documents
export const documentApi = {
getByCustomer: async (customerId: number, showInactive = false) => {