HBCI Version 3 - Prgramm

 
stefanw
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 37
Dabei seit: 06 / 2009
Betreff:

HBCI Version 3 - Prgramm

 · 
Gepostet: 11.08.2009 - 13:11 Uhr  ·  #1
Code

.....
setParam("client.passport.default","RDH");
setParam("client.passport.RDH.filename",cfg.get("hbci.rdh.filename",null));
setParam("client.passport.RDH.init","3");

..... 


Habe nun angefangen ein kleines Programm im Java zuschreiben.
Das Programm soll mir den Saldo abrufen.

Das Problem nun, ich hab noch kein Beispiel gesehen wo eine Schlüssel der Version 3 geladen wurden ist !?

Ist das in der Richtung so richtig ?
kleiner77
Benutzer
Avatar
Geschlecht:
Beiträge: 779
Dabei seit: 08 / 2004
Betreff:

Re: HBCI Version 3 - Prgramm

 · 
Gepostet: 11.08.2009 - 15:02 Uhr  ·  #2
Der "init"-Wert kann nur "0" oder "1" sein und regelt, ob HBCI4Java beim Erzeugen des Passport-Objektes diverse interne Initialisierungen vornehmen soll oder nicht - ist also im normalen Anwendungsfall immer auf "1" zu setzen.

Da in einem Passport immer nur EIN Schlüsselsatz enthalten ist, muss nirgends explizit angegeben werden, dass "Schlüssel der Version 3" geladen werden sollen (was auch immer Du unter "Schlüsseln der Version 3" verstehst). HBCI4Java lädt einfach die Schlüssel, die in der Passport-Datei enthalten sind.

-stefan-
kleiner77
Benutzer
Avatar
Geschlecht:
Beiträge: 779
Dabei seit: 08 / 2004
Betreff:

Re: HBCI Version 3 - Prgramm

 · 
Gepostet: 11.08.2009 - 15:04 Uhr  ·  #3
Ah, und noch etwas: verwende "RDHNew" anstatt "RDH" - in der JavaDoc und in diversen READMEs wird das sehr deutlich empfohlen ;-)
stefanw
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 37
Dabei seit: 06 / 2009
Betreff:

Re: HBCI Version 3 - Prgramm

 · 
Gepostet: 11.08.2009 - 15:45 Uhr  ·  #4
Unter Version 3 Verstehe ich "FinTS 3.0" muss das nicht irgendwo angeben werden ? Weil die Software Jameica fragt auch jedes mal ^^ .

Danke erstmal soweit 😉
kleiner77
Benutzer
Avatar
Geschlecht:
Beiträge: 779
Dabei seit: 08 / 2004
Betreff:

Re: HBCI Version 3 - Prgramm

 · 
Gepostet: 11.08.2009 - 15:49 Uhr  ·  #5
Du meinst den ersten Parameter von "new HBCIHandler(...)" - dort wird die zu verwendende HBCI-Version spezifiziert.
Orientiere Dich am besten am Quellcode von org.kapott.hbci.tools.AnalyzeReportOfTransactions, das macht schon fast genau das was Du willst (nur mit nem anderen Geschäftsvorfall)...

Grüße
-stefan-
hibiscus
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 10778
Dabei seit: 03 / 2005
Betreff:

Re: HBCI Version 3 - Prgramm

 · 
Gepostet: 11.08.2009 - 16:12 Uhr  ·  #6
[Offtopic] Uebrigens: Wenn Hibiscus immer und immer wieder nach der HBCI-Version der Schluesseldiskette fragt, liegt das einfach daran, dass die zu verwendende Version noch nicht in Hibiscus gespeichert ist. Damit Hibiscus nun nicht einfach irgendeine Version verwendet, fragt es den Benutzer immer wieder. Hier genuegt es, die Schluesselverwaltung ueber

Plugins
-> Hibiscus
-> Einstellungen
-> HBCI-Sicherheitsmedien
-> Schluesseldiskette

zu oeffnen. Dort doppelt auf die betreffende Schluesseldatei klicken, um die Details zu oeffnen. HBCI-Version auswaehlen und "Speichern" klicken.
stefanw
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 37
Dabei seit: 06 / 2009
Betreff:

Re: HBCI Version 3 - Prgramm

 · 
Gepostet: 11.08.2009 - 23:02 Uhr  ·  #7
Zitat

