Class AbstractHBCIPassport
- java.lang.Object
-
- org.kapott.hbci.passport.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
-
-
Field Summary
Fields Modifier and Type Field Description protected HBCICallbackcallbackprotected Map<String,String>properties
-
Constructor Summary
Constructors Constructor Description AbstractHBCIPassport(String hbciversion, Map<String,String> properties, HBCICallback callback, HBCIProduct product)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidfillAccountInfo(Konto account)Ausfüllen fehlender Kontoinformationen.KontofindAccountByAccountNumber(String number)List<Konto>getAccounts()Gibt ein Array mit Kontoinformationen zurück.StringgetBLZ()Gibt die Bankleitzahl des Kreditinstitutes zurück.Map<String,String>getBPD()Gibt die gespeicherten BPD zurück.StringgetBPDVersion()Gibt die Versionsnummer der lokal gespeicherten BPD zurück.HBCICallbackgetCallback()StringgetCountry()Gibt den Ländercode der Bank zurück.StringgetCustomerId()Gibt die Kunden-ID zurück, die von HBCI4Java für die Initialisierung eines Dialoges benutzt wird.HBCIProductgetHbciProduct()StringgetHBCIVersion()Gibt die HBCI-Version zurück, die zuletzt verwendet wurde.StringgetHost()Gibt den Hostnamen des HBCI-Servers für dieses Passport zurück.static HBCIPassportgetInstance(HBCICallback callback, Map<String,String> properties)static HBCIPassportgetInstance(HBCICallback callback, Map<String,String> properties, Object init)Erzeugt eine Instanz eines HBCI-Passports.static HBCIPassportgetInstance(HBCICallback callback, Map<String,String> properties, String name)static HBCIPassportgetInstance(HBCICallback callback, Map<String,String> properties, String name, Object init)StringgetInstName()Gibt den Namen des Kreditinstitutes zurück.Map<String,String>getJobRestrictions(String specname)Map<String,String>getJobRestrictions(String gvname, String version)StringgetLang()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.intgetMaxGVperMsg()intgetMaxGVSegsPerMsg()intgetMaxMsgSizeKB()StringgetOrderHashMode(int segVersion)Map<String,String>getParamSegmentNames()IntegergetPort()Gibt die TCP-Portnummer auf dem HBCI-Server zurück, zu der eine HBCI-Verbindung aufgebaut werden soll.Map<String,String>getProperties()intgetRequiredSigsCount(String accountNumber, String gvCode)LonggetSigId()Map<String,String>getSupportedLowlevelJobs()Gibt die Namen aller vom aktuellen HBCI-Zugang (d.h.String[]getSuppVersions()NodegetSyntaxDef(String type)DocumentgetSyntaxDocument()StringgetSysId()Map<String,String>getUPD()Gibt die gespeicherten UPD (User-Parameter-Daten) zurück.StringgetUPDVersion()Gibt die Versionsnummer der lokal gespeicherten UPD zurück.StringgetUserId()Gibt die Benutzerkennung zurück, die zur Authentifikation am HBCI-Server benutzt wird.voidincSigId()booleanjobSupported(String jobName)voidsetBLZ(String blz)voidsetBPD(Map<String,String> bpd)voidsetCountry(String country)voidsetCustomerId(String customerid)Setzen der zu verwendenden Kunden-ID.voidsetHost(String host)voidsetPort(Integer port)voidsetSigId(Long sigid)voidsetSysId(String sysid)voidsetUPD(Map<String,String> upd)voidsetUserId(String userid)-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.kapott.hbci.passport.HBCIPassport
getProxyPass, getProxyUser, hasInstEncKey, hasInstSigKey
-
Methods inherited from interface org.kapott.hbci.passport.HBCIPassportInternal
decrypt, encrypt, getCryptAlg, getCryptFunction, getCryptKeyType, getCryptMode, getCurrentSecMechInfo, getHashAlg, getInstEncKeyName, getInstEncKeyNum, getInstEncKeyVersion, getMySigKeyName, getMySigKeyNum, getMySigKeyVersion, getPIN, getProfileMethod, getProfileVersion, getProxy, getSigAlg, getSigFunction, getSigMode, getSysStatus, needUserSig, postInitResponseHook
-
-
-
-
Field Detail
-
callback
protected HBCICallback callback
-
-
Constructor Detail
-
AbstractHBCIPassport
public AbstractHBCIPassport(String hbciversion, Map<String,String> properties, HBCICallback callback, HBCIProduct product)
-
-
Method Detail
-
getInstance
public static HBCIPassport getInstance(HBCICallback callback, Map<String,String> properties, String name, Object init)
-
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-Parametersclient.passport.defaultentnommen. Gültige Werte für diesen HBCI-Parameter sind die gleichen wie beim Aufruf der Methode- Returns:
- Instanz eines HBCI-Passports
-
getInstance
public static HBCIPassport getInstance(HBCICallback callback, Map<String,String> properties, String name)
-
getInstance
public static HBCIPassport getInstance(HBCICallback callback, Map<String,String> properties)
-
getAccounts
public final List<Konto> getAccounts()
Description copied from interface:HBCIPassportGibt 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:
getAccountsin interfaceHBCIPassport- Returns:
- Array mit Kontoinformationen über verfügbare HBCI-Konten
-
fillAccountInfo
public final void fillAccountInfo(Konto account)
Description copied from interface:HBCIPassportAusfüllen fehlender Kontoinformationen. In der Liste der verfügbaren Konten (sieheHBCIPassport.getAccounts()) wird nach einem Konto gesucht, welches die gleiche Kontonummer hat wie das übergebene Kontoaccount. Wird ein solches Konto gefunden, so werden die Daten dieses gefundenen Kontos in dasaccount-Objekt übertragen. Diese Methode kann benutzt werden, wenn zu einem Konto nicht alle Daten bekannt sind, wenigstens aber die Kontonummer.- Specified by:
fillAccountInfoin interfaceHBCIPassport- Parameters:
account- unvollständige Konto-Informationen, bei denen die fehlenden Daten nachgetragen werden
-
getHost
public String getHost()
Description copied from interface:HBCIPassportGibt 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:
getHostin interfaceHBCIPassport- Returns:
- Hostname oder IP-Adresse des HBCI-Servers
-
setHost
public final void setHost(String host)
- Specified by:
setHostin interfaceHBCIPassport
-
getPort
public final Integer getPort()
Description copied from interface:HBCIPassportGibt 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 mitHBCIPassport.setPort(Integer)geändert werden.- Specified by:
getPortin interfaceHBCIPassport- Returns:
- TCP-Portnummer auf dem HBCI-Server
-
setPort
public final void setPort(Integer port)
- Specified by:
setPortin interfaceHBCIPassport
-
getUserId
public String getUserId()
Description copied from interface:HBCIPassportGibt die Benutzerkennung zurück, die zur Authentifikation am HBCI-Server benutzt wird.- Specified by:
getUserIdin interfaceHBCIPassport- Returns:
- Benutzerkennung für Authentifikation
-
setUserId
public final void setUserId(String userid)
- Specified by:
setUserIdin interfaceHBCIPassport
-
getCustomerId
public String getCustomerId()
Description copied from interface:HBCIPassportGibt 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:
getCustomerIdin interfaceHBCIPassport- Returns:
- Kunden-ID für die HBCI-Kommunikation
-
setCustomerId
public final void setCustomerId(String customerid)
Description copied from interface:HBCIPassportSetzen 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:
setCustomerIdin interfaceHBCIPassport- Parameters:
customerid- die zu verwendende Kunden-ID; wird keine customerid angegeben (nulloder ""), so wird automatisch die User-ID verwendet.- See Also:
HBCIPassport.getCustomerId()
-
getSysId
public String getSysId()
- Specified by:
getSysIdin interfaceHBCIPassportInternal
-
setSysId
public final void setSysId(String sysid)
- Specified by:
setSysIdin interfaceHBCIPassportInternal
-
getBPDVersion
public final String getBPDVersion()
Description copied from interface:HBCIPassportGibt 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:
getBPDVersionin interfaceHBCIPassport- Returns:
- Versionsnummer der lokalen BPD
-
getUPDVersion
public final String getUPDVersion()
Description copied from interface:HBCIPassportGibt die Versionsnummer der lokal gespeicherten UPD zurück. Sind keine UPD lokal vorhanden, so wird "0" zurückgegeben. Siehe dazu auchHBCIPassport.getBPDVersion().- Specified by:
getUPDVersionin interfaceHBCIPassport- Returns:
- Versionsnummer der lokalen UPD
-
getInstName
public final String getInstName()
Description copied from interface:HBCIPassportGibt den Namen des Kreditinstitutes zurück. Diese Information wird aus den BPD ermittelt. Sind keine BPD vorhanden bzw. steht da kein Name drin, so wirdnullzurückgegeben.- Specified by:
getInstNamein interfaceHBCIPassport- Returns:
- Name des Kreditinstitutes
-
getMaxGVperMsg
public int getMaxGVperMsg()
- Specified by:
getMaxGVperMsgin interfaceHBCIPassport
-
getMaxMsgSizeKB
public final int getMaxMsgSizeKB()
- Specified by:
getMaxMsgSizeKBin interfaceHBCIPassport
-
getSuppVersions
public final String[] getSuppVersions()
- Specified by:
getSuppVersionsin interfaceHBCIPassport
-
getLang
public final String getLang()
- Specified by:
getLangin interfaceHBCIPassportInternal
-
getSigId
public final Long getSigId()
- Specified by:
getSigIdin interfaceHBCIPassportInternal
-
setSigId
public final void setSigId(Long sigid)
- Specified by:
setSigIdin interfaceHBCIPassportInternal
-
incSigId
public void incSigId()
- Specified by:
incSigIdin interfaceHBCIPassportInternal
-
getParamSegmentNames
public Map<String,String> getParamSegmentNames()
- Specified by:
getParamSegmentNamesin interfaceHBCIPassportInternal
-
getJobRestrictions
public Map<String,String> getJobRestrictions(String specname)
- Specified by:
getJobRestrictionsin interfaceHBCIPassport- Specified by:
getJobRestrictionsin interfaceHBCIPassportInternal
-
getJobRestrictions
public Map<String,String> getJobRestrictions(String gvname, String version)
- Specified by:
getJobRestrictionsin interfaceHBCIPassportInternal
-
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:
getSupportedLowlevelJobsin interfaceHBCIPassportInternal- Returns:
- Sammlung aller vom aktuellen Passport unterstützten HBCI- Geschäftsvorfallnamen (Lowlevel) mit der jeweils von HBCI4Java verwendeten GV-Versionsnummer.
-
jobSupported
public boolean jobSupported(String jobName)
- Specified by:
jobSupportedin interfaceHBCIPassport
-
getSyntaxDef
public Node getSyntaxDef(String type)
- Specified by:
getSyntaxDefin interfaceHBCIPassportInternal- 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:
getLowlevelJobRestrictionsin interfaceHBCIPassportInternal- Parameters:
gvname- Lowlevel-Name des Geschäftsvorfalles, für den die Restriktionen ermittelt werden sollen- Returns:
- Properties-Objekt mit den einzelnen Restriktionen
-
getOrderHashMode
public String getOrderHashMode(int segVersion)
- Specified by:
getOrderHashModein interfaceHBCIPassportInternal
-
getHbciProduct
public HBCIProduct getHbciProduct()
- Specified by:
getHbciProductin interfaceHBCIPassportInternal
-
getSyntaxDocument
public Document getSyntaxDocument()
- Specified by:
getSyntaxDocumentin interfaceHBCIPassportInternal
-
getBPD
public final Map<String,String> getBPD()
Description copied from interface:HBCIPassportGibt 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:
getBPDin interfaceHBCIPassport- Returns:
- die Bankparamterdaten oder
null, falls diese nicht im Passport vorhanden sind
-
setBPD
public void setBPD(Map<String,String> bpd)
- Specified by:
setBPDin interfaceHBCIPassportInternal
-
getHBCIVersion
public final String getHBCIVersion()
Description copied from interface:HBCIPassportGibt die HBCI-Version zurück, die zuletzt verwendet wurde. Der hier zurückgegebene Wert ist der selbe, der bei der Initialisierung desHBCIJobsDialogverwendet 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 mitnew HBCIHandler(passport.getHBCIVersion(),passport)erfolgen (vorausgesetzt,passport.getHBCIVersion()gibt einen nicht-leeren String zurück.- Specified by:
getHBCIVersionin interfaceHBCIPassport- 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:HBCIPassportGibt 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:
getUPDin interfaceHBCIPassport- Returns:
- die Userparameterdaten oder
null, falls diese nicht im Passport vorhanden sind
-
setUPD
public final void setUPD(Map<String,String> upd)
- Specified by:
setUPDin interfaceHBCIPassportInternal
-
getBLZ
public final String getBLZ()
Description copied from interface:HBCIPassportGibt 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:
getBLZin interfaceHBCIPassport- Returns:
- die BLZ der Bank
-
setBLZ
public final void setBLZ(String blz)
- Specified by:
setBLZin interfaceHBCIPassport
-
getCountry
public final String getCountry()
Description copied from interface:HBCIPassportGibt den Ländercode der Bank zurück. Für deutsche Banken ist das der String "DE".- Specified by:
getCountryin interfaceHBCIPassport- Returns:
- Ländercode der Bank
-
setCountry
public final void setCountry(String country)
- Specified by:
setCountryin interfaceHBCIPassport
-
getMaxGVSegsPerMsg
public int getMaxGVSegsPerMsg()
- Specified by:
getMaxGVSegsPerMsgin interfaceHBCIPassportInternal
-
getProperties
public Map<String,String> getProperties()
- Specified by:
getPropertiesin interfaceHBCIPassport- Specified by:
getPropertiesin interfaceHBCIPassportInternal
-
getCallback
public HBCICallback getCallback()
- Specified by:
getCallbackin interfaceHBCIPassport- Specified by:
getCallbackin interfaceHBCIPassportInternal
-
-