Closed guyyst closed 3 years ago
Der Stacktrace sind alles nur Folgefehler. Poste mal bitte den gesamten Bereich der Kommunikation mit der Bank. Im Wiki unter https://www.willuhn.de/wiki/doku.php?id=support:list:banken:misc:pintan#deutsche_bank_maxblue findest du Hinweise zu den Einstellungen für diese Bank.
Unten ist nochmal der gesamte Stacktrace. Den Wiki Artikel kannte ich noch nicht, das ist sehr hilfreich. Leider folgen wir all den Instruktionen für die Deutsche Bank bereits. HBCI Plus ist auch im Online Banking Portal der DB aktiviert. Wir antworten auch auf sowohl NEED_CUSTOMERID
und NEED_USERID
mit der Filial+Konto+Unterkonto Nummer, und die BLZ wird aus der IBAN des Kontos erlesen. Also die Daten sollten alle richtig sein.
Gerade habe ich auch einmal Hibiscus installiert, und das DB Konto dort ausprobiert. Beim aller ersten mal habe ich eine sehr ähnliche Fehlermeldung wie in meinem eigen Code bekommen, der Stacktrace ist auch unten angehängt. Leider ist jeder Versuch diesen Fehler in Hibiscus nochmal zu erzeugen gescheitert, und erneutes Anlegen der Bankverbindung hat immer funktioniert.
[Wed Mar 03 20:19:40 CET 2021][INFO][bg-task:][de.willuhn.jameica.hbci.HBCICallbackSWT.log] creating a connection to https://fints.deutsche-bank.de:443/ and checking the certificate
[Wed Mar 03 20:19:40 CET 2021][INFO][bg-task:][de.willuhn.jameica.hbci.HBCICallbackSWT.status] sending hbci message
[Wed Mar 03 20:19:40 CET 2021][INFO][bg-task:][de.willuhn.jameica.hbci.HBCICallbackSWT.status] waiting for response message
[Wed Mar 03 20:19:40 CET 2021][INFO][bg-task:][de.willuhn.jameica.hbci.HBCICallbackSWT.log] waiting for response message
[Wed Mar 03 20:19:41 CET 2021][INFO][bg-task:][de.willuhn.jameica.hbci.HBCICallbackSWT.status] decrypting response message
[Wed Mar 03 20:19:41 CET 2021][ERROR][bg-task:][de.willuhn.jameica.hbci.HBCICallbackSWT.log] Meldung der Bank: 9050:Teilweise fehlerhaft. org.kapott.hbci.status.HBCIStatus.addRetVal(HBCIStatus.java:72)
[Wed Mar 03 20:19:41 CET 2021][ERROR][bg-task:][de.willuhn.jameica.hbci.HBCICallbackSWT.log] Meldung der Bank: 9099:Verarbeitung zur Zeit nicht möglich. (5: Synch.TAN2Step6) org.kapott.hbci.status.HBCIStatus.addRetVal(HBCIStatus.java:72)
[Wed Mar 03 20:19:41 CET 2021][INFO][bg-task:][de.willuhn.jameica.hbci.HBCICallbackSWT.status] verifying signature of response message
[Wed Mar 03 20:19:41 CET 2021][WARN][bg-task:][de.willuhn.jameica.hbci.HBCICallbackSWT.log] message has no signature
[Wed Mar 03 20:19:41 CET 2021][INFO][bg-task:][de.willuhn.jameica.hbci.passports.pintan.server.PassportHandleImpl.close] closing pin/tan passport
[Wed Mar 03 20:19:41 CET 2021][INFO][bg-task:][de.willuhn.jameica.hbci.passports.pintan.server.PassportHandleImpl.close] pin/tan passport closed
[Wed Mar 03 20:19:41 CET 2021][ERROR][bg-task:][de.willuhn.jameica.hbci.passports.pintan.server.PassportHandleImpl.open] error while opening pin/tan passport
org.kapott.hbci.exceptions.HBCI_Exception: can not create HBCI handle
at org.kapott.hbci.manager.HBCIHandler.<init>(HBCIHandler.java:141)
at de.willuhn.jameica.hbci.passports.pintan.server.PassportHandleImpl.open(PassportHandleImpl.java:180)
at de.willuhn.jameica.hbci.gui.action.PassportSync$1.run(PassportSync.java:81)
at de.willuhn.jameica.gui.GUI$7.run(GUI.java:1081)
Caused by: org.kapott.hbci.exceptions.HBCI_Exception: can not register user
at org.kapott.hbci.manager.HBCIHandler.registerUser(HBCIHandler.java:169)
at org.kapott.hbci.manager.HBCIHandler.<init>(HBCIHandler.java:132)
... 3 more
Caused by: org.kapott.hbci.exceptions.HBCI_Exception: error while fetching new sysid from institute
at org.kapott.hbci.manager.HBCIUser.fetchSysId(HBCIUser.java:462)
at org.kapott.hbci.manager.HBCIUser.sync(HBCIUser.java:656)
at org.kapott.hbci.manager.HBCIUser.register(HBCIUser.java:704)
at org.kapott.hbci.manager.HBCIHandler.registerUser(HBCIHandler.java:167)
... 4 more
Caused by: org.kapott.hbci.exceptions.ProcessException: error while fetching new sysid from institute
at org.kapott.hbci.dialog.HBCIDialogSync.checkResult(HBCIDialogSync.java:125)
at org.kapott.hbci.dialog.AbstractRawHBCIDialog.execute(AbstractRawHBCIDialog.java:106)
at org.kapott.hbci.manager.HBCIUser.fetchSysId(HBCIUser.java:441)
... 7 more
[Wed Mar 03 20:19:41 CET 2021][INFO][bg-task:][de.willuhn.jameica.hbci.gui.action.PassportSync$1.run] test of passport failed: class org.kapott.hbci.exceptions.ProcessException: error while fetching new sysid from institute
[Wed Mar 03 20:19:41 CET 2021][WARN][bg-task:][de.willuhn.jameica.hbci.gui.DialogFactory.dirtyPINCache] mark pin cache dirty for all passports
[Wed Mar 03 20:19:41 CET 2021][INFO][Thread-10][de.willuhn.jameica.hbci.gui.action.PassportSync$2.run] log target removed
[Wed Mar 03 20:20:11 CET 2021][INFO][main][de.willuhn.jameica.gui.internal.parts.BackgroundTaskMonitor$1$1.run] auto closing monitor snapin
2021-03-01 14:21:06,270 INFO [com.BankingSocket] (default task-206) Unhandled HBCI_Exception while processing client message.: org.kapott.hbci.exceptions.HBCI_Exception: Fehler beim Erzeugen eines HBCIHandler Objektes
at snapshot.war//org.kapott.hbci.manager.HBCIHandler.<init>(HBCIHandler.java:141)
at snapshot.war//com.BankingFunctions.generateBankingProcess(BankingFunctions.java:85)
at snapshot.war//com.BankingSocket.createResponse(BankingSocket.java:129)
at snapshot.war//com.BankingSocket.onClientMessage(BankingSocket.java:79)
at jdk.internal.reflect.GeneratedMethodAccessor672.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.jboss.as.ee@20.0.1.Final//org.jboss.as.ee.component.ManagedReferenceMethodInterceptor.processInvocation(ManagedReferenceMethodInterceptor.java:52)
at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext$Invocation.proceed(InterceptorContext.java:509)
at org.jboss.as.weld.common@20.0.1.Final//org.jboss.as.weld.interceptors.Jsr299BindingsInterceptor.delegateInterception(Jsr299BindingsInterceptor.java:79)
at org.jboss.as.weld.common@20.0.1.Final//org.jboss.as.weld.interceptors.Jsr299BindingsInterceptor.doMethodInterception(Jsr299BindingsInterceptor.java:89)
at org.jboss.as.weld.common@20.0.1.Final//org.jboss.as.weld.interceptors.Jsr299BindingsInterceptor.processInvocation(Jsr299BindingsInterceptor.java:102)
at org.jboss.as.ee@20.0.1.Final//org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:63)
at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
at org.jboss.as.ejb3@20.0.1.Final//org.jboss.as.ejb3.component.invocationmetrics.ExecutionTimeInterceptor.processInvocation(ExecutionTimeInterceptor.java:43)
at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
at org.jboss.as.jpa@20.0.1.Final//org.jboss.as.jpa.interceptor.SBInvocationInterceptor.processInvocation(SBInvocationInterceptor.java:47)
at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
at org.jboss.as.ee@20.0.1.Final//org.jboss.as.ee.concurrent.ConcurrentContextInterceptor.processInvocation(ConcurrentContextInterceptor.java:45)
at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InitialInterceptor.processInvocation(InitialInterceptor.java:40)
at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:53)
at org.jboss.as.ee@20.0.1.Final//org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(ComponentDispatcherInterceptor.java:52)
at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
at org.jboss.as.ejb3@20.0.1.Final//org.jboss.as.ejb3.component.pool.PooledInstanceInterceptor.processInvocation(PooledInstanceInterceptor.java:51)
at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
at org.jboss.as.ejb3@20.0.1.Final//org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(AdditionalSetupInterceptor.java:54)
at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
at org.jboss.as.ejb3@20.0.1.Final//org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:252)
at org.jboss.as.ejb3@20.0.1.Final//org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:388)
at org.jboss.as.ejb3@20.0.1.Final//org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:158)
at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext$Invocation.proceed(InterceptorContext.java:509)
at org.jboss.weld.core@3.1.4.Final//org.jboss.weld.module.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:81)
at org.jboss.as.weld.common@20.0.1.Final//org.jboss.as.weld.ejb.EjbRequestScopeActivationInterceptor.processInvocation(EjbRequestScopeActivationInterceptor.java:89)
at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
at org.jboss.as.ejb3@20.0.1.Final//org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41)
at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
at org.jboss.as.ejb3@20.0.1.Final//org.jboss.as.ejb3.component.invocationmetrics.WaitTimeInterceptor.processInvocation(WaitTimeInterceptor.java:47)
at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
at org.jboss.as.ejb3@20.0.1.Final//org.jboss.as.ejb3.security.SecurityContextInterceptor.processInvocation(SecurityContextInterceptor.java:100)
at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
at org.jboss.as.ejb3@20.0.1.Final//org.jboss.as.ejb3.deployment.processors.StartupAwaitInterceptor.processInvocation(StartupAwaitInterceptor.java:22)
at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
at org.jboss.as.ejb3@20.0.1.Final//org.jboss.as.ejb3.component.interceptors.ShutDownInterceptorFactory$1.processInvocation(ShutDownInterceptorFactory.java:64)
at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
at org.jboss.as.ejb3@20.0.1.Final//org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(LoggingInterceptor.java:67)
at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
at org.jboss.as.ee@20.0.1.Final//org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50)
at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.ContextClassLoaderInterceptor.processInvocation(ContextClassLoaderInterceptor.java:60)
at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:438)
at org.wildfly.security.elytron-private@1.12.1.Final//org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:627)
at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.AccessCheckingInterceptor.processInvocation(AccessCheckingInterceptor.java:57)
at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:53)
at org.jboss.as.ee@20.0.1.Final//org.jboss.as.ee.component.ViewService$View.invoke(ViewService.java:198)
at org.jboss.as.ee@20.0.1.Final//org.jboss.as.ee.component.ViewDescription$1.processInvocation(ViewDescription.java:191)
at org.jboss.as.ee@20.0.1.Final//org.jboss.as.ee.component.ProxyInvocationHandler.invoke(ProxyInvocationHandler.java:81)
at snapshot.war//com.BankingSocket$$$view134.onClientMessage(Unknown Source)
at jdk.internal.reflect.GeneratedMethodAccessor672.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at io.undertow.websocket@2.1.3.Final//io.undertow.websockets.jsr.annotated.BoundMethod.invoke(BoundMethod.java:87)
at io.undertow.websocket@2.1.3.Final//io.undertow.websockets.jsr.annotated.AnnotatedEndpoint$2.onMessage(AnnotatedEndpoint.java:142)
at io.undertow.websocket@2.1.3.Final//io.undertow.websockets.jsr.FrameHandler$7.run(FrameHandler.java:284)
at io.undertow.websocket@2.1.3.Final//io.undertow.websockets.jsr.ServerWebSocketContainer$1.call(ServerWebSocketContainer.java:170)
at io.undertow.websocket@2.1.3.Final//io.undertow.websockets.jsr.ServerWebSocketContainer$1.call(ServerWebSocketContainer.java:167)
at io.undertow.servlet@2.1.3.Final//io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
at org.wildfly.extension.undertow@20.0.1.Final//org.wildfly.extension.undertow.security.SecurityContextThreadSetupAction.lambda$create$0(SecurityContextThreadSetupAction.java:105)
at org.wildfly.extension.undertow@20.0.1.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1530)
at org.wildfly.extension.undertow@20.0.1.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1530)
at org.wildfly.extension.undertow@20.0.1.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1530)
at org.wildfly.extension.undertow@20.0.1.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1530)
at org.wildfly.extension.undertow@20.0.1.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1530)
at io.undertow.websocket@2.1.3.Final//io.undertow.websockets.jsr.ServerWebSocketContainer.invokeEndpointMethod(ServerWebSocketContainer.java:610)
at io.undertow.websocket@2.1.3.Final//io.undertow.websockets.jsr.ServerWebSocketContainer$6.run(ServerWebSocketContainer.java:596)
at io.undertow.websocket@2.1.3.Final//io.undertow.websockets.jsr.OrderedExecutor$ExecutorTask.run(OrderedExecutor.java:67)
at org.jboss.threads@2.3.3.Final//org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at org.jboss.threads@2.3.3.Final//org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1982)
at org.jboss.threads@2.3.3.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
at org.jboss.threads@2.3.3.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: org.kapott.hbci.exceptions.HBCI_Exception: Fehler beim Registrieren der Nutzerdaten
at snapshot.war//org.kapott.hbci.manager.HBCIHandler.registerUser(HBCIHandler.java:169)
at snapshot.war//org.kapott.hbci.manager.HBCIHandler.<init>(HBCIHandler.java:132)
... 85 more
Caused by: org.kapott.hbci.exceptions.HBCI_Exception: Fehler beim Ermitteln einer neuen System-ID
at snapshot.war//org.kapott.hbci.manager.HBCIUser.fetchSysId(HBCIUser.java:462)
at snapshot.war//org.kapott.hbci.manager.HBCIUser.sync(HBCIUser.java:656)
at snapshot.war//org.kapott.hbci.manager.HBCIUser.register(HBCIUser.java:704)
at snapshot.war//org.kapott.hbci.manager.HBCIHandler.registerUser(HBCIHandler.java:167)
... 86 more
Caused by: org.kapott.hbci.exceptions.ProcessException: Fehler beim Ermitteln einer neuen System-ID
at snapshot.war//org.kapott.hbci.dialog.HBCIDialogSync.checkResult(HBCIDialogSync.java:125)
at snapshot.war//org.kapott.hbci.dialog.AbstractRawHBCIDialog.execute(AbstractRawHBCIDialog.java:106)
at snapshot.war//org.kapott.hbci.manager.HBCIUser.fetchSysId(HBCIUser.java:441)
... 89 more
Die Bank sendet hier "9099:Verarbeitung zur Zeit nicht möglich. (5: Synch.TAN2Step6)". Also entweder hat sie tatsächlich eine technische Störung oder an den Einstellungen bzw. dem Verhalten deines Clients beim TAN-Handling stimmt was nicht. Wenn es in Hibiscus funktioniert, dann kann die Ursache nicht HBCI4Java sein.
PS: Ich weiss nicht, was du mit "HBCIVersion 3.0" meinst. Die aktuelle Version von HBCI4Java ist 3.1.53 - siehe https://mvnrepository.com/artifact/com.github.hbci4j/hbci4j-core
Mit HBCIVersion 3.0
hatte ich mich auf den Enum Wert HBCIVersion.HBCI_300
bezogen, sorry für's Missverständnis. HBCI4Java ist bei mir auf dem neusten Stand.
Ich habe mein Problem genauer untersuchen können, da ich vorher nicht dran gedacht hab die messages der überschriebenen log()
Funktion in meinem HBCICallback auszugeben.
Damit habe ich herausgefunden, dass die grundlegende Ursache des Problems daher stammt, dass der Callback reason NEED_PT_PHOTOTAN
nicht von execute()
, sondern von new HBCIHandler()
erzeugt wird (Wie in diesem Kommentar erklärt). Demnach muss eine Antwort sofort geliefert werden, und kann nicht zu einem späteren Zeitpunkt mit continueThreaded()
bereitgestellt werden.
Das gleiche verhalten ist mir bereits bei anderen Callback Gründen, wie z.B. NEED_PT_SECMECH
aufgefallen (daher mein anderes Github issue). Letztendlich war dieses Verhalten bei NEED_PT_SECMECH
jedoch kein so großes Problem, da ich einfach einen Security Mechanisms als Standard wählen kann, ohne den User im Frontend zu fragen, und dann die Option anbiete den Prozess mit einem anderen Mechanismus erneut zu starten.
Die Tatsache, dass NEED_PT_PHOTOTAN
nicht von einem Threaded Callback behandelt werden kann ist wesentlich problematischer. Ich muss das photoTAN Bild an das Frontend schicken um es dem User zu zeigen, und müsste dann mit der erhaltenen TAN im Backend den HBCI Process wieder aufnehmen.
Das erklärt auch warum Hibiscus keine Probleme mit der Deutschen Bank bzw. photoTAN hat, da es vermutlich nicht HBCICallbackThreaded
verwendet, und alle Prozesse direkt im Client durchführt.
In dem oben verlinkten Kommentar steht, dass der Threading-Mechanismus nur 'im Moment' nicht für new HBCIHandler()
verfügbar ist. Gibt es einen groben Zeitplan wann diese Funktionalität hinzugefügt wird, oder welche anderen Möglichkeiten es gäbe photoTAN in einer Client-Server Architektur zu benutzen?
Damit habe ich herausgefunden, dass die grundlegende Ursache des Problems daher stammt, dass der Callback reason
NEED_PT_PHOTOTAN
nicht vonexecute()
, sondern vonnew HBCIHandler()
erzeugt wird
Ah. Vestehe. Dei ganze Problematik ist dann vermutlich durch PSD2 entstanden. Vorher kam es nur zu TAN-Abfragen, wenn HBCI-Geschäftsvorfälle ausgeführt werden.
Jetzt mit PSD2 ist ja u.U. bereits beim "Login" eine TAN erforderlich. Also noch bevor irgend ein fachlicher Geschäftsvorfall ausgeführt wurde. Dieses interne Bootstrapping des Bankzugangs passiert ja automatisch beim Erstellen des HBCI-Handlers. Und dort werden dann halt auch die TANs getriggert.
In dem oben verlinkten Kommentar steht, dass der Threading-Mechanismus nur 'im Moment' nicht für
new HBCIHandler()
verfügbar ist. Gibt es einen groben Zeitplan wann diese Funktionalität hinzugefügt wird,
Ich nehme an, du beziehst dich auf diesen Kommentar hier: https://github.com/hbci4j/hbci4java/blob/master/src/main/java/org/kapott/hbci/callback/HBCICallbackThreaded.java#L82
Der Kommentar stammt noch von Stefan Palme - dem ursprünglichen Autor von HBCI4Java. Der Kommentar ist mindestens 10 Jahre alt. Seit ich HBCI4Java 2011 geforkt habe, hab ich das Thema Threaded Callbacks nie weiter verfolgt, weil ich den Bedarf dafür nie hatte.
Aber wenn du schon so tief in die Materie eingestiegen bist, dass du die Ursache dafür gefunden hast, vielleicht findest du ja eine Lösung dafür, die ich als Patch übernehmen kann.
oder welche anderen Möglichkeiten es gäbe photoTAN in einer Client-Server Architektur zu benutzen?
Da hab ich leider auch keine Ideen. Ich hab das selbst nie so verwendet.
Ich nehme an, du beziehst dich auf diesen Kommentar hier
Jep, falschen Link kopiert^^
Ok, aber das ist alles gut zu wissen. Ich schaue mir an was sich machen lässt um die anderen Callbacks auch in Threads abhandeln zu können.
Ich habe HBCI4Java erfolgreich mit der Sparkasse und Postbank benutzen können, jedoch stürzt jeder Verbindungsversuch mit einem Konto bei der Deutschen Bank wie folgt ab:
Wenn ich mit Absicht eine falsche Pin für unsere UserID der DB benutze bekomme ich eine entsprechende Fehlermeldung der Bank zurück. Die Login Daten sind also definitiv richtig.
Als HBCIVersion benutze ich 3.0. Unten ist noch ein Ausschnitt meines Codes. Wir benutzen Threaded HBCI Callbacks, falls das relevant ist.