[11.08.2009 23:00:04] adding job KUmsZeit5 to dialog
[11.08.2009 23:00:04] Dresdner Bank [Dresdner Bank]: Führe HBCI-Jobs aus
[11.08.2009 23:00:04] executing dialog for customerid XXXXXXXXXX
[11.08.2009 23:00:04] processing dialog init
[11.08.2009 23:00:04] führe Dialog-Initialisierung aus
[11.08.2009 23:00:04] erzeuge HBCI-Nachricht DialogInit
[11.08.2009 23:00:04] signiere HBCI-Nachricht
[11.08.2009 23:00:04] verschlüssele HBCI-Nachricht
[11.08.2009 23:00:04] versende HBCI-Nachricht
[11.08.2009 23:00:04] warte auf Antwortdaten
[11.08.2009 23:00:04] waiting for response
[11.08.2009 23:00:05] [error] HBCI error code: 9390:Doppeleinreichung - Nachricht abgelehnt
[11.08.2009 23:00:05] überprüfe Signatur der Antwortnachricht
[11.08.2009 23:00:05] [warn] can not check signature - no signature key available
[11.08.2009 23:00:05] [error] org.kapott.hbci.exceptions.HBCI_Exception: Nachricht ist nicht verschlüsselt
at org.kapott.hbci.manager.HBCIKernelImpl.rawDoIt(HBCIKernelImpl.java:460)
at org.kapott.hbci.manager.HBCIKernelImpl.rawDoIt(HBCIKernelImpl.java:184)
at org.kapott.hbci.manager.HBCIDialog.doDialogInit(HBCIDialog.java:160)
at org.kapott.hbci.manager.HBCIDialog.doIt(HBCIDialog.java:413)
at org.kapott.hbci.manager.HBCIHandler.execute(HBCIHandler.java:437)
at de.willuhn.jameica.hbci.server.hbci.HBCIFactory$Worker.run(HBCIFactory.java:515)
at de.willuhn.jameica.gui.GUI$4.run(GUI.java:796)


Ah Leute ^^" habe ich jetzt ein Problem !? Wie kann ich das beheben ?
Die Ursache glaube kenne ich schon .... hab hbciHandle.close(); vergessen ^^ !?

@Habs -.- okay wieder schlauer ..... hatte ne Kopie der Schlüsseldatei aus angst das ich sie kaputt mache, nun hat er aber in der Kopie bei meinen Test die Zähler Sig ID hochgezhält was in der anderen zu "HBCI error code: 9390:Doppeleinreichung" führte.

Noch eine andere Frage, wie geb ich den hier den Pfad an ?

HBCIUtils.setParam("client.passport.RDHNew.filename", "test.rdh"); // D:/test.rdh

Das funzt nicht Oo mit "file:\\D:\\test.rdh" !?
kleiner77
Benutzer
Avatar
Geschlecht:
Beiträge: 779
Dabei seit: 08 / 2004
Betreff:

Re: HBCI Version 3 - Prgramm

 · 
Gepostet: 11.08.2009 - 23:30 Uhr  ·  #8
Zitat
HBCI error code: 9390:Doppeleinreichung - Nachricht abgelehnt

Ich nehme an, Du hast eine Schlüsseldatei aus einem Backup verwendet? Oder manuell an der Signatur-ID rumgedreht?

Beheben: Entweder Deine Schlüsseldatei mit dem HBCI4Java Passport Editor laden und dort die Signatur-ID synchronisieren. Oder Deinen Quellcode wiefolgt anpassen:

HBCIPassport passport=...;
passport.syncSigId(); // <-- das ist neu
HBCIHandler handler=new HBCIHandler(version,passport);

So wird beim Erzeugen eines HBCIHandler-Objektes automatisch dafür gesorgt, dass die Signatur-ID wieder "repariert" wird.

-stefan-
stefanw
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 37
Dabei seit: 06 / 2009
Betreff:

Re: HBCI Version 3 - Prgramm

 · 
Gepostet: 11.08.2009 - 23:41 Uhr  ·  #9
Okay super Tipp. Heißt das, ich kann 2 Programm damit benutzen ? oder Rätst du mehr davon ab ?

Zitat

Noch eine andere Frage, wie geb ich den hier den Pfad an ?

HBCIUtils.setParam("client.passport.RDHNew.filename", "test.rdh"); // D:/test.rdh

Das funzt nicht Oo mit "file:\\D:\\test.rdh" !?
kleiner77
Benutzer
Avatar
Geschlecht:
Beiträge: 779
Dabei seit: 08 / 2004
Betreff:

Re: HBCI Version 3 - Prgramm

 · 
