nemiah / phpFinTS

PHP library to communicate with FinTS/HBCI servers
MIT License
131 stars 40 forks source link

Dialog Exception in getStatementOfAccount bei Norisbank/Deutsche Bank #239

Closed fburian closed 4 years ago

fburian commented 4 years ago

Hallo,

nach erfolgreicher TAN-Authentifizierung bei der Norisbank funktioniert der Aufruf der Funktion getSEPAAccounts() auch ohne Probleme! Aber der nächste Schritt, also der Aufruf der Funktion getStatementOfAccount() wirft folgende Exception:

PHP Fatal error:  Uncaught Fhp\Dialog\Exception\FailedRequestException: Request Failed: Auftrag abgelehnt - Zwei-Schritt-TAN inkonsistent. Eingereichter Auftrag gelösch (9210); Teilweise fehlerhaft. (9050) in /var/www/fints/library/vendor/nemiah/php-fints/lib/Fhp/Dialog/Dialog.php:182
Stack trace:
#0 /var/www/fints/library/vendor/nemiah/php-fints/lib/Fhp/FinTs.php(270): Fhp\Dialog\Dialog->sendMessage(Object(Fhp\Message\Message), Array, NULL, 1)
#1 /var/www/fints/library/vendor/nemiah/php-fints/Samples/statement_of_account.php(42): Fhp\FinTs->getStatementOfAccount(Object(Fhp\Model\SEPAAccount), Object(DateTime), Object(DateTime))
#2 {main}
  thrown in /var/www/fints/library/vendor/nemiah/php-fints/lib/Fhp/Dialog/Dialog.php on line 182

Ich hab das ganze, also meinen Code, auch mit der Comdirect-Bank versucht, da hatte alles super geklappt.

Hat daher jemand eine Idee, wo das Problem liegt?

Danke Frank

ampaze commented 4 years ago

Versuch mal bitte ob es mit FintsNew funktioniert. D.h. SamplesNew

fburian commented 4 years ago

Warum enthält SamplesNew kein funktionierendes Beispiel? :) $fints = new \Fhp\FinTsNew($url, $bankCode, $username, $pin, $productName, $productVersion); ... hat wie beschrieben, ja einen anderen Konstruktor und ist somit falsch!

ampaze commented 4 years ago

Du meinst

https://github.com/nemiah/phpFinTS/blob/b292c758c1e7feac349b9e65b089d495866410e6/lib/Fhp/FinTsNew.php#L91-L99

?

fburian commented 4 years ago

Ich bin etwas durch einander, da der Aufruf ja so ist:

$fints = new \Fhp\FinTsNew($options, $credentials);

Aber egal, hab es mit FinTsNew nun probiert, es kommt der gleiche Fehler:

PHP Fatal error: Uncaught Fhp\Protocol\ServerException: FinTS errors: 9050 (global): Teilweise fehlerhaft. 9210 (wrt seg 3): Wert widerspricht Bankvorgaben. 9210 (wrt seg 4): Auftrag abgelehnt - Zwei-Schritt-TAN inkonsistent. Eingereichter Auftrag gelösch

Jemand eine Idee, was das Problem ist? Danke

fbett commented 4 years ago

Hallo,

bitte stelle sicher, dass garantiert die aktuelle Version geladen ist. Dieser Constructor gab es mal in einer Entwicklungs-Version, wurde seitdem (vor einigen Wochen) aber wieder geändert.

ampaze commented 4 years ago

9210 (wrt seg 3): Wert widerspricht Bankvorgaben.

Diese Fehlermeldung bezieht sich auf Segment 3 der Anfrage an die Bank. Da müsstest du im Log mal nachgucken welches das ist. Denke mal ohne Log kommen wir da nicht weiter. Ich meine mich aber zu erinnern, dass @nemiah auch ein Konto bei der Deutschen Bank hat und es dort funktioniert.

fburian commented 4 years ago

Okay, hier ist das Log, natürlich mit abgeänderten privaten Daten :) Aufgerufen hab ich die Datei statement_of_account.php: https://pastebin.com/DYckVHL8

Ja wäre schön, wenn @nemiah das Problem vielleicht kennt. Danke

nemiah commented 4 years ago

Huhu,

ja, ich habe zwei Geschäftskonten bei der Deutschen Bank und es funktionieren beide. Scheint so, als ob du die Umsätze von mehr als 90 Tagen abrufen willst. Mach mal weniger als 90 Tage, das ist dann schon mal ein Problem weniger…

ampaze commented 4 years ago

Das würde ja sogar auch auf die Fehlermeldung passen

Wert widerspricht Bankvorgaben.

Vlt erlaubt die Bank älter als 90 Tage grundsätzlich nicht. Das ist bei der GLS ähnlich, wenn ich da > 90 Tage per XML Abrufe, kommt auch eine nichtssagende Fehlermeldung.

Bevor ich mich durchs Log wühle, wäre gut zu wissen, ob es vlt einfach an den 90 Tagen liegt.

fburian commented 4 years ago

Hallo danke, genau das war es. Hab jetzt die letzten 90 Tage abgefragt, dann hat es funktioniert!