Bitte wähle nachfolgend aus, welche Beiträge auf dieser Themenseite auf dem Ausdruck ausgegeben werden sollen. Um dies zu tun markiere bitte die Checkbox auf der linken Seite der Posts, die im Ausdruck berücksichtigt werden sollen und klicke anschließend ganz unten auf der Seite auf den Button "Drucken".

API für getrennte Kundennr. & Kontonr. bei Deutsche Bank

dominik42

Betreff:

API für getrennte Kundennr. & Kontonr. bei Deutsche Bank

 ·  Gepostet: 20.09.2009 - 00:22 Uhr  ·  #60838
Hi,

dank diesen Tips hier läuft mein eigenes kleines HBCI4Java based Programm für SaldoReq und KUmsAll für unsere Volksbank-, Sparkassen- und Postbank-Konten prima ! Nun kommt noch ein Deutsche Bank Konto hinzu. Mit Hibiscus klappts, allerdings wurde dort, mit etwas Magie, die vollständige Kontoinformation bestehend aus Filiale (3 Ziffern), Kontonummer (7 Ziffern) und Unterkonto (2 Ziffern) aufgeteilt in Kundennummer (Filiale + Konto) und Kontonummer (nur Konto). Das sehe ich im Dialog Konto-Details unter HBCI-Konfiguration. Diese spezielle Unterteilung bekomme ich mit der mir bekannten API von hbci4Java aber nicht hin, da ich dort nur ein Object 'Konto' mit dem festen Attribut Kontonummer, habe. Wie kann ich verschiedene Daten für Konto- und Kundennummer angebeben. Was mich auch verwundert hat, diese Daten werden nicht aus meiner Callback-Klasse bezogen (NEED_CUSTOMERID, NEED_USERID) ?!
Jedenfalls bekomme ich mit meinem Programm den Fehler:
Code
9210:Keine gültige Kontoverbindung. (3: CustomMsg.GV.KUmsZeit6)

Ein weiteres Indiz auf o.g. Magie, ist der Umstand, das innerhalb von Hibiscus ein CRC Check der Kontonummer klappt, bei mir jedoch mit dem Fehler
Code
"can not check account numbers with more than 10 digits (XXXXXXXXXXXXXX)- skipping CRC check"
nicht stattfindet. Kann/Muss ich sowas als lowLevel-Parameter übergeben ?

Captain FRAG

Betreff:

Re: API für getrennte Kundennr. & Kontonr. bei Deutsche Bank

 ·  Gepostet: 20.09.2009 - 09:47 Uhr  ·  #60840
Hallo,

ggfs. hilft dir das: http://www.onlinebanking-forum…php?t=1174 - speziell der Abschnitt für die Deuba.

Falls mit dem CRC Check das Nachrechnen der Prüfziffer einer Kontonummer gemeint ist, darf man nach meinem Verständnis bei der Deuba wohl nur den Kontostamm "prüfen". Als Kontostamm bezeichne ich die 7-stellige Kundennummer ohne Filial- und Unterkontomerkmal. Ggfs. geht das auch mit der Kumbination aus Filiale+Kontostamm. Das Unterkontenmerkmal ist ja nur ein Anhängsel das hochgezählt wird, dass in eine Prüfziffernberechnung aufzunehmen ist ziemlich unmöglich.

Das getrennte Erfassen von Filiale, Kontostamm und Unterkonto ist nur auf der Oberfläche eine Erfassungshilfe. Technisch und Bankübergreifend wird im HBCI-Umfeld für die Zugangsdaten immer von Benutzerkennung und Kunden-ID gesprochen. Mehr oder weniger gibt es nicht, nur die Belegung ist individuell. Details in der verlinkten Übersicht.
Der Zugriff auf das Konto an sich erfolgt nicht über die Zugangsdaten (das ist nur eine Zugangsberechtigungsprüfung, also eine Identifizierung der handelnden Person und Prüfung seiner PIN) sondern z.B. bei einer Umsatzabfrage wird das gewünschte "echte" Konto übergeben, dort muss dann natürlich auch die Unterkontonummer übergeben werden.

dominik42

Betreff:

Re: API für getrennte Kundennr. & Kontonr. bei Deutsche Bank

 ·  Gepostet: 21.09.2009 - 22:33 Uhr  ·  #60862
Danke erstmal für die Antwort.
Die Infos zur DeuBa hatte ich schon berücksichtigt. So musste ich wirklich erstmal auf deren Website die Nutzung von HBCI 'freischalten', aber das klappte schnell und sauber.
Die Erfassungshilfe in Hibiscus leuchtet mir ein, nur weiss ich eben nicht, wie ich das in meinem eigenen Programm abbilde. Schematisch hier mal mein Programm, HBCIAccount ist dabei nur ein Container von mir, um die Daten etwas zu strukturieren, MyCallback wird nur für die Pin gerufen und das Passport MyPinTan ist von HBCIPassportPinTan abgeleitet und verzichtet aufs speichern in ein file.

