Onlinebanking mit HBCI

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Kontoumsätze abfragen und überweisungen tätigen kann dank Onlinebanking und des passenden Internetangebots mittlerweile jeder. Aber können Sie auch ganz einfach die vorgefundenen Informationen in Ihre Datenbank importieren Noch nicht, aber bald: Dieser Beitrag zeigt, wie Sie Kontostände und -umsätze direkt in Ihre Datenbank einlesen. Alles, was Sie brauchen, ist eine passende Onlinebanking-Komponente.

Auf Ihre Bankdaten können Sie online auf verschiedene Arten zugreifen: Manuell über das Internetangebot Ihrer Bank, mit spezieller Banking-Software wie MS Money, Quicken, Star Money und Co., per Webfernsteuerung, wie es im Beitrag „Webseiten fernsteuern“ (Shortlink 467) beschrieben ist, oder mit Ihrem Lieblingstool: Microsoft Access.

Es ist allerdings nicht verwunderlich, dass Access von Haus aus keine Möglichkeit bietet, auf die Webschnittstelle einer Bank zuzugreifen.

Dazu bedarf es der Hilfe von Experten, denn die für den Zugriff verwendete Technik ist dank der vielfältigen Sicherheitsmaßnahmen und der komplizierten Notation von Abfragen an den Bankserver nicht gerade trivial.

Die Firma DataDesign AG stellt jedoch eine Bibliothek bereit, die Ihnen den Zugriff auf die gewünschten Daten wesentlich erleichtert. Der ausschlaggebende Punkt ist hierbei die COM-Schnittstelle, die alle notwendigen Objekte für den Zugriff auf ein Konto bereitstellt. Dieser Beitrag stellt das Objektmodell dieser Bibliothek vor und zeigt anhand einiger Beispiele, wie Sie dieses für den Zugriff via HBCI einsetzen können.

DDBAC: Software und Lizenzbedingungen

Die DataDesign AG bietet auf ihrer Webseite verschiedene Versionen der DDBAC-Komponenten zur Verfügung. Die DDBAC Runtime Version 4.1.6.0 ist komplett kostenlos, das DDBAC Software Development Kit 4.1.6.0 ist an Lizenzbedingungen geknüpft, die Sie beim Download einsehen können. Der wesentliche Punkt lautet: Kostenpflichtig wird der Einsatz einer oder mehrerer DDBAC-Komponenten erst, wenn Sie diese in Projekte integrieren und als Paket an Dritte verkaufen. DataDesign hat aber zugesichert, dass Sie das auf der Heft-CD befindliche oder von http://www.datadesign.de herunterzuladende SDK für die Entwicklung eigener Anwendungen einsetzen und diese im Eigengebrauch kostenlos nutzen dürfen.

Voraussetzungen

Ohne einen Online-Zugang zu Ihrem Konto läuft natürlich gar nichts, und außerdem müssen die HBCI-Funktionen für Sie freigeschaltet sein. Wenn Sie per Onlinebanking via Internet auf Ihr Konto zugreifen, sollten Sie die HBCI-Funktionen darüber freischalten können. Gegebenenfalls ist dazu ein kurzer Schriftwechsel oder ein Telefonat mit der Bank notwendig. Außerdem brauchen Sie natürlich die DataDesign Banking Application Components (DDBAC), die Sie unter [1] herunterladen können. Deren Installation bringt nicht nur die notwendigen Komponenten auf die Festplatte, sondern fügt auch der Systemsteuerung einen Eintrag hinzu. Mit diesem sorgen Sie für die Grundlage des Zugriffs, indem Sie einen oder mehrere Kontakte anlegen und diese später verwalten (siehe Bild 1).

pic001.tif

Bild 1: über die Systemsteuerung verwalten Sie Onlinebanking-Kontakte.

Ein Kontakt ist dabei keinesfalls mit einem Konto gleichzusetzen, auch wenn die Daten, die Sie hierzu von Ihrer Bank erhalten, möglicherweise darauf schließen lassen. über einen Kontakt können Sie auf eines oder mehrere eigene Konten (beispielsweise Girokonto und Sparkonto), unter Umständen aber auch auf fremde Konten zugreifen – etwa, wenn Sie als Buchhalter eines Unternehmens auf dessen Konten Zugriff haben. Diese Feinheiten werden weiter unten in der Beschreibung des Objektmodells deutlicher.

