HBCI4Java - Dokumentation

Support This Project

Was ist HBCI4Java

HBCI4Java ist eine freie Open-Source-Bibliothek für die Entwicklung von HBCI-fähigen Client-Anwendungen in Java. Die Software ist unter der GPL lizensiert.

HBCI4Java-Server ist ein Framework (ebenfalls Open-Source) für die Entwicklung eines eigenen HBCI-Servers. Es implementiert bereits einen Großteil des eigentlichen HBCI-Protokolles, ein "eigener HBCI-Server" muss prinzipiell nur noch die Daten zur Laufzeit bereitstellen und auf eingehende Aufträge reagieren. Auch das Server-Framework ist (ebenso wie der schon enthaltene Demo-Server) unter der GPL lizensiert und steht damit nicht ohne weiteres für die Entwicklung kommerzieller Produkte zur Verfügung.

Die HBCI4Java-Komponenten wurden (fast) vollständig in Java entwickelt. Aus diesem Grund lassen sich mit diesen Bibliotheken plattformunabhängige HBCI-Client- und -Server-Anwendungen implementieren.

Features

Es folgt der Inhalt der Datei FEATURES aus den HBCI4Java-Archiven:

* Unterstützung der Version HBCI-2.01 bis HBCI-2.2 sowie FinTS-3.0

* Unterstützung von dateibasiertem RDH-Verfahren, PIN/TAN-Verfahren (seit 
  FinTS-3.0 auch das Zweischritt-Verfahren) und chipkartenbasierten DDV-
  Verfahren, dabei Unterstützung von Kartentypen 0 und 1, Chipkartenleser 
  Klassen 1-3 (benötigt CTAPI-Treiber) sowie Biometrieeinheit (nur Reiner-SCT)

* Unterstützung von SIZ-RDH-Schlüsseldateien und RDH-2-Schlüsseldateien
  (StarMoney, GENOlite, VR-Networld, ProfiCash, ...)
  
* direkte Unterstützung von OpenHBCI-Schlüsseldateien für RDH-Zugänge

* Unterstützung der folgenden HBCI-Geschäftsvorfälle:
  - Einzelüberweisungen
    . normale (Ueb)
    . Umbuchung (Umb)
    . Spendenüberweisungen (Donation)
    . BZÜ-Überweisungen (UebBZU)
  - Auslandsüberweisungen
  - Sammelüberweisungen (MultiUeb),
    Sammellastschriften (MultiLast)
    (jeweils HBCI4Java-eigener DTAUS-Generator vorhanden)
  - Verwalten von terminierten Überweisungen
    . einreichen (TermUeb), auflisten (TermUebList), 
      bearbeiten (TermUebEdit) und löschen (TermUebDel)
  - Verwalten von Daueraufträgen
    . einreichen (DauerNew), auflisten (DauerList), 
      bearbeiten (DauerEdit) und löschen (DauerDel)
  - Einreichen von Lastschriften (Last)
  - Widerrufen von Lastschriften (StornoLast)
  - Verwalten von Festgeldanlagen
    . zur Zeit nur Abfrage von Konditionen (FestCondList) und Auflisten von
      bestehenden Festgeldanlagen (FestList[All])
  - Abfrage von Kontoinformationen
    . Saldenabfragen (SaldoReq[All])
    . Abholen von Umsatzinformationen (Kontoauszug) (KUms[All|New])
    . Abholen von Kontostammdaten (AccInfo)
    . Abholen von Informationen zu ausgegebenen Karten (Cardlist)
  - Abholen und Senden verschiedener Informationen und Nachrichten
    (CustomMsg, InfoList, InfoOrder)
  - Auswertung des bankinternen Statusprotokolls (Status)
  - Anzeigen von Informationen zu TAN-Listen (nur bei PIN/TAN-Verfahren)
    (TANList)
  - Abholen von Wertpapierdepot-Informationen (WPDepotList)
  
  - es werden u.U. einige weitere Geschäftsvorfälle unterstützt, für die 
    zur Zeit noch keine Highlevel-Unterstützung implementiert ist, 
    aber als Lowlevel-GVs lassen sich diese benutzen

* Erzeugen von Aufträgen:
  - Lowlevel-Interface: *schnelles* Implementieren neuer GVs möglich,
    starke Kontrolle über alle GV-Parameter und Ergebnisdaten
  - Highlevel-Interface: anwendungsorientierte Schnittstelle zum
    Erzeugen von Aufträgen und zum Auswerten von Ergebnisdaten

* einfacher Zugriff auf Job-bezogene Statusinformationen einer
  HBCI-Antwortnachricht

* einfache Identifizierung von erzeugten Aufträgen und überprüfen
  deren Status' im Statusprotokoll

* Zuordnung von Bankleitzahlen zu Kreditinstituts-Bezeichnungen

* diverse Tools zum Auslesen/Bearbeiten der DDV-Chipkarte, zum Erzeugen
  eines INI-Briefes, zum Bearbeiten der Passports (Sicherheitsmedien), usw.
  
* Batch-Tool für automatisierte Abarbeitung von HBCI-Jobs, die in einer
  Textdatei definiert werden können

* Schlüsselverwaltung:
  - Sperren von Nutzerschlüsseln
  - Neugenerieren von Nutzerschlüsseln
  - Setzen von Nutzerschlüsseln auf vorgegebene Werte 

* dynamisches Ändern von Kernel-Parametern zur Laufzeit

* verfolgen der HBCI-Kernel-Aktivitäten durch Callbacks möglich 

* dynamische Anpassungen an HBCI-Server mit "Fehlern" in der 
  Implementation des HBCI-Standards

* Callback-Mechanismus für die Kommunikation zwischen HBCI-Kernel
  und Anwendung, um unabhängig von der Laufzeitumgebung (Applikation,
  Servlet, Applet, mit oder ohne GUI usw.) zu sein
  
* Möglichkeit, bestimmte von HBCI4Java erkannte Fehler im HBCI-Dialog
  zu ignorieren (für die Entwicklungsphase von Anwendungen)
  
* Demo-Applet bzw. Java WebStart Anwendung verfügbar

* Einsatz in multithreaded Anwendungen möglich


* automatische Auswertung der BPD:
  - automatisches Benutzen der jeweils höchsten unterstützten
    Version eines Geschäftsvorfalls
  - automatisches Erzeugen zusätzlicher Nachrichten, wenn max.
    Anzahl von GVs pro Nachricht überschritten wird
  - automatisches Überprüfen, ob bestimmte Einschränkungen bzgl.
    eines zu erzeugenden Auftrages eingehalten wurden
  - automatisches Erkennen, ob ein bestimmter Geschäftsvorfall
    von der Bank überhaupt angeboten wird
  - bei PIN/TAN-Verfahren: automatische Erkennung von Geschäftsvorfällen,
    die eine TAN benötigen

* automatisches Überprüfen der verwendeten Kontonummern anhand
  der für die jeweilige Bank zu verwendenden Prüfzifferverfahren 

* automatisches Aktualisieren der BPD und UPD beim Wechsel der 
  für die Dialoge benutzten HBCI-Version

* automatisches Konvertieren und Parsen von Datums- und Zeitangaben
  in bzw. von Locale-spezifischen Formaten

* für jedes Sicherheitsmedium wird optional automatisch die damit zuletzt 
  benutzte HBCI-Version verwendet  

* passwortgeschützte Sicherheitsmedien

* Speichern von (geänderten) Zugangsdaten auf der Chipkarte 
  (für DDV-Passports) möglich (wird teilweise für Initialisierung
  der Benutzerkennung benötigt)

* sauberes Fehlerbehandlungs- und Status-System

* Erzeugen noch nicht existierender bzw. Initialisieren nicht 
  initialisierter Sicherheitsmedien (=Passports) zur Laufzeit und 
  ohne zusätzlichen Programmcode innerhalb der HBCI-Anwendung
  (Beispiel siehe org.kapott.hbci.tools.AnalyzeReportOfTransactions)

* automatisches Erzeugen zusätzlicher HBCI-Nachrichten, wenn
  in einer Antwortnachricht nicht alle verfügbaren Antwortdaten
  enthalten sind --> Abholen der restlichen Daten

* völlig automatisches Aktualisieren von BPD, UPD und Institutsschlüsseln

--- Details der Implementation von HBCI4Java

* lauffähig auf allen Plattformen mit Java Runtime Environment 1.4+,
  für Chipkartensupport wird zusätzlich Unterstützung von dynamischen
  Bibliotheken benötigt.

* austauschbare integrierte HBCI-Spezifikation (XML-Format),
  damit leicht Anpassung an neue Versionen bzw. Debugging möglich
  
* I18N-Support für Deutsch und Englisch (noch nicht für alle Texte)

* modulares System für folgende Komponenten, ermöglicht einfaches
  Hinzufügen weiterer Module:
  - Kommunikationspfade (Standard-HBCI, PIN/TAN (HTTPS))
  - Kommunikationsfilter (Base64)
  - Datentypen für Datenelemente
  - Highlevel-Support für Geschäftsvorfälle
  - intern verwendete HBCI-Spezifikation
  - Sicherheitsmedien (=Passports: RDH mit Datei, DDV mit Chipkarte,
    PIN/TAN mit Datei)
  - Module für Anpassung an "fehlerhafte" HBCI-Server
      

Einsatzmöglichkeiten

Leider wird HBCI oft nur als eine Alternative für das Homebanking angesehen, welches viele Banken auch über ein Web-Frontend oder mit Hilfe proprietärer Software anbieten. Doch mit HBCI lassen sich viel weitergehende Anwendungen realisieren:

Status

Zur Zeit ist folgender Entwicklungsstand erreicht:

Dokumentation

NEU! Inzwischen steht auch wallstreet9 als Demo-Applet zur Verfügung. Die neueste Version von wallstreet9 lässt sich inzwischen sowohl als Standalone-Anwendung starten (Download in der Download-Area) als auch als Applet einbinden.

An dieser Stelle sei auf die API-Dokumentation verwiesen, die auch eine Beschreibung für die Benutzung von HBCI4Java enthält. Diese API-Dokumentation bezieht sich auf die Snapshots, die in der Download-Sektion zu haben sind. Die Dokumentation zu den jeweiligen "offiziellen" Releases sind in den Paketen selbst enthalten.

Es folgen einige Informationen zu den Interna von HBCI4Java:

Ausblick

Folgendes ist für die nächste Zukunft geplant:

diverse Tools zur Administration und für Bank-Tests

siehe Paket org.kapott.hbci.tools sowie den HBCI4Java Passport Editor

Unterstützung für RSA-Chipkarten

begonnen

Unterstützung gängiger RSA-Schlüsseldisketten-Formate

Unterstützung des SIZ-Dateiformates:funktioniert (mit Ausnahme von Schlüsseländerungen)

RDH-2-Schlüsseldisketten:werden unterstützt

Reaktivieren der Möglichkeit, den HBCI-Kernel als "Payment-Provider" im LAN benutzen zu können

war schon realisiert, aus konzeptionellen Gründen vorerst entfernt

Unterstützung von Mehrfachsignaturen

Clientseitig implementiert, aber nicht getestet

Wrapper-Bibliotheken, um HBCI4Java aus anderen Programmiersprachen heraus nutzen zu können

für Delphi als Kundenprojekt bereits realisiert (Quellen auf Anfrage);
für C++ gibt es ein separates Teilprojekt ((HBCI4Java)4CPP), welches im Download-Bereich zu beziehen ist.

Unterstützung von RDH-3, RDH-4 (FinTS 3.0) mit Zertifikaten

in Arbeit

Ausbau der Server-Module

als separates Paket (HBCI4Java-Server) verfügbar

Valid HTML 4.01! Valid CSS!