Code
HBCIAccount account = new HBCIAccount(filiale + konto + unter, blz, pin);
HBCIUtils.init(props, new MyCallback(account));
HBCIPassport passport=AbstractHBCIPassport.getInstance("MyPinTan");
passport.setBLZ(blz);
passport.setCountry("DE");
passport.setUserId(filiale + konto + unter);
passport.setCustomerId(""); // habe auch setCustomerId(filiale + konto + unter) probiert
String strUrl = HBCIUtils.getPinTanURLForBLZ(account.getBankCode());
URL url = new URL(strUrl);
passport.setHost(url.getHost() + url.getPath());
passport.setFilterType("Base64");
String pintanVersion = HBCIUtils.getPinTanVersionForBLZ(account.getBankCode());
HBCIHandler hbciHandle=new HBCIHandler(pintanVersion,passport);

Konto myaccount=new Konto("DE", blz, filiale + konto, unter);
HBCIJob jobSaldo = hbciHandle.newJob("SaldoReq"); 
jobSaldo.setParam("my", myaccount);
jobSaldo.addToQueue();


Damit erhalte ich leider
Code
Job-Error
9210:Keine gültige Kontoverbindung. (3: CustomMsg.GV.Saldo6)
Global Error
9050:Teilweise fehlerhaft.
9210:Keine gültige Kontoverbindung. (3: CustomMsg.GV.Saldo6)


Der gleiche code läuft mit Volksbank, Sparkasse und Postbank erfolgreich durch, es muss also an der Kombination mit Filiale und Unterkonto liegen.

hibiscus

Betreff:

Re: API für getrennte Kundennr. & Kontonr. bei Deutsche Bank

 ·  Gepostet: 22.09.2009 - 00:43 Uhr  ·  #60863
Ich setze in Hibiscus beim Erstellen des Geschaeftsvorfalls neben der subnumber (Unterkontonummer) extra noch die Kundennummer, Kontoinhaber und Konto-Typ:

Code

org.kapott.hbci.structures.Konto k = new org.kapott.hbci.structures.Konto(blz,kontonummer);
k.customerid = ...;
k.type = ...;
k.name = ...;
k.subnumber = ...;


Vielleicht hilft das ja bei dir.

dominik42

Betreff:

Problem gelöst

 ·  Gepostet: 22.09.2009 - 22:27 Uhr  ·  #60893
Hi,
danke an Olaf für den Tip, der brachte mich auf die richtige Spur:
Nach vielen fehlgeschlagenen Versuchen mit den diversen Kombinationen aus filiale, konto und unterkonto bin ich schliesslich auf flg. Schema gestossen, mit dem ich erfolgreich SaldoReq machen konnte:

seien
filiale : die 3 stell. Filialnummer
konto : die 9 stell. Kontonummer
unter : die 2 stell. Unterkontonummer eines Deutsche Bank Konto

dann musste ich flg. Anweisungen ausführen:

Code
passport.setBLZ(blz);
passport.setUserId(filiale + konto);
passport.setCustomerId("");
Konto konto = Konto("DE", blz, konto);
...
jobSaldo.setParam("my", konto);


Es fallen auf die Unterschiede
a) zwischen userID im passport und Kontoinformationen des GV's
sowie
b) zwischen meiner userID und der Kundennummer die Hibiscus anzeigt. Diese ist scheinbar nach 10 Stellen meiner ermittelten Kombination von Filiale + Kontonummer abgeschnitten. Ein tieferer Blick in den response der Bank zeigte mit jedoch, dass Hibiscus evtl. für die Kundennummer einen Wert aus der UPD (KInfo_2.customerid) nutzt, jedenfalls wurde der im UI sichtbare Wert nicht von mir eingegeben und ist auch keiner aus (filiale, konto oder unter) entspricht aber diesem response value. Die anderen Werte k.country, k.curr, k.type usw. hatten dann keinerlei Auswirkungen auf Erfolg und Misserfolg.
Gibt es diesen offiziellen Weg der Ermittlung der customerID nach Erzeugung des hbciHandle aus den response Werten (z.B. UPD) ? Ich möchte ungern institutsspezifische Anweisungen in meinem Programm ?
Danke nochmal allen für die Hilfe !!!

hibiscus

Betreff:

Re: Problem gelöst

 ·  Gepostet: 22.09.2009 - 23:37 Uhr  ·  #60895
Zitat geschrieben von dominik42

Gibt es diesen offiziellen Weg der Ermittlung der customerID nach Erzeugung des hbciHandle aus den response Werten (z.B. UPD) ? Ich möchte ungern institutsspezifische Anweisungen in meinem Programm ?


In Hibiscus geschieht das durch Klick auf den Button "Konten aus Sicherheitsmedium ermitteln" in der Kontoliste. Im Endeffekt wird dabei folgender Code aufgerufen:

Code

org.kapott.hbci.structures.Konto[] konten = passports.getAccounts();