feat: Oberflaeche fuer die Bankanbindung

Einstellungen -> "Bankkonten direkt verbinden": Zugangsdaten hinterlegen,
Land waehlen, Bank suchen, verbinden. Nach der Autorisierung landet man auf
/bank/rueckkehr, wo der Code gegen die Sitzung getauscht wird – ueber den
Server, denn der Code ist ein Einmal-Geheimnis und die Anfrage muss mit dem
privaten Schluessel signiert werden, der den Server nie verlaesst.

Danach stehen die gefundenen Bankkonten da und werden je einem Konto in
Certain zugeordnet. Die Auswahl zeigt nur Konten passender Waehrung, und
solange nichts zugeordnet ist, steht dabei, dass von diesem Konto nichts
abgerufen wird.

Die Einrichtungsanleitung nennt die Rueckleitungs-Adresse kopierfertig – sie
muss bei Enable Banking hinterlegt werden, und ohne sie scheitert die
Autorisierung mit einer Fehlermeldung der Bank, die nichts erklaert.

Laeuft die Zustimmung bald ab, steht das farbig an der Verbindung statt dass
der Abruf eines Tages stumm aufhoert.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Guido
2026-08-26 21:34:41 +02:00
co-authored by Claude Opus 5
parent 7a3bd200b1
commit 735ece6843
8 changed files with 508 additions and 0 deletions
+47
View File
@@ -561,5 +561,52 @@
"deleteSender": "Zuordnung entfernen",
"deleteSenderConfirm": "Zuordnung „{{text}}“ entfernen? Bereits erfasste Zahlungen bleiben.",
"anyCurrency": "jede Währung"
},
"bank": {
"title": "Bankkonten direkt verbinden",
"intro": "Seit PSD2 müssen EU-Banken eine Schnittstelle anbieten – aber nur für lizenzierte Dienste. Enable Banking hält diese Lizenz und reicht sie weiter. Damit lassen sich N26 und Revolut direkt abrufen, ohne CSV. Die Schweiz fällt nicht unter PSD2; Raiffeisen bleibt beim Datei-Import.",
"setupTitle": "Einmal einrichten",
"setupHint": "Du brauchst eine eigene Anwendung bei Enable Banking. Mitliefern lässt sich das nicht – der Schlüssel ist an deine Registrierung gebunden.",
"setupStep1": "Auf enablebanking.com anmelden (Konto wird beim ersten Anmelden angelegt).",
"setupStep2": "Eine Anwendung im Bereich „Production“ anlegen und die Schlüsseldatei (.pem) herunterladen. Sie wird erst aktiv, wenn du deine eigenen Konten verknüpfst.",
"setupStep3": "Diese Adresse dort als Rückleitung („redirect URL“) eintragen:",
"setupStart": "Zugangsdaten eintragen",
"appTitle": "Zugangsdaten von Enable Banking",
"appReady": "Anwendung hinterlegt",
"appSaved": "Gespeichert.",
"applicationId": "Application ID",
"privateKey": "Privater Schlüssel (Inhalt der .pem-Datei)",
"privateKeyKeep": "Privater Schlüssel (leer lassen = unverändert)",
"privateKeyHint": "Wird verschlüsselt gespeichert und verlässt den Server nie. Mit ihm wird jede Anfrage an die Bank signiert – behandle ihn wie ein Passwort.",
"baseUrl": "Öffentliche Adresse dieser Installation",
"baseUrlHint": "Muss mit https:// beginnen und von aussen erreichbar sein – Banken leiten nicht auf eine unverschlüsselte Adresse zurück. Genau diese Adresse plus /bank/rueckkehr trägst du bei Enable Banking ein.",
"country": "Land der Bank",
"findBanks": "Banken suchen",
"noBanks": "Für dieses Land wurde nichts gefunden.",
"pickBank": "{{n}} Banken gefunden – wähle deine aus:",
"connect": "Verbinden",
"notMapped": "noch keinem Konto zugeordnet",
"mapHint": "Ohne Zuordnung wird von diesem Konto nichts abgerufen.",
"noAccountsFound": "Es wurden keine Konten übermittelt.",
"sync": "Umsätze holen",
"synced": "{{geholt}} Umsätze geprüft · {{neu}} neu im Eingang.",
"noMapping": "Kein Konto zugeordnet – ordne oben zuerst zu, dann wird abgerufen.",
"lastSync": "zuletzt geholt am {{datum}}",
"neverSynced": "noch nie geholt",
"lastError": "Fehler",
"validUntil": "Zustimmung gültig bis {{datum}}",
"expiresSoon": "Zustimmung läuft am {{datum}} ab – danach musst du neu autorisieren.",
"disconnect": "Verbindung trennen",
"disconnectConfirm": "Verbindung zu „{{name}}“ trennen? Bereits abgerufene Buchungen bleiben."
},
"bankReturn": {
"title": "Rückkehr von der Bank",
"working": "Die Zustimmung wird abgeschlossen …",
"ok": "Verbunden. {{n}} Konten gefunden.",
"next": "Ordne sie jetzt in den Einstellungen deinen Konten in Certain zu – danach lassen sich die Umsätze holen.",
"failed": "Das hat nicht geklappt",
"failedHint": "Der Code von der Bank gilt nur einmal und nur kurz. Starte die Verbindung in den Einstellungen neu.",
"missing": "Die Bank hat keinen Code zurückgegeben.",
"toSettings": "Zu den Einstellungen"
}
}