Gepostet: 12.08.2009 - 08:00 Uhr  ·  #10
Zitat
Heißt das, ich kann 2 Programm damit benutzen ?

Stell Dir die Schlüsseldiskette wie eine Chipkarte vor. Du kannst sie in mehreren Programmen nutzen, allerdings nicht zur selben Zeit. Und es gibt nur EINE Kopie davon, die Du zwischen den verwendeten Programmen immer "hin- und hertragen" musst.

Zitat
HBCIUtils.setParam("client.passport.RDHNew.filename", "test.rdh");

Die Angabe eines absoluten oder relativen Pfades sollte eigentlich funktionieren. Was genau "funzt denn nicht"? Kannst Du eine Fehlermeldung nennen?

-stefan-
stefanw
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 37
Dabei seit: 06 / 2009
Betreff:

Re: HBCI Version 3 - Prgramm

 · 
Gepostet: 12.08.2009 - 08:34 Uhr  ·  #11
Hö Oo ..... okay geht nun :lol: .
Vorher kam immer Schlüsseldatei nicht gefunden als Fehler 😉
PS. nimm das "funzt denn nicht" nicht so ernst, ist Anwender Sprache ( müsstest du doch kenne wie "hab nichts gemacht" ) 😉

Nach dem Jobaufruf kommt:

Code

<WRN> [2009.08.12 08:44:15.360] [main/main] security.Sig: can not check signature - no signature key available
<WRN> [2009.08.12 08:44:15.427] [main/main] protocol.MSG: could not insert the following user-defined data into message: CustomMsg.GV.KUmsZeit5.curr=EUR
<WRN> [2009.08.12 08:44:16.676] [main/main] security.Sig: can not check signature - no signature key available
<WRN> [2009.08.12 08:44:18.003] [main/main] security.Sig: can not check signature - no signature key available



Code:
Code

HBCIUtils.init(null,null,new MyHBCICallback());
        HBCIUtils.setParam("client.passport.RDHNew.filename", "D:\\test.rdh");
        HBCIUtils.setParam("client.passport.RDHNew.init", "1");

        HBCIPassport passport;
        HBCIHandler  hbciHandle;


        passport=AbstractHBCIPassport.getInstance("RDHNew");

        String version=passport.getHBCIVersion();
        hbciHandle=new HBCIHandler((version.length()!=0)?version:"plus",passport);
        Konto myaccount=passport.getAccounts()[0];

        HBCIJob auszug=hbciHandle.newJob("KUmsAll");

        auszug.setParam("my",myaccount);

        //auszug.setParam("startdate","13.7.2009");
        auszug.addToQueue();

        HBCIExecStatus ret=hbciHandle.execute();

        GVRKUms result=(GVRKUms)auszug.getJobResult();

        if (result.isOK())
        {
            List lines=result.getFlatData();
            int  numof_lines=lines.size();


              for (Iterator j=lines.iterator(); j.hasNext(); )
              {
                  GVRKUms.UmsLine entry=(GVRKUms.UmsLine)j.next();
                  List usages=entry.usage;

                  for (Iterator k=usages.iterator(); k.hasNext(); )
                  {
                    String usageline=(String)k.next();
                    System.out.println(usageline);
                  }
              }
        }

        if(hbciHandle!=null)
        {
            hbciHandle.close();
        }
        else if (passport!=null)
        {
            passport.close();
        }


lines <- ist auch Leer irgendwas mach ich Falsch :?:
stefanw
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 37
Dabei seit: 06 / 2009
Betreff:

Re: HBCI Version 3 - Prgramm

 · 
Gepostet: 12.08.2009 - 13:47 Uhr  ·  #12
Code
führe Dialog-Initialisierung aus
  erzeuge HBCI-Nachricht DialogInit
  signiere HBCI-Nachricht
  verschlüssele HBCI-Nachricht
Callback für Passport mit Init-Daten: RDHNew
Bitte stellen Sie jetzt die Verbindung zum Internet her
<ENTER> drücken, um fortzufahren

  versende HBCI-Nachricht
  warte auf Antwortdaten
  parse empfangene Antwortnachricht (CryptedRes))
  entschlüssele Antwortnachricht
  parse empfangene Antwortnachricht (DialogInitRes))
  überprüfe Signatur der Antwortnachricht
