Class AbstractHBCIPassport

  • All Implemented Interfaces:
    Serializable, HBCIPassport, HBCIPassportInternal
    Direct Known Subclasses:
    PinTanPassport

    public abstract class AbstractHBCIPassport
    extends Object
    implements HBCIPassportInternal, Serializable

    Diese Klasse stellt die Basisklasse für alle "echten" Passport-Implementationen dar. Hier werden bereits einige Methoden implementiert sowie einige zusätzliche Hilfsmethoden zur Verfügung gestellt.

    Aus einer HBCI-Anwendung heraus ist hier nur eine einzige Methode interessant, um eine Instanz eines bestimmtes Passports zu erzeugen

    See Also:
    Serialized Form
    • Method Detail

      • getInstance

        public static HBCIPassport getInstance​(HBCICallback callback,
                                               Map<String,​String> properties,
                                               Object init)
        Erzeugt eine Instanz eines HBCI-Passports. Der Typ der erzeugten Passport-Instanz wird hierbei dem Wert des HBCI-Parameters client.passport.default entnommen. Gültige Werte für diesen HBCI-Parameter sind die gleichen wie beim Aufruf der Methode
        Returns:
        Instanz eines HBCI-Passports
      • getAccounts

        public final List<Konto> getAccounts()
        Description copied from interface: HBCIPassport
        Gibt ein Array mit Kontoinformationen zurück. Auf die hier zurückgegebenen Konten kann via HBCI zugegriffen werden. Nicht jede Bank unterstützt diese Abfrage, so dass dieses Array u.U. auch leer sein kann, obwohl natürlich via HBCI auf bestimmte Konten zugegriffen werden kann. In diesem Fall müssen die Kontoinformationen anderweitig ermittelt werden (manuelle Eingabe des Anwenders).
        Specified by:
        getAccounts in interface HBCIPassport
        Returns:
        Array mit Kontoinformationen über verfügbare HBCI-Konten
      • getRequiredSigsCount

        public final int getRequiredSigsCount​(String accountNumber,
                                              String gvCode)
      • fillAccountInfo

        public final void fillAccountInfo​(Konto account)
        Description copied from interface: HBCIPassport
        Ausfüllen fehlender Kontoinformationen. In der Liste der verfügbaren Konten (siehe HBCIPassport.getAccounts()) wird nach einem Konto gesucht, welches die gleiche Kontonummer hat wie das übergebene Konto account. Wird ein solches Konto gefunden, so werden die Daten dieses gefundenen Kontos in das account-Objekt übertragen.

        Diese Methode kann benutzt werden, wenn zu einem Konto nicht alle Daten bekannt sind, wenigstens aber die Kontonummer.

        Specified by:
        fillAccountInfo in interface HBCIPassport
        Parameters:
        account - unvollständige Konto-Informationen, bei denen die fehlenden Daten nachgetragen werden
      • findAccountByAccountNumber

        public final Konto findAccountByAccountNumber​(String number)
      • getHost

        public String getHost()
        Description copied from interface: HBCIPassport
        Gibt den Hostnamen des HBCI-Servers für dieses Passport zurück. Handelt es sich bei dem Passport-Objekt um ein PIN/TAN-Passport, so enthält dieser String die URL, die für die HTTPS-Kommunikation mit dem HBCI-Server der Bank benutzt wird.
        Specified by:
        getHost in interface HBCIPassport
        Returns:
        Hostname oder IP-Adresse des HBCI-Servers
      • getPort

        public final Integer getPort()
        Description copied from interface: HBCIPassport
        Gibt die TCP-Portnummer auf dem HBCI-Server zurück, zu der eine HBCI-Verbindung aufgebaut werden soll. In der Regel ist das der Port 3000, für PIN/TAN-Passports wird hier 443 (für HTTPS-Port) zurückgegeben. Der zu benutzende TCP-Port für die Kommunikation kannn mit HBCIPassport.setPort(Integer) geändert werden.
        Specified by:
        getPort in interface HBCIPassport
        Returns:
        TCP-Portnummer auf dem HBCI-Server
      • getUserId

        public String getUserId()
        Description copied from interface: HBCIPassport
        Gibt die Benutzerkennung zurück, die zur Authentifikation am HBCI-Server benutzt wird.
        Specified by:
        getUserId in interface HBCIPassport
        Returns:
        Benutzerkennung für Authentifikation
      • getCustomerId

        public String getCustomerId()
        Description copied from interface: HBCIPassport

        Gibt die Kunden-ID zurück, die von HBCI4Java für die Initialisierung eines Dialoges benutzt wird. Zu einer Benutzerkennung (HBCIPassport.getUserId()), welche jeweils an ein bestimmtes Medium gebunden ist, kann es mehrere Kunden-IDs geben. Die verschiedenen Kunden-IDs entsprechen verschiedenen Rollen, in denen der Benutzer auftreten kann.

        In den meisten Fällen gibt es zu einer Benutzerkennung nur eine einzige Kunden-ID. Wird von der Bank keine Kunden-ID explizit vergeben, so ist die Kunden-ID identisch mit der Benutzerkennung.

        Specified by:
        getCustomerId in interface HBCIPassport
        Returns:
        Kunden-ID für die HBCI-Kommunikation
      • setCustomerId

        public final void setCustomerId​(String customerid)
        Description copied from interface: HBCIPassport
        Setzen der zu verwendenden Kunden-ID. Durch Aufruf dieser Methode wird die Kunden-ID gesetzt, die beim nächsten Ausführen eines HBCI-Dialoges (AbstractHbciDialog#execute(boolean, boolean)) benutzt wird. Diese neue Kunden-ID wird dann außerdem permanent im jeweiligen Sicherheitsmedium gespeichert (sofern das von dem Medium unterstützt wird).
        Specified by:
        setCustomerId in interface HBCIPassport
        Parameters:
        customerid - die zu verwendende Kunden-ID; wird keine customerid angegeben (null oder ""), so wird automatisch die User-ID verwendet.
        See Also:
        HBCIPassport.getCustomerId()
      • getBPDVersion

        public final String getBPDVersion()
        Description copied from interface: HBCIPassport
        Gibt die Versionsnummer der lokal gespeicherten BPD zurück. Sind keine BPD vorhanden, so wird "0" zurückgegeben. Leider benutzen einige Banken "0" auch als Versionsnummer für die tatsächlich vorhandenen BPD, so dass bei diesen Banken auch dann "0" zurückgegeben wird, wenn in Wirklichkeit BPD vorhanden sind.
        Specified by:
        getBPDVersion in interface HBCIPassport
        Returns:
        Versionsnummer der lokalen BPD
      • getUPDVersion

        public final String getUPDVersion()
        Description copied from interface: HBCIPassport
        Gibt die Versionsnummer der lokal gespeicherten UPD zurück. Sind keine UPD lokal vorhanden, so wird "0" zurückgegeben. Siehe dazu auch HBCIPassport.getBPDVersion().
        Specified by:
        getUPDVersion in interface HBCIPassport
        Returns:
        Versionsnummer der lokalen UPD
      • getInstName

        public final String getInstName()
        Description copied from interface: HBCIPassport
        Gibt den Namen des Kreditinstitutes zurück. Diese Information wird aus den BPD ermittelt. Sind keine BPD vorhanden bzw. steht da kein Name drin, so wird null zurückgegeben.
        Specified by:
        getInstName in interface HBCIPassport
        Returns:
        Name des Kreditinstitutes
      • getSupportedLowlevelJobs

        public Map<String,​String> getSupportedLowlevelJobs()

        Gibt die Namen aller vom aktuellen HBCI-Zugang (d.h. Passport) unterstützten Lowlevel-Jobs zurück.

        In dem zurückgegebenen Properties-Objekt enthält jeder Eintrag als Key den Lowlevel-Job-Namen; als Value wird die Versionsnummer des jeweiligen Geschäftsvorfalls angegeben, die von HBCI4Java mit dem aktuellen Passport und der aktuell eingestellten HBCI-Version benutzt werden wird.

        (Prinzipiell unterstützt HBCI4Java für jeden Geschäftsvorfall mehrere GV-Versionen. Auch eine Bank bietet i.d.R. für jeden GV mehrere Versionen an. Wird mit HBCI4Java ein HBCI-Job erzeugt, so verwendet HBCI4Java immer automatisch die höchste von der Bank unterstützte GV-Versionsnummer. Diese Information ist für den Anwendungsentwickler kaum von Bedeutung und dient hauptsächlich zu Debugging-Zwecken.)

        Zum Unterschied zwischen High- und Lowlevel-Jobs siehe die Beschreibung im Package org.kapott.hbci.GV.

        Specified by:
        getSupportedLowlevelJobs in interface HBCIPassportInternal
        Returns:
        Sammlung aller vom aktuellen Passport unterstützten HBCI- Geschäftsvorfallnamen (Lowlevel) mit der jeweils von HBCI4Java verwendeten GV-Versionsnummer.
      • getSyntaxDef

        public Node getSyntaxDef​(String type)
        Specified by:
        getSyntaxDef in interface HBCIPassportInternal
        Parameters:
        type - the name of the syntaxelement to be returned
        Returns:
        a XML-node with the definition of the requested syntaxelement
      • getLowlevelJobRestrictions

        public Map<String,​String> getLowlevelJobRestrictions​(String gvname)

        Gibt für einen Job alle bekannten Einschränkungen zurück, die bei der Ausführung des jeweiligen Jobs zu beachten sind. Diese Daten werden aus den Bankparameterdaten des aktuellen Passports extrahiert. Sie können von einer HBCI-Anwendung benutzt werden, um gleich entsprechende Restriktionen bei der Eingabe von Geschäftsvorfalldaten zu erzwingen (z.B. die maximale Anzahl von Verwendungszweckzeilen, ob das Ändern von terminierten Überweisungen erlaubt ist usw.).

        Die einzelnen Einträge des zurückgegebenen Properties-Objektes enthalten als Key die Bezeichnung einer Restriktion (z.B. "maxusage"), als Value wird der entsprechende Wert eingestellt. Die Bedeutung der einzelnen Restriktionen ist zur Zeit nur der HBCI-Spezifikation zu entnehmen. In späteren Programmversionen werden entsprechende Dokumentationen zur internen HBCI-Beschreibung hinzugefügt, so dass dafür eine Abfrageschnittstelle implementiert werden kann.

        I.d.R. werden mehrere Versionen eines Geschäftsvorfalles von der Bank angeboten. Diese Methode ermittelt automatisch die "richtige" Versionsnummer für die Ermittlung der GV-Restriktionen aus den BPD (und zwar die selbe, die HBCI4Java beim Erzeugen eines Jobs benutzt).

        Siehe dazu auch AbstractHBCIJob.getJobRestrictions().

        Specified by:
        getLowlevelJobRestrictions in interface HBCIPassportInternal
        Parameters:
        gvname - Lowlevel-Name des Geschäftsvorfalles, für den die Restriktionen ermittelt werden sollen
        Returns:
        Properties-Objekt mit den einzelnen Restriktionen
      • getBPD

        public final Map<String,​String> getBPD()
        Description copied from interface: HBCIPassport
        Gibt die gespeicherten BPD zurück. Die Auswertung der BPD seitens einer HBCI-Anwendung auf direktem Weg wird nicht empfohlen, da es keine Dokumentation über die Namensgebung der einzelnen Einträge gibt.
        Specified by:
        getBPD in interface HBCIPassport
        Returns:
        die Bankparamterdaten oder null, falls diese nicht im Passport vorhanden sind
      • getHBCIVersion

        public final String getHBCIVersion()
        Description copied from interface: HBCIPassport
        Gibt die HBCI-Version zurück, die zuletzt verwendet wurde. Der hier zurückgegebene Wert ist der selbe, der bei der Initialisierung des HBCIJobsDialog verwendet werden kann. Um also einen HBCIHandler zu erzeugen, der mit der HBCI-Version arbeitet, mit der ein Passport-Objekt zuletzt benutzt wurde, so kann das mit new HBCIHandler(passport.getHBCIVersion(),passport) erfolgen (vorausgesetzt, passport.getHBCIVersion() gibt einen nicht-leeren String zurück.
        Specified by:
        getHBCIVersion in interface HBCIPassport
        Returns:
        Die zuletzt verwendete HBCI-Version. Ist diese Information nicht verfügbar, so wird ein leerer String zurückgegeben.
      • getUPD

        public final Map<String,​String> getUPD()
        Description copied from interface: HBCIPassport
        Gibt die gespeicherten UPD (User-Parameter-Daten) zurück. Eine direkte Auswertung des Inhalts dieses Property-Objektes wird nicht empfohlen, da die Benennung der einzelnen Einträge nicht explizit dokumentiert ist.
        Specified by:
        getUPD in interface HBCIPassport
        Returns:
        die Userparameterdaten oder null, falls diese nicht im Passport vorhanden sind
      • getBLZ

        public final String getBLZ()
        Description copied from interface: HBCIPassport

        Gibt die Bankleitzahl des Kreditinstitutes zurück. Bei Verwendung dieser Methode ist Vorsicht geboten, denn hier ist die Bankleitzahl der Bank gemeint, die den HBCI-Server betreibt. I.d.R. deckt sich diese BLZ zwar mit der BLZ der Konten des Bankkunden, es gibt aber auch Fälle, wo die BLZ, die mit dieser Methode ermittelt wird, anders ist als die BLZ bei den Kontoverbindungen des Kunden.

        Für die Ermittlung der BLZ für die Kontodaten sollte statt dessen die Methode HBCIPassport.getAccounts() benutzt werden.

        Specified by:
        getBLZ in interface HBCIPassport
        Returns:
        die BLZ der Bank
      • getCountry

        public final String getCountry()
        Description copied from interface: HBCIPassport
        Gibt den Ländercode der Bank zurück. Für deutsche Banken ist das der String "DE".
        Specified by:
        getCountry in interface HBCIPassport
        Returns:
        Ländercode der Bank