Bis dahin müssen Sie erstmal einen Kontakt anlegen, indem Sie den Administrator für Homebanking Kontakte öffnen und mit einem Klick auf die Schaltfläche Neu den passenden Assistenten starten (siehe Bild 2).

pic002.tif

Bild 2: Start des Assistenten zum Erstellen eines Kontaktes

Für die folgenden Schritte benötigen Sie die Unterlagen, die Ihnen die Bank Ihres Vertrauens geliefert hat – zum Beispiel den Ini-Brief, die Ini-Diskette oder die HBCI-Chipkarte. Sie geben dort die Art des Zugriffs auf den Server (etwa per Pin/Tan oder FinTS), die Bankleitzahl, Ihre Benutzerkennung (aus den Unterlagen – stimmt gegebenenfalls mit Ihrer Kontonummer überein) und weitere Daten ein. Beim Anlegen des neuen Homebanking-Kontakts erfolgt schließlich die Synchronisierung mit den passenden Daten auf dem Bankserver. Wichtig ist, dass Sie sich – wenn Sie mit einer Schlüsseldatei arbeiten – die für den Zugang mit dem auf einem passenden Medium gesicherten Schlüssel gültige Passphrase merken. Diese benötigen Sie später für die erneute Anmeldung am Onlinebanking-Server. Der Vorteil ist, dass Sie damit die lästige Eingabe von TANs umgehen können.

Nach dem Anlegen des Kontakts können Sie diesen von Anwendungen, die auf die DDBAC-Schnittstelle zugreifen, referenzieren und für das Anmelden an den Banking-Server verwenden.

Datenbank HBCI-fähig machen

Nun können Sie endlich mit dem Bau einer Access-Anwendung für den Zugriff auf Ihre Bankkonten beginnen. Als Erstes brauchen Sie einen Verweis auf die Bibliothek DataDesign DDBAC HBCI Banking Application Components (siehe Bild 3).

pic003.tif

Bild 3: Erstellen eines Verweises auf die DDBAC-Bibliothek

Anschließend geht es los – am besten mit dem Untersuchen der Daten, die Sie wie soeben beschrieben mit dem Assistenten vom Onlinebanking-Server auf Ihren Arbeitsrechner gezogen haben.

Dabei handelt es sich nämlich um Basisdaten wie die einzelnen Konten, die Sie unter den von Ihnen angegebenen Benutzerdaten verwalten können. Im Falle des Autors und des im Beispiel verwendeten Zugangs beschränkt sich dies auf zwei Konten – ein Giro- sowie ein Sparkonto. Trotzdem Grund genug, sich einmal anzusehen, wie man auf diese Daten zugreift.

Die Routine aus Listing 1 zeigt, wie das funktioniert. Wie für die meisten folgenden Beispiele benötigen Sie ein Objekt des Typs BACBanking, das gleichzeitig das Wurzelelement des Objektmodells ist. Dieses deklarieren Sie wie folgt in einem Standardmodul:

Dim objBanking As BACBanking

Sie benötigen noch ein weiteres Element, mit dem Sie den aktuellen Onlinebanking-Benutzer referenzieren:

Dim objCustomer As BACCustomer

Listing 1: Ausgabe einiger der beim Synchronisieren mit dem Banking-Server auf dem lokalen Rechner gespeicherten Informationen

Public Sub LokaleDaten()
     Dim objAccountSegment As BACSegment
    
Set objBanking = New BACBanking
    
For Each objCustomer In objBanking.Customers
        
Debug.Print "*** Customer ***"
         Debug.Print "Benutzer-ID: " & objCustomer.UserID
         Debug.Print "Bankleitzahl: " & objCustomer.BankCode
         Debug.Print "Ländercode: " & objCustomer.CountryCode
        
For Each objAccountSegment In objCustomer.AccountData.Segments
            
With objAccountSegment
                 Debug.Print "*** Kontoverbindung ***"
                 Debug.Print "Kontonummer: " & .Item("Kontoverbindung1", "Kontonummer1")
                 Debug.Print "Merkmal: " & .Item("Kontoverbindung1", "Unterkontomerkmal1")
                 Debug.Print "Länderkennzeichen: " & .Item("Kontoverbindung1", "Laenderkennzeichen1")
                 Debug.Print "Kreditinstitutcode: " & .Item("Kontoverbindung1", "Kreditinstitutcode1")
                 Debug.Print "Kontowährung: " & .Item("Kontowaehrung1")
                 Debug.Print "Besitzername: " & .Item("NameEins1")
                 Debug.Print "Produktbezeichnung: " & .Item("Kontoproduktbezeichnung1")
            
