Zitat geschrieben von hibiscus
Dann fehlt wahrscheinlich schlicht die Implementierung des Callbacks NEED_PT_DECOUPLED/NEED_PT_DECOUPLED_RETRY.
Die beiden Callbacks sind definitiv implementiert. (Die PR für den NEED_PT_DECOUPLED_RETRY Callback kam übrigens von mir, falls Du den Namen nicht wiedererkannt hast :p)
Aber ich glaube wir kommen der Sache näher (vielen Dank schon mal für die bisherige Hilfe). Ich habe noch mal eine Umsatzabfrage über meine eigene Sparkasse gemacht, um erfolgreiche logs mit NEED_PT_DECOUPLED/NEED_PT_DECOUPLED_RETRY Callbacks zu bekommen (meine Sparkasse macht die Vertrauenswürdigkeitsprüfung noch nicht verpflichtend), und habe folgendes bemerkt:
Es folgt jeweils nur der Output meiner eigenen Applikation. Zuerst der erfolgreiche von meiner Sparkasse, wo ich nach 4 refresh requests den Auftrag in der App bestätigt habe:
Code
12:15:25,599 INFO (Thread-205) HBCI Thread: Creating HBCIHandler
12:15:25,651 INFO (Thread-205) HBCI Thread: Received callback reason: 16
12:15:25,659 INFO (Thread-205) HBCI Thread: Received callback reason: 24
12:15:26,522 INFO (Thread-205) HBCI Thread: Received callback reason: 25
12:15:26,539 INFO (Thread-205) HBCI Thread: Received callback reason: 24
12:15:27,231 INFO (Thread-205) HBCI Thread: Received callback reason: 32
12:15:30,770 INFO (Thread-205) HBCI Thread: Received callback reason: 25
12:15:30,771 INFO (Thread-205) HBCI Thread: Generating Job
12:15:30,783 INFO (Thread-205) HBCI Thread: Calling execute()
12:15:30,789 INFO (Thread-205) HBCI Thread: Received callback reason: 32
12:15:30,800 INFO (Thread-205) HBCI Thread: Received callback reason: 24
12:15:31,208 INFO (Thread-205) HBCI Thread: Received callback reason: 32
12:15:31,700 INFO (Thread-205) HBCI Thread: Received callback reason: 35
12:15:31,700 INFO (Thread-205) HBCI Thread: Received NEED_PT_DECOUPLED callback.
12:15:31,700 INFO (Thread-205) HBCI Thread: Sleeping HBCI thread for 2 seconds and then returning callback.
12:15:33,708 INFO (Thread-205) HBCI Thread: Finished NEED_PT_DECOUPLED sleep. Returning callback.
12:15:33,933 INFO (Thread-205) HBCI Thread: Received callback reason: 36
12:15:33,933 INFO (Thread-205) HBCI Thread: Received NEED_PT_DECOUPLED_RETRY callback.
12:15:33,934 INFO (Thread-205) HBCI Thread: Sleeping HBCI thread for 2 seconds and then returning callback.
12:15:35,943 INFO (Thread-205) HBCI Thread: Finished NEED_PT_DECOUPLED_RETRY sleep. Returning callback.
12:15:36,196 INFO (Thread-205) HBCI Thread: Received callback reason: 36
12:15:36,196 INFO (Thread-205) HBCI Thread: Received NEED_PT_DECOUPLED_RETRY callback.
12:15:36,196 INFO (Thread-205) HBCI Thread: Sleeping HBCI thread for 2 seconds and then returning callback.
12:15:38,200 INFO (Thread-205) HBCI Thread: Finished NEED_PT_DECOUPLED_RETRY sleep. Returning callback.
12:15:38,455 INFO (Thread-205) HBCI Thread: Received callback reason: 36
12:15:38,455 INFO (Thread-205) HBCI Thread: Received NEED_PT_DECOUPLED_RETRY callback.
12:15:38,455 INFO (Thread-205) HBCI Thread: Sleeping HBCI thread for 2 seconds and then returning callback.
12:15:40,459 INFO (Thread-205) HBCI Thread: Finished NEED_PT_DECOUPLED_RETRY sleep. Returning callback.
12:15:40,704 INFO (Thread-205) HBCI Thread: Received callback reason: 36
12:15:40,704 INFO (Thread-205) HBCI Thread: Received NEED_PT_DECOUPLED_RETRY callback.
12:15:40,704 INFO (Thread-205) HBCI Thread: Sleeping HBCI thread for 2 seconds and then returning callback.
12:15:42,717 INFO (Thread-205) HBCI Thread: Finished NEED_PT_DECOUPLED_RETRY sleep. Returning callback.
12:15:43,296 INFO (Thread-205) HBCI Thread: Received callback reason: 25
12:15:43,296 INFO (Thread-205) HBCI Thread: Awaking main thread with finished HBCI job.
Und als 2. der von der abgelehnten Kontostandsabfrage bei der Taunus Sparkasse:
Code
20:05:17,956 INFO (Thread-236) HBCI Thread: Creating HBCIHandler
20:05:18,008 INFO (Thread-236) HBCI Thread: Received callback reason: 16
20:05:18,015 INFO (Thread-236) HBCI Thread: Received callback reason: 24
20:05:18,588 INFO (Thread-236) HBCI Thread: Received callback reason: 25
20:05:18,597 INFO (Thread-236) HBCI Thread: Received callback reason: 24
20:05:18,922 INFO (Thread-236) HBCI Thread: Received callback reason: 32
20:05:19,290 INFO (Thread-236) HBCI Thread: Received callback reason: 32
20:05:19,298 INFO (Thread-236) HBCI Thread: Received callback reason: 35
20:05:19,298 INFO (Thread-236) HBCI Thread: Received NEED_PT_DECOUPLED callback.
20:05:19,299 INFO (Thread-236) HBCI Thread: Sleeping HBCI thread for 2 seconds and then returning callback.
20:05:21,300 INFO (Thread-236) HBCI Thread: Finished NEED_PT_DECOUPLED sleep. Returning callback.
20:05:21,537 INFO (Thread-236) HBCI Thread: Received callback reason: 25
20:05:21,538 INFO (Thread-236) HBCI Thread: Generating Job
20:05:21,551 INFO (Thread-236) HBCI Thread: Calling execute()
20:05:21,554 INFO (Thread-236) HBCI Thread: Received callback reason: 32
20:05:21,560 INFO (Thread-236) HBCI Thread: Received callback reason: 24
20:05:21,878 INFO (Thread-236) HBCI Thread: Received callback reason: 32
20:05:21,882 INFO (Thread-236) HBCI Thread: Received callback reason: 35
20:05:21,882 INFO (Thread-236) HBCI Thread: Received NEED_PT_DECOUPLED callback.
20:05:21,882 INFO (Thread-236) HBCI Thread: Sleeping HBCI thread for 2 seconds and then returning callback.
20:05:23,883 INFO (Thread-236) HBCI Thread: Finished NEED_PT_DECOUPLED sleep. Returning callback.
20:05:24,031 INFO (Thread-236) HBCI Thread: Received callback reason: 32
20:05:24,321 INFO (Thread-236) HBCI Thread: Received callback reason: 25
20:05:24,321 INFO (Thread-236) HBCI Thread: Awaking main thread with finished HBCI job.
Bei beiden logs sieht man nach erstellen des HBCIHandlers die erwarteten Callbacks (NEED_CONNECTION, NEED_PT_PIN, etc.), aber dann kommt der Unterschied: Bei meiner Sparkasse kommt nach NEED_PT_TANMEDIA(32) ein CLOSE_CONNECTION(25). Danach returned der HBCIHandler constructor und mein Applikationscode wird ausgeführt, woraufhin der eigentliche HBCIJob erstellt und executed wird. Kurz danach gibt es das erste NEED_PT_DECOUPLED(35) callback, gefolgt von 4 NEED_PT_DECOUPLED_RETRY(36).
Bei der Taunus Sparkasse hingegen gibt es nach NEED_PT_TANMEDIA direkt ein NEED_PT_DECOUPLED, bevor mein HBCIJob überhaupt gestartet wurde. Nach diesem decoupled callback kommt dann ein CLOSE_CONNECTION, und der HBCIHandler constructor returned. Jetzt wird der eigentliche Job ausgeführt, und hier gitb es dann ein *weiteres* NEED_PT_DECOUPLED callback. NEED_PT_DECOUPLED_RETRY erscheint überhaupt nicht. Also die GVTAN2Step::extractResults() Methode wurde quasi niemals aufgerufen.
Ich hänge beide vollständigen Log Files noch einmal an, dieses mal auch mit dem Output meiner Applikation, immer gepräfixt mit "HBCI Thread:"
Es sieht für mich etwas danach aus, als dass der UPD Sync im HBCIHandler constructor bei der Taunussparkasse eine PushTAN zur Vertrauenswürdigkeitsspeicherung auslöst, und dann returned, worauf hin der HBCIJob für die Kontostandsabfrage ebenfalls eine PushTAN Abfrage auslöst. Dabei kommt es dann zu Konflikten die ich nicht komplett verstehe.
Ist das ein zu erwartendes Verhalten? Und falls ja, kann ich irgendwie dafür sorgen, dass der HBCIHandler nicht returned, bevor die Decoupled request für die Vertrauenswürdigkeitsspeicherung akzeptiert würde?
Der an diesem Beitrag angefügte Anhang ist entweder nur im eingeloggten Zustand sichtbar oder die Berechtigung Deiner Benutzergruppe ist nicht ausreichend.