nemiah / phpFinTS

PHP library to communicate with FinTS/HBCI servers
MIT License
132 stars 42 forks source link

Fehler bei Commerzbank PhotoTAN #420

Closed wienen-it-dev closed 10 months ago

wienen-it-dev commented 10 months ago

Hallo zusammen,

ich würde gerne um Hilfe bitten bei Nutzung eines Commerzbank-Kontos:

Beim FinTS Login mit PhotoTAN-Verfahren tritt folgende Fehlermeldung auf:

"tanmedium not allowed for this tanmode"

Verwendete FinTS-URL: https://fints.commerzbank.de/fints

Diesen Fix habe ich bereits verwendet: https://github.com/nemiah/phpFinTS/pull/409 (mit php-fints version 3.3.0, da ein Update auf PHP8 zur Zeit nicht möglich ist)

Hat jemand eine Idee, wie der Fehler behoben werden kann?

Daten, die von Commerzbank zu TanModes geliefert werden:

Fhp\Segment\TAN\VerfahrensparameterZweiSchrittVerfahrenV6 Object ( [sicherheitsfunktion] => 900 [tanProzess] => 2 [technischeIdentifikationTanVerfahren] => MS1.4.1 [zkaTanVerfahren] => [versionZkaTanVerfahren] => [nameDesZweiSchrittVerfahrens] => photoTAN [maximaleLaengeDesTanEingabewertes] => 10 [erlaubtesFormat] => 2 [textZurBelegungDesRueckgabewertes] => photoTAN-Grafik [maximaleLaengeDesRueckgabewertes] => 2048 [mehrfachTanErlaubt] => 1 [tanZeitUndDialogbezug] => 3 [auftragsstornoErlaubt] => [smsAbbuchungskontoErforderlich] => 0 [auftraggeberkontoErforderlich] => 0 [challengeKlasseErforderlich] => [challengeStrukturiert] => 1 [initialisierungsmodus] => 00 [bezeichnungDesTanMediumsErforderlich] => 0 [antwortHhdUcErforderlich] => [anzahlUnterstuetzterAktiverTanMedien] => 1 )

fbett commented 10 months ago

Ist der 2. Parameter "tanMedium" beim Call der Funktion selectTanMode belegt?

Bei der Nutzung mit Deutsche Bank und dem PhotoTan-Verfahren (welche das gleiche System haben müssten), nutzen wir den 2. Parameter nicht und übersenden somit einen null Wert.

Je nach Bank und Verfahren ist es aber notwendig hier etwas anzugeben. Z.B. die Bezeichnung des Geräts.

Ansonsten nur für den Fall: TanMedium != TanMode

Alternativ könnte man mal mit einem anderen Programm mit Debug-Ausgabe (z.B. der App "Banking4") eine Tan Transaktion probieren und die Logs vergleichen.

wienen-it-dev commented 10 months ago

Hallo fbett,

vielen Dank für Deine schnelle Antwort.

Der 2. Parameter "tanMedium" beim Call von selectTanMode() ist gesetzt. Werde dies ändern zu null und testen.

Von der Commerzbank wird für TanMedium und TanMode jeweils der Wert "photoTAN" zurückgeliefert, während bei anderen Banken / Verfahren unterschiedliche Werte vorhanden sind. Wir haben es z.B. bei Sparkasse / PushTAN bereits erfolgreich im Einsatz.

Wenn der Test erfolgreich ist, werde ich es wie von Dir beschrieben (TanMedium != TanMode) einbauen.

Vielen Dank nochmals!

DerSpezialist commented 10 months ago

Guten Tag, ich klinke mich an dieser Stelle mal ein, da ich auch ein Problem mit PhotoTAN der Commerzbank habe. Ich benutze Firefly in Kombination mit dem FinTS Importer von bnw (https://github.com/bnw/firefly-iii-fints-importer) via Docker. Nachdem der Fix #409 gemerged wurde, habe ich mir den FinTS Importer mit dem aktuellen phpFinTS als Docker Container neu gebaut. Ich bekomme allerdings weiterhin die folgende Fehlermeldung, wenn ich versuche mein Transaktionen von der Commerzbank abzurufen:

Warning: Undefined array key 999 in /vendor/nemiah/php-fints/lib/Fhp/FinTs.php on line 534

Fatal error: Uncaught Fhp\Protocol\ServerException: FinTS errors: 9050 (global): Die Nachricht enthält Fehler. 9800 (global): Dialog abgebrochen 9340 (global): Unbekannte oder unzulässige Signatur. FinTS warnings: 3920 (wrt seg 3): Zugelassene Ein- und Zwei-Schritt-Verfahren für den Benutzer. [999, 900] in /vendor/nemiah/php-fints/lib/Fhp/Protocol/ServerException.php:170 Stack trace: #0 /vendor/nemiah/php-fints/lib/Fhp/FinTs.php(963): Fhp\Protocol\ServerException::detectAndThrowErrors(Object(Fhp\Protocol\Message), Object(Fhp\Protocol\Message)) #1 /vendor/nemiah/php-fints/lib/Fhp/FinTs.php(379): Fhp\FinTs->sendMessage(Object(Fhp\Protocol\Message)) #2 /app/TanHandler.php(39): Fhp\FinTs->submitTan(Object(Fhp\Protocol\DialogInitialization), '2665298') #3 /app/TanHandler.php(31): App\TanHandler->create_or_continue_action() #4 /app/Login.php(21): App\TanHandler->__construct(Object(Closure), 'login-action', Object(Symfony\Component\HttpFoundation\Session\Session), Object(Twig\Environment), Object(Fhp\FinTs), Object(App\Step), Object(Symfony\Component\HttpFoundation\Request)) #5 /app/index.php(59): App\StepFunction\Login() #6 {main} thrown in /vendor/nemiah/php-fints/lib/Fhp/Protocol/ServerException.php on line 170

fbett commented 10 months ago

@DerSpezialist Die Fehlermeldung ist klar anders, bitte öffne eine eigenen Thread. Suche zuvor bitte mal in den Issues nach "999" da müsste was kommen.

wienen-it-dev commented 10 months ago

Hallo fbett,

vielen Dank nochmals, der 2. Parameter "tanMedium" muss im Fall TanMedium == TanMode als Wert null gesetzt werden (beim Call von selectTanMode()).