<WRN> [2009.08.12 13:42:47.966] [main/main] security.Sig: can not check signature - no signature key available
Dialog initialisiert - Dialog-ID ist *****
status: 0010:Nachricht entgegengenommen
0020:Informationen fehlerfrei entgegengenommen (4: DialogInit.ProcPrep)
0020:Angegebener Schlüssel ist noch aktuell (5: DialogInit.KeyReq)
erstelle Auftragsdaten für Geschäftsvorfall KUmsZeit5
  erzeuge HBCI-Nachricht CustomMsg
<WRN> [2009.08.12 13:42:49.366] [main/main] protocol.MSG: could not insert the following user-defined data into message: CustomMsg.GV.KUmsZeit5.curr=EUR
  signiere HBCI-Nachricht
  verschlüssele HBCI-Nachricht
  versende HBCI-Nachricht
  warte auf Antwortdaten
  parse empfangene Antwortnachricht (CryptedRes))
  entschlüssele Antwortnachricht
  parse empfangene Antwortnachricht (CustomMsgRes))
  überprüfe Signatur der Antwortnachricht
<WRN> [2009.08.12 13:42:52.302] [main/main] security.Sig: can not check signature - no signature key available
Ergebnisdaten für Geschäftsvorfall KUmsZeit5 empfangen
beende Dialog
  erzeuge HBCI-Nachricht DialogEnd
  signiere HBCI-Nachricht
  verschlüssele HBCI-Nachricht
  versende HBCI-Nachricht
  warte auf Antwortdaten
  parse empfangene Antwortnachricht (CryptedRes))
  entschlüssele Antwortnachricht
  parse empfangene Antwortnachricht (DialogEndRes))
  überprüfe Signatur der Antwortnachricht
<WRN> [2009.08.12 13:42:54.529] [main/main] security.Sig: can not check signature - no signature key available
Dialog beendet
status: 0010:Nachricht entgegengenommen
0100:Dialog beendet
Callback für Passport mit Init-Daten: RDHNew
Sie können die Internetverbindung jetzt beenden
<ENTER> drücken, um fortzufahren


hier mal die Ausgabe mit HBCICallbackConsole ... hat wer eine Idee warum "lines" oder "Result" leer ist ?
kleiner77
Benutzer
Avatar
Geschlecht:
Beiträge: 779
Dabei seit: 08 / 2004
Betreff:

Re: HBCI Version 3 - Prgramm

 · 
Gepostet: 12.08.2009 - 14:04 Uhr  ·  #13
Kann es sein, dass Du den HBCI-Zugang erst ganz neu hast einrichten lassen und seitdem noch keine neuen Umsätze auf Deinem Konto aufgelaufen sind? Ich glaube mal gehört zu haben, dass man per HBCI nur die Umsätze abrufen kann, die neu hinzugekommen sind, NACHDEM der HBCI-Zugang existiere (Banker: korrigiert mich bitte, falsch ich da etwas verwechsle)...

Ansonsten: was passiert denn bei anderen Geschäftsvorfällen, z.B. Saldo-Abruf?

-stefan-
kleiner77
Benutzer
Avatar
Geschlecht:
Beiträge: 779
Dabei seit: 08 / 2004
Betreff:

Re: HBCI Version 3 - Prgramm

 · 
Gepostet: 12.08.2009 - 14:06 Uhr  ·  #14
Möglicherweise wird auch der Auftrag nicht richtig verschickt. Schalte mal das Loglevel auf "5" (HBCIUtils.setParam("log.loglevel.default", "5")) und sende mir das entstehende Logfile (am besten per Mail: hbci4java at kapott punkt org)...

Grüße
-stefan-
stefanw
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 37
Dabei seit: 06 / 2009
Betreff:

Re: HBCI Version 3 - Prgramm

 · 
Gepostet: 12.08.2009 - 15:26 Uhr  ·  #15
Also Email ist raus, wie in der Email gesagt in Jameica kommen Buchungen usw.

Ich warte nun mal *Tee trink.

Danke für die Hilfe soweit 😉
stefanw
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 37
Dabei seit: 06 / 2009
Betreff:

Re: HBCI Version 3 - Prgramm

 · 
Gepostet: 12.08.2009 - 23:07 Uhr  ·  #16
Hallo Leute konnte das Problem lösen :D
Habe mal mit wallstreet probiert und musste feststellen das auf:


Code

Konto myaccount=passport.getAccounts()[0];


Das falsche Konto steht und auf dem Konto nix ist.
Habs nun auf 1 gestellt:

Code

Konto myaccount=passport.getAccounts()[1];


Und alles geht !
Gewählte Zitate für Mehrfachzitierung:   0