End With
         
Next objAccountSegment
    
Next objCustomer

End Sub

Ein BACCustomer-Objekt entspricht einem der Einträge in der Maske aus Bild 2. Dort können Sie – wenn Sie Konten bei verschiedenen Banken besitzen – auch mehrere HBCI-Benutzer einrichten.

Für diesen Fall bietet sich auch die Verwendung der Customers-Auflistung des BACBanking-Objekts an, das Methoden etwa zum Suchen von BACCustomer-Objekten nach dem Benutzernamen oder der Bankleitzahl erlaubt. Im vorliegenden Fall soll jedoch ein einfaches Durchlaufen der vorhandenen BACCustomer-Objekte genügen. Dies geschieht innerhalb einer For Each-Schleife über die Customers-Auflistung. Die Routine LokaleDaten gibt zunächst zu jedem BACCustomer-Objekt die Benutzerkennung (UserID), die Bankleitzahl (BankCode) und den CountryCode aus.

Gut segmentiert

Und dann wird es interessant, denn die folgenden Zeilen greifen erstmals auf ein Element zu, das Sie im Folgenden noch häufiger einsetzen werden: das BACSegment-Objekt. Dabei handelt es sich um ein generisches Objekt, das Sie in der Regel als Container für den Austausch von Informationen mit dem Onlinebanking-Server einsetzen.

Ein solches Segment enthält je nach Einsatzfall verschiedene Eigenschaften, die in der HTML-Datei Segmente.html im Installationsverzeichnis von DDBAC beschrieben ist.

Im Beispiel aus Listing 1 stammen die Segmente aus der AccountData-Auflistung des BACCustomer-Objekts und liefern Informationen zu den einzelnen Bankkonten des aktuellen Benutzerkontos. über die Item-Eigenschaft lassen sich Informationen ausgeben, die Sie über ein oder zwei Parameter identifizieren – Item("Kontoverbindung1", "Kontonummer1") liefert etwa die Kontonummer des ersten in der Auflistung enthaltenen Kontos.

Wie bereits erwähnt, legt die Spezifikationsdatei Segmente.html die hier zu verwendenden Parameter fest. Die Datei ist ellenlang und enthält Informationen zu mehr als 300 Segmenttypen, sodass sich die Frage stellt, wie man den passenden Typ und somit die gültigen Parameter ermittelt. Dies ist ziemlich einfach: Die Eigenschaft Type des BACSegment-Objekts liefert die passende Kennung für das Segment, in diesem Fall HIUPD für Kontoinformation (siehe Bild 4)

pic004.tif

Bild 4: Informationen über die Parameter der Segment-Objekte liefert diese HTML-Datei.

Die Frage, warum man jeweils noch das Zeichen 1 an die Parameternamen anhängen muss, beantwortet die Dokumentation leider nicht, man gewöhnt sich aber schnell daran.

Die Routine aus Listing 1 gibt schließlich einige Informationen es Segments HIUPD aus, mit denen Sie etwa ein Listenfeld zur Auswahl des zu verwaltenden Kontos füllen können.

Online gehen

Mit Onlinebanking hatte das Bisherige noch nicht allzuviel zu tun, was sich aber nun ändert. Vor dem ersten Zugriff auf die Kontodaten müssen Sie sich allerdings zunächst am Server anmelden – was nach einmalig erfolgter Synchronisierung sehr einfach vonstatten geht.

Die Routine aus Listing 2 zeigt nicht nur, wie die Anmeldung erfolgt, sondern auch, wie Sie einen Kontostand abfragen. Die Routine ist eine stark vereinfachte Variante des Ablaufs eines mit der Komponente aus [1] gelieferten Beispiels, das Sie im Unterverzeichnis HBCIPAD als VB6-Projekt finden. Vereinfacht deshalb, weil aus Gründen der übersichtlichkeit beispielsweise die Fehlerbehandlung und sämtliche Sicherheitsabfragen herausgenommen wurden.

Listing 2: Anmelden an den Onlinebanking-Server und Abfragen des aktuellen Kontostandes

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar