Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fehler Sparkasse pushTAN 2.0 Verfahren FinTS #453

Open
wienen-it-dev opened this issue Aug 27, 2024 · 36 comments
Open

Fehler Sparkasse pushTAN 2.0 Verfahren FinTS #453

wienen-it-dev opened this issue Aug 27, 2024 · 36 comments

Comments

@wienen-it-dev
Copy link

Hallo zusammen,

ich würde um Hilfe bitten bei folgendem Problem (ähnlicher Fall wie #423):

Allerdings diesmal beim Abruf von Kontoauszugs-Daten. An der Anwendung wurde keine Änderung vorgenommen seit der letzten erfolgreichen Nutzung.

TanMode (923) wird von der Bank zurückgeliefert und kann ausgewählt werden. TanMedium-Auswahl wird ebenfalls zurückgeliefert (smsTAN, pushTAN, chipTAN, Alle Geräte). Bei Auswahl von PushTAN oder Alle Geräte wird folgender Fehler von der Bank geliefert:

FinTS errors: 9050 (global): Die Nachricht enthält Fehler. 9800 (global): Dialog abgebrochen 9955 (wrt seg 4): Auftrag nicht ausgeführt - Die Gerätebezeichnung ist unbekannt. (MBV07390100255) FinTS warnings: 3905 (global): Es wurde keine Challenge erzeugt. 3920 (wrt seg 4): Zugelassene Zwei-Schritt-Verfahren für den Benutzer. [923] Request segments: HKVVB:4:3+16+0+0+XXXXXXXXXXXXXXXXXXXXXXXXX+1.0'

@Magellanth
Copy link
Contributor

Hallo,

vermutlich hat deine Sparkasse auch die "Geräteerkennung" aktiviert, unsere hat das diese Woche ausgerollt:
https://www.f-i.de/fints

Wenn das der selbe Fall ist den ich aktuell habe dann brauchst du:

  1. die dev-master Version, also im composer: "nemiah/php-fints": "dev-master", (behebt den Fehler den du hast)
  2. eine persistente $fints->kundensystemId, an dieser erkennt die Sparkasse das Gerät welches die Anfrage stellt, wenn diese nicht vor dem Login gesetzt wird dann kommt die TAN Abfrage jedesmal aufs Neue.

An der Stelle hoffe ich uns kann noch jemand helfen:
Ist dafür $fints->persist() gedacht? Mir scheint das etwas overkill zu sein dafür dass ich einfach nur die kundensystemId speichern und wieder setzen möchte.
Direkt kann man diese aber nicht setzen, da sie private ist und keinen setter hat.

Ich habe testweise die kundensystemId nach dem Login mit PushTAN ausgelesen, in der FinTs Klasse auf public geändert und direkt beschrieben, damit funktioniert der Ablauf dann ohne dass erneut nach TAN gefragt wird.

@mmnasir
Copy link

mmnasir commented Sep 1, 2024

Hello @wienen-it-dev ,

did you find any solution for this problem?

I have tried what @Magellanth explained here and did not work with me:

I have added this to login function:
if (file_exists('kundensystemId/kundensystemId.txt')) { $this->kundensystemId = file_get_contents('kundensystemId/kundensystemId.txt'); }
and this:
file_put_contents('kundensystemId/kundensystemId.txt', $this->kundensystemId);

to the ensureSynchronized() function

of course also changed the kundensystemId to public.

tested and then the same error.

@mmnasir
Copy link

mmnasir commented Sep 1, 2024

Hi again, yes what I have done following the instructures of @Magellanth WORKED with me after changing to the live account bank.
thanks.

@wienen-it-dev
Copy link
Author

Hi Magellanth,

vielen Dank für Deine schnelle Hilfe. Ein erster Versuch mit der dev-master Version war nicht erfolgreich (selber Fehler), obwohl $fints->persist() bereits genutzt wird.

Ein zweiter Anlauf mit manuell angepasster kundensystemId steht noch aus.

@wienen-it-dev
Copy link
Author

wienen-it-dev commented Sep 20, 2024

Hi @Magellanth,

vielen Dank nochmals für Deine Hilfe. Allerdings besteht derselbe Fehler auch mit der dev-master Version und mit manuellem Setzen der kundensystemId.

Auf https://www.f-i.de/fints wird allerdings Rückmeldecode 9391 genannt, welcher in der Fehlermeldung aus dem Eingangposting jedoch nicht enthalten ist.

Könnte es sich noch um ein anderes Problem handeln? Oder gibt es mittlerweile eine weitere verfügbare Lösung?

@wienen-it-dev
Copy link
Author

Hi @mmnasir,

thank you very much for your comment.

Unfortunately your solution didn't work for me after adding the kundensystemId to functions login() and ensureSynchronized().

Maybe I missed out a step? You mentioned you changed the kundensystemId to public. Why is it necessary, as it seems you only used kundensystemId within FinTs class?

@roben
Copy link

roben commented Sep 23, 2024

@Philipp91 Since $fints->kundensystemId was implemented by you, could you please elaborate how it is meant to be used?
As I understand it, an initial value is provided by the bank and needs to be persisted. But since there is no setter for it, there surely must be another way to do it. persist() seems to be too granular for this, as it also perists dialog and message.

@Philipp91
Copy link
Contributor

Philipp91 commented Sep 23, 2024

Yes you're meant to use persist() for this. What's your concrete concern with it being "too granular" or "overkill"?

You also need persist() when you response to a TAN challenge at a later time, so I don't see how you could possibly get around using it at least in some parts of your application. And at that point, at least in my application, there's some central code that always uses persist and restores the instance later, no matter if it's a case of decoupled submission, other TAN challenge, or no process going on and it just ends up storing the kundensystemID and some nullsand the selected TAN mode/medium (which doesn't hurt).

@Philipp91
Copy link
Contributor

@wienen-it-dev Can you post a stack trace?

@roben
Copy link

roben commented Sep 23, 2024

That's how I used it until now: to persist dialogs while querying for a TAN. So what would be a good point to persist it under normal circumstances? Maybe after any successful action? Is there no danger for any by-catch which would cause trouble when starting new sometime later?

@Philipp91
Copy link
Contributor

So what would be a good point to persist it under normal circumstances?

In my application, I persist when I'm completely done with the FinTs instance otherwise, i.e. when I've run all the operations/requests/... that I needed, even if it was a longer sequence. Basically when my PHP program is about to end (or at least the part that needs a bank connection).

Is there no danger for any by-catch which would cause trouble when starting new sometime later?

There is a bit, if a previous operation got interrupted (like the user never entered the TAN) and the bank cleared the state on their end due to some timeout. To be fair, that risk is there even while you're just doing multi-step operations.

That's what $fints->forgetDialog() is for. You can call it (1) after restoring a FinTs instance when you know you want to start a new operation, or (2) when an error occurred. The "forgetting" tries to align the dialog state with the bank, assuming that the bank also forgot the dialog on their end.

@roben
Copy link

roben commented Sep 23, 2024

Thank you very much for the explanation! I will implement it that way, too, then. I did not know about forgetDialog which was a missing piece, I think.

@Magellanth
Copy link
Contributor

Magellanth commented Sep 26, 2024

Update on my productive setup: I changed the workaround with direct override of kundensystemId to the usage of persist().
To get an idea of how it works:

//init finTs connection with a persistence string at the start of the code
$this->finTs = FinTs::new($options, $credentials, $this->bankingAccount->getPersistenceString());

if($this->bankingAccount->isPersisted()) {
     //fresh start, forget any dialog that may have been persisted
     $this->finTs->forgetDialog();
 }

//do the work...

//end of script
$this->finTs->close();
$persistanceString = $this->finTs->persist(true);
//save this string...

@Philipp91 I think the usage of persist should be integrated to the examples (at least i did not see it there).

@wienen-it-dev
Copy link
Author

@wienen-it-dev Can you post a stack trace?

@Philipp91 Sorry right now I don't have a stack trace. I updated php-fints to dev-master (but with syntax modifications for PHP 7.4). Still getting the error below.

Will it make an impact to update to PHP 8.3?

The bank (Sparkasse) confirmed Geräteerkennung is active.

9050 (global): Die Nachricht enthält Fehler.
9800 (global): Dialog abgebrochen
9955 (wrt seg 4): Auftrag nicht ausgeführt - Die Gerätebezeichnung ist unbekannt. (MBV07390100255)
FinTS warnings:
3905 (global): Es wurde keine Challenge erzeugt.
3920 (wrt seg 4): Zugelassene Zwei-Schritt-Verfahren für den Benutzer. [921, 922]
Request segments:
HKVVB:4:3+16+0+0+XXXXXXXXXXXXXXXXXXXXXXXXX+1.0'

@wienen-it-dev
Copy link
Author

Yes, an example of persist / forgetDialog would be great.

My workflow is roughly described at the bottom, which has been working for quite a while with PushTAN / ChipTAN / NoTAN.

Recently another bank account got another error below, which has not been resolved yet. Not sure if these errors are related, as bank statement import stopped working for three different bank accounts within the past few weeks.

Appreciate any input how to solve these issues.

Sie möchten sich "auf einem neuen Gerät anmelden"? Gehen Sie wie folgt vor: Stecken Sie Ihre Karte in den TAN-Generator und drücken Sie die Taste "TAN". Geben Sie den "Startcode XXXXXXXX" ein und bestätigen Sie mit der Taste "OK". Bitte nutzen Sie dieses Gerät: Kartennummer: *********XXXX

workflow:
$fints = \Fhp\FinTs::new($options, $credentials, $persistedInstance);

$fints->getTanModes();

$tanMode->needsTanMedium();

$fints->getTanMedia($tanMode);

if($tanMode == 900) // photoTAN does not require tanMedium
{
$tanMedium = null;
}

$fints->selectTanMode($tanMode, $tanMedium);

$login_result = $fints->login();

$login_needs_tan = $login_result->needsTan();

if($login_needs_tan)
{
handleStrongAuthentication($login_result, $fints);
}

$getSepaAccounts = \Fhp\Action\GetSEPAAccounts::create();
$fints->execute($getSepaAccounts);

$getStatement = \Fhp\Action\GetStatementOfAccount::create($sepaAccount, $from, $to);
$fints->execute($getStatement);

@roben
Copy link

roben commented Sep 26, 2024

I am having trouble getting this to work, too. We share the same credentials for multiple bank accounts and when restoring the persisted instance I either get this:

26.09.2024 16:40:15 WARN  [hbci_account_tr…] 9050 (global): Die Nachricht enthält Fehler.
26.09.2024 16:40:15 WARN  [hbci_account_tr…] 9800 (global): Dialog abgebrochen
26.09.2024 16:40:15 WARN  [hbci_account_tr…] 9110 (global): Technischer Fehler
in Fhp/Protocol/ServerException.php:170

or this (Postbank just sent an empty response, as in zero bytes):

26.09.2024 16:37:16 ERROR [hbci_account_tr…] Message: Undefined array key 0
26.09.2024 16:37:16 ERROR [hbci_account_tr…] Backtrace:
...
26.09.2024 16:37:16 ERROR [hbci_account_tr…] library/Fhp/Protocol/Message.php => error_function:303
26.09.2024 16:37:16 ERROR [hbci_account_tr…] library/Fhp/FinTs.php => parse:955
26.09.2024 16:37:16 ERROR [hbci_account_tr…] library/Fhp/FinTs.php => sendMessage:875
26.09.2024 16:37:16 ERROR [hbci_account_tr…] library/Fhp/FinTs.php => endDialog:649
26.09.2024 16:37:16 ERROR [hbci_account_tr…] library/Fhp/FinTs.php => ensureBpdAvailable:728
26.09.2024 16:37:16 ERROR [hbci_account_tr…] library/Fhp/FinTs.php => getSelectedTanMode:759
26.09.2024 16:37:16 ERROR [hbci_account_tr…] library/Fhp/FinTs.php => requireTanMode:257

I noticed the messageId being persisted and not destroyed by forgetDialog. Maybe that's the issue?

@roben
Copy link

roben commented Sep 26, 2024

This whole persisting thing feels so wrong and quirky... Can't we just get system id accessors?

@Philipp91
Copy link
Contributor

I think the usage of persist should be integrated to the examples (at least i did not see it there).

There are samples that use the persist APIs, though that's in the "middle" (between sending an action and submitting the TAN), whereas what we're discussing here is the "outside", i.e. how you persist the instance over longer periods of time, to execute completely new actions in the future without having to login from scratch.

There is currently no sample like that, because all samples take the form of simple scripts that run from top to bottom. That said, it would indeed make sense to demonstrate how to integrate the library into a larger application with a long-term storage for persisted instances. Feel free to contribute such an example.

@Philipp91
Copy link
Contributor

Will it make an impact to update to PHP 8.3?

No.

Die Gerätebezeichnung ist unbekannt. (MBV07390100255)

Is that the name of your TAN medium?

Is that string part of your request? If so, in which field?

Which method are you calling when this error happens? (That's why I asked for a stack trace, but feel free to just describe it.)

3920 (wrt seg 4): Zugelassene Zwei-Schritt-Verfahren für den Benutzer. [921, 922]

If you let it list available TAN media after receiving this error, does it list the one above?

@Philipp91
Copy link
Contributor

Sie möchten sich "auf einem neuen Gerät anmelden"? Gehen Sie wie folgt vor:

Assuming this happens in the handleStrongAuthentication part of your code, it seems correct to me. A bank asking for a TAN is nothing unusual. There are banks that give you read-only access to bank statements for one day or a month or three months, depending on the bank, after entering a TAN just once. But after that time is over, they'll ask for another TAN. Other banks just always ask for a TAN.

@Philipp91
Copy link
Contributor

or this (Postbank just sent an empty response, as in zero bytes)

Huh. Do they do this repeatedly/reproducibly?

This whole persisting thing feels so wrong and quirky... Can't we just get system id accessors?

Feel free to patch the library locally (inside your vendor directory) to get those accessors, make your application use it, and if that fixes things (and at the same time using the existing persist mechanism for some reason doesn't fix it) then send a PR.

@roben
Copy link

roben commented Sep 26, 2024

Huh. Do they do this repeatedly/reproducibly?

Yes. I would guess it's a bug on their side but a proper error message from them would help to debug my issue...

Feel free to patch the library locally [...] then send a PR

Alright. I already did the first part and it seems to work just fine. I'll leave it for a few days and create the PR then.

Thanks for your help! I guess this whole thematic will pick up momentum soon when more and more banks require the system id to be handled.

@florian-adelt
Copy link

Alright. I already did the first part and it seems to work just fine. I'll leave it for a few days and create the PR then.

Hi Roben,
i have the same problems. Would you share your code with me?

I could then try it out (my getters and setters havent work last week, but i had no time to debug).

Thank you in Advance.

@wienen-it-dev
Copy link
Author

Will it make an impact to update to PHP 8.3?

No.

Die Gerätebezeichnung ist unbekannt. (MBV07390100255)

Is that the name of your TAN medium?

Is that string part of your request? If so, in which field?

This string is provided by the exception, which is thrown. It looks more like an error code, as you can find same error message on google.

Which method are you calling when this error happens? (That's why I asked for a stack trace, but feel free to just describe it.)

I managed to get a stack trace. Sorry it is not straight forward to get, as I don't have access to the bank account myself.

#0 /nemiah/php-fints/lib/Fhp/FinTs.php(979): Fhp\Protocol\ServerException::detectAndThrowErrors()
#1 /nemiah/php-fints/lib/Fhp/FinTs.php(312): Fhp\FinTs->sendMessage()
#2 /nemiah/php-fints/lib/Fhp/FinTs.php(268): Fhp\FinTs->execute()

3920 (wrt seg 4): Zugelassene Zwei-Schritt-Verfahren für den Benutzer. [921, 922]

If you let it list available TAN media after receiving this error, does it list the one above?

I'll try to get this information later on.

Thank you for your help.

@Philipp91
Copy link
Contributor

Wild guess: Let's say "Gerätebezeichnung" refers to the TanMedium. You might call selectTanMedium() yourself or a prior selection might have been persist()-ed. Maybe that old selection isn't valid anymore, hence that error. So you would have to run (your user) through the process again where you call getTanMedia() and pick one of the valid ones.


Another wild guess: Code 9955 has a very particular meaning in the spec: "Ein-Schritt-TANVerfahren nicht zugelassen". Even though that doesn't match the error message that they send you, is it possible that you're somehow sending requests that indicate to the bank that you don't want to do 2-factor authentication, but the bank thinks you should, hence the error? I.e. do you not call selectTanMode() at all or with the second parameter set to null (nor have you called it with a non-null parameter in your persisted instance)?

@roben
Copy link

roben commented Sep 30, 2024

Hi Roben, i have the same problems. Would you share your code with me?
I could then try it out (my getters and setters havent work last week, but i had no time to debug).
Thank you in Advance.

Hi. There is not much to share. The only thing I did was making the property temporarily public (public $kundensystemId). I extract this property after any successful action and restore it immediately after FinTs::new().

When this approach has been tested for a few days I will revert my temporary change and create a PR with a proper getter and setter for the property.

@florian-adelt
Copy link

Hi Roben, i have the same problems. Would you share your code with me?
I could then try it out (my getters and setters havent work last week, but i had no time to debug).
Thank you in Advance.

Hi. There is not much to share. The only thing I did was making the property temporarily public (public $kundensystemId). I extract this property after any successful action and restore it immediately after FinTs::new().

When this approach has been tested for a few days I will revert my temporary change and create a PR with a proper getter and setter for the property.

Thanks! Maybe it would be good idea to pass the $kundensystemId directly within the constructor...

@roben
Copy link

roben commented Oct 2, 2024

As I just learned it's not that simple. (Is it ever?) You are not allowed to submit the $kundensystemId when calling getTanModes(). So you have to be a bit more careful when to set it and adding it to the constructor is not that helpful in this regard.

@Philipp91 I think that's also what happened in #453 (comment). I always restored the persisted instance in my Wrapper, no matter what Action eventually was called.

@Philipp91
Copy link
Contributor

Then please post stack traces of your error. So far, I had assumed the 26.09.2024 16:40:15 WARN [hbci_account_tr…] 9050 (global): Die Nachricht enthält Fehler. comes from your actual action, but then it seems like it comes from getTanModes()? Or are you getting a different kind of error from there?

Note that there's this call tree (simplified):

  • getTanModes:
    • ensureTanModesAvailable:
    • if ($this->allowedTanModes === null)
      • ensureBpdAvailable:
        • early-exits if BPD is already there, but it's not because you didn't persist it
        • starts a dialog as anonymous (kundensystemId does not matter here)
        • ends the dialog
      • ensureSynchronized:
        • if ($this->kundensystemId === null) <---- you're affecting this
          • ensureBpdAvailable: early-exits because BPD is now there
          • starts a synchronization dialog, i.e. with your login but without TAN(mode) and without kundensystemId
          • stores new kundensystemId
          • possibly receives UPD
          • ends the dialog

If you restore only the kundensystemId manually, you make it bypass the synchronization. If you persist fully, none of this runs because the allowedTanModes would have been persisted.

Without stack traces, I'm unable to tell whether the errors you are seeing happen (a) during synchronization, in which case we should be able to fix them even if skipping the synchronization happens to work for you today, or (b) during your main operation after all of the above, and the error happens because you didn't freshly executing some of the above "thanks" to it being available from the persisted instance.

@juppw
Copy link

juppw commented Oct 9, 2024

Workaround - Saving the kundensystemId

First, we save the kundensystemId when it becomes available:

if ($this->kundensystemId === null && $action->getKundensystemId()) {
    $this->kundensystemId = $action->getKundensystemId();

    file_put_contents(__DIR__ . '/kundensystemId.txt', $this->kundensystemId);
}

In this block (function processActionResponse), we're saving the kundensystemId to a file named kundensystemId.txt whenever it's available. This allows us to persist the ID for future use.

Loading the kundensystemId

Now, to load the saved kundensystemId when the object is constructed (function __construct):

$filePath = __DIR__ . '/kundensystemId.txt';

if (file_exists($filePath)) {
    $content = trim(file_get_contents($filePath));
    if (preg_match('/^[a-f0-9]{29,33}$/i', $content)) {
        $this->kundensystemId = $content;
    } else {
        throw new \InvalidArgumentException("Die Datei enthält keinen gültigen Hash mit einer Länge zwischen 29 und 33 Zeichen: '$content'");
    }
}

It's a bit of a quick and dirty solution, but it worked well for my needs, and hopefully, it can help you too.

@roben
Copy link

roben commented Oct 10, 2024

@Philipp91 Sorry, this was just FYI. I only wanted to explain my earlier issue. If "long time" persist() is not used, the correct place to restore the $kundensystemId is right after calling selectTanMode().

@wienen-it-dev
Copy link
Author

Sie möchten sich "auf einem neuen Gerät anmelden"? Gehen Sie wie folgt vor:

Assuming this happens in the handleStrongAuthentication part of your code, it seems correct to me. A bank asking for a TAN is nothing unusual. There are banks that give you read-only access to bank statements for one day or a month or three months, depending on the bank, after entering a TAN just once. But after that time is over, they'll ask for another TAN. Other banks just always ask for a TAN.

@Philipp91 Thank you very much, yes it happened in handleStrongAuthentication. After implementing TAN input, it works. Before that I only implemented TAN input for tanRequest->getChallengeHhdUc() === true, but there are other cases which are relevant as well.

For the other issue regarding Geräteerkennung I am still working on a solution. Seems recently many banks changed TAN-settings, as another error regarding handleDecoupled occured, which I haven't implemented yet.

@Philipp91
Copy link
Contributor

Philipp91 commented Oct 11, 2024

Auf https://www.f-i.de/fints wird allerdings Rückmeldecode 9391 genannt, welcher in der Fehlermeldung aus dem Eingangposting jedoch nicht enthalten ist.

Das ist ein anderes Problem. Wir sollten ein separates Ticket dafür eröffnen (#458). Im phpFinTS-Code kommt heute 9391 nirgends vor, was dafür spricht, dass wir noch etwas implementieren müssen.

@Philipp91
Copy link
Contributor

Die Gerätebezeichnung ist unbekannt. (MBV07390100255)

Das könnte ein direktes Folgeproblem sein. Wenn die Bank 9391 schickt, wir das aber ignorieren und einfach trotzdem mit der alten Bezeichnung weitermachen, vielleicht lehnt die Bank dann mit diesem Fehler ab.

@wienen-it-dev
Copy link
Author

Wild guess: Let's say "Gerätebezeichnung" refers to the TanMedium. You might call selectTanMedium() yourself or a prior selection might have been persist()-ed. Maybe that old selection isn't valid anymore, hence that error. So you would have to run (your user) through the process again where you call getTanMedia() and pick one of the valid ones.

Another wild guess: Code 9955 has a very particular meaning in the spec: "Ein-Schritt-TANVerfahren nicht zugelassen". Even though that doesn't match the error message that they send you, is it possible that you're somehow sending requests that indicate to the bank that you don't want to do 2-factor authentication, but the bank thinks you should, hence the error? I.e. do you not call selectTanMode() at all or with the second parameter set to null (nor have you called it with a non-null parameter in your persisted instance)?

@Philipp91 Thank you very much for your input. After implementing the workaround for kundensystemId suggested by @juppw, same error still occurs (stack trace at the bottom).

The implemented workflow should be fine, as FinTs login was working for quite a while with different banks (Sparkasse, Volksbank, Raiffeisenbank)? As well as retrieving account statements and performing sepa transfers.

Only recently errors occured. Decoupled authentication was not implemented before, but so far only handleStrongAuthentication() - handleTan() was needed. After decoupled authentication was activated by bank and added to our application, same error occured.

Appreciate any more suggestions.

Might working on #458 help in this case?

9050 (global): Die Nachricht enthält Fehler.
9800 (global): Dialog abgebrochen
9955 (wrt seg 4): Auftrag nicht ausgeführt - Die Gerätebezeichnung ist unbekannt. (MBV07390100255)
FinTS warnings:
3905 (global): Es wurde keine Challenge erzeugt.
3920 (wrt seg 4): Zugelassene Zwei-Schritt-Verfahren für den Benutzer. [923]
Request segments:
HKVVB:4:3+16+0+0+2EDB9B3E601BEA95FC78BF92F+1.0'

#0 vendor/nemiah/php-fints/lib/Fhp/FinTs.php(969): Fhp\Protocol\ServerException::detectAndThrowErrors()
#1 vendor/nemiah/php-fints/lib/Fhp/FinTs.php(311): Fhp\FinTs->sendMessage()
#2 vendor/nemiah/php-fints/lib/Fhp/FinTs.php(267): Fhp\FinTs->execute()

@wienen-it-dev
Copy link
Author

Die Gerätebezeichnung ist unbekannt. (MBV07390100255)

Das könnte ein direktes Folgeproblem sein. Wenn die Bank 9391 schickt, wir das aber ignorieren und einfach trotzdem mit der alten Bezeichnung weitermachen, vielleicht lehnt die Bank dann mit diesem Fehler ab.

@Philipp91 Vielen Dank, für den gesamten Login-Vorgang liegt nun ein Log vor. 9391 ist nicht in der Kommunikation enthalten.

Hilft dies bei der Suche nach der Ursache weiter?

Es scheint so, dass in der vorletzten Nachricht die Zeichenkodierung für "Alle Ger??te" nicht passt. Könnte dies das Problem sein, oder ist dies nur im Logging fehlerhaft?

HNHBK:1:3+000000000145+300+0+1'HKIDN:2:2+280:XXXXXXXX+9999999999+0+0'HKVVB:3:3+0+0+0+PRIVATE__________________+1.0'HKTAN:4:6+4+HKIDN'HNHBS:5:1+1'
< HNHBK:1:3+000000010859+300+746234845455=616326864423DQDC=+1+746234845455=616326864423DQDC=:1'HIRMG:2:2+3060::Bitte beachten Sie die enthaltenen Warnungen/Hinweise.+0100::Dialog beendet.'HIRMS:3:2:3+3050::BPD nicht mehr aktuell, aktuelle Version enthalten.+0020::Informationen fehlerfrei entgegengenommen.'HIBPA:4:3:3+14+280:XXXXXXXX+Sparkasse M+3+1+300'HIKOM:5:4:3+280:XXXXXXXX+1+3:banking-fints-4.de/fints30'HISHV:6:3:3+N+XXX:X'...'HITAN:168:6:4+4++noref+nochallenge'HNHBS:169:1+1'
HNHBK:1:3+000000000113+300+746234845455=616326864423DQDC=+2'HKEND:2:1+746234845455=616326864423DQDC='HNHBS:3:1+2'
< HNHBK:1:3+000000000171+300+746234845455=616326864423DQDC=+2+746234845455=616326864423DQDC=:2'HIRMG:2:2+0010::Nachricht entgegengenommen.+0100::Dialog beendet.'HNHBS:3:1+2'
HNHBK:1:3+000000000391+300+0+1'HNVSK:998:3+XXX:X+XXX+1+1::0+1:20241017:111023+2:2:13:@800000000:5:1+280:XXXXXXXX:PRIVATE____:V:0:0+0'HNVSD:999:1+@227@HNSHK:2:4+XXX:X+999+6033566+1+1+1::0+1+1:20241017:111023+1:999:1+6:10:19+280:XXXXXXXX:PRIVATE____:S:0:0'HKIDN:3:2+280:XXXXXXXX+PRIVATE____+0+1'HKVVB:4:3+14+0+0+PRIVATE__________________+1.0'HKSYN:5:3+0'HNSHA:6:2+6033566++PRIVA''HNHBS:7:1+1'
< HNHBK:1:3+000000000611+300+562036634035=077326861273CQDC=+1+562036634035=077326861273CQDC=:1'HNVSK:998:3+XXX:X+XXX+1+2::0+1:20241017:131023+2:2:13:@800000000:5:1+280:XXXXXXXX:PRIVATE____:V:0:0+0'HNVSD:999:1+@385@HNSHK:2:4+XXX:X+999+6033566+1+1+2::0+1+1:20241017:131023+1:999:1+6:10:19+280:XXXXXXXX:PRIVATE____:S:0:0'HIRMG:3:2+3060::Bitte beachten Sie die enthaltenen Warnungen/Hinweise.'HIRMS:4:2:5+0020::Auftrag ausgeführt.'HIRMS:5:2:4+3920::Zugelassene Zwei-Schritt-Verfahren für den Benutzer.:923+0020::Der Auftrag wurde ausgeführt.'HISYN:6:4:5+52d450be45f64f8c9ad6f1ffa42cc2'HNSHA:7:2+6033566''HNHBS:8:1+1'
HNHBK:1:3+000000000421+300+562036634035=077326861273CQDC=+2'HNVSK:998:3+XXX:X+XXX+1+1::52d450be45f64f8c9ad6f1ffa42cc2+1:20241017:111023+2:2:13:@800000000:5:1+280:XXXXXXXX:PRIVATE____:V:0:0+0'HNVSD:999:1+@199@HNSHK:2:4+XXX:X+999+8069541+1+1+1::52d450be45f64f8c9ad6f1ffa42cc2+1+1:20241017:111023+1:999:1+6:10:19+280:XXXXXXXX:PRIVATE____:S:0:0'HKEND:3:1+562036634035=077326861273CQDC='HNSHA:4:2+8069541++PRIVA''HNHBS:5:1+2'
< HNHBK:1:3+000000000440+300+562036634035=077326861273CQDC=+2+562036634035=077326861273CQDC=:2'HNVSK:998:3+XXX:X+XXX+1+2::52d450be45f64f8c9ad6f1ffa42cc2+1+2:2:13:@800000000:5:1+280:XXXXXXXX:PRIVATE____:V:0:0+0'HNVSD:999:1+@201@HNSHK:2:4+XXX:X+999+8069541+1+1+2::52d450be45f64f8c9ad6f1ffa42cc2+1+1+1:999:1+6:10:19+280:XXXXXXXX:PRIVATE____:S:0:0'HIRMG:3:2+0010::Nachricht entgegengenommen.+0100::Dialog beendet.'HNSHA:4:2+8069541''HNHBS:5:1+2'
HNHBK:1:3+000000000145+300+0+1'HKIDN:2:2+280:XXXXXXXX+9999999999+0+0'HKVVB:3:3+0+0+0+PRIVATE__________________+1.0'HKTAN:4:6+4+HKIDN'HNHBS:5:1+1'
< HNHBK:1:3+000000010859+300+610234890326=700926861273CQDC=+1+610234890326=700926861273CQDC=:1'HIRMG:2:2+3060::Bitte beachten Sie die enthaltenen Warnungen/Hinweise.+0100::Dialog beendet.'HIRMS:3:2:3+3050::BPD nicht mehr aktuell, aktuelle Version enthalten.+0020::Informationen fehlerfrei entgegengenommen.'HIBPA:4:3:3+14+280:XXXXXXXX+Sparkasse M+3+1+300'HIKOM:5:4:3+280:XXXXXXXX+1+3:banking-fints-4.de/fints30'HISHV:6:3:3+N+XXX:X'...'HITAN:168:6:4+4++noref+nochallenge'HNHBS:169:1+1'
HNHBK:1:3+000000000113+300+610234890326=700926861273CQDC=+2'HKEND:2:1+610234890326=700926861273CQDC='HNHBS:3:1+2'
< HNHBK:1:3+000000000171+300+610234890326=700926861273CQDC=+2+610234890326=700926861273CQDC=:2'HIRMG:2:2+0010::Nachricht entgegengenommen.+0100::Dialog beendet.'HNHBS:3:1+2'
HNHBK:1:3+000000000391+300+0+1'HNVSK:998:3+XXX:X+XXX+1+1::0+1:20241017:111029+2:2:13:@800000000:5:1+280:XXXXXXXX:PRIVATE____:V:0:0+0'HNVSD:999:1+@227@HNSHK:2:4+XXX:X+999+1363429+1+1+1::0+1+1:20241017:111029+1:999:1+6:10:19+280:XXXXXXXX:PRIVATE____:S:0:0'HKIDN:3:2+280:XXXXXXXX+PRIVATE____+0+1'HKVVB:4:3+14+0+0+PRIVATE__________________+1.0'HKSYN:5:3+0'HNSHA:6:2+1363429++PRIVA''HNHBS:7:1+1'
< HNHBK:1:3+000000000611+300+334221989080=361926861273CQDC=+1+334221989080=361926861273CQDC=:1'HNVSK:998:3+XXX:X+XXX+1+2::0+1:20241017:131029+2:2:13:@800000000:5:1+280:XXXXXXXX:PRIVATE____:V:0:0+0'HNVSD:999:1+@385@HNSHK:2:4+XXX:X+999+1363429+1+1+2::0+1+1:20241017:131029+1:999:1+6:10:19+280:XXXXXXXX:PRIVATE____:S:0:0'HIRMG:3:2+3060::Bitte beachten Sie die enthaltenen Warnungen/Hinweise.'HIRMS:4:2:5+0020::Auftrag ausgeführt.'HIRMS:5:2:4+3920::Zugelassene Zwei-Schritt-Verfahren für den Benutzer.:923+0020::Der Auftrag wurde ausgeführt.'HISYN:6:4:5+67dfadcc41bd4f8fbdb40a9310fe09'HNSHA:7:2+1363429''HNHBS:8:1+1'
HNHBK:1:3+000000000421+300+334221989080=361926861273CQDC=+2'HNVSK:998:3+XXX:X+XXX+1+1::67dfadcc41bd4f8fbdb40a9310fe09+1:20241017:111029+2:2:13:@800000000:5:1+280:XXXXXXXX:PRIVATE____:V:0:0+0'HNVSD:999:1+@199@HNSHK:2:4+XXX:X+999+2331068+1+1+1::67dfadcc41bd4f8fbdb40a9310fe09+1+1:20241017:111029+1:999:1+6:10:19+280:XXXXXXXX:PRIVATE____:S:0:0'HKEND:3:1+334221989080=361926861273CQDC='HNSHA:4:2+2331068++PRIVA''HNHBS:5:1+2'
< HNHBK:1:3+000000000440+300+334221989080=361926861273CQDC=+2+334221989080=361926861273CQDC=:2'HNVSK:998:3+XXX:X+XXX+1+2::67dfadcc41bd4f8fbdb40a9310fe09+1+2:2:13:@800000000:5:1+280:XXXXXXXX:PRIVATE____:V:0:0+0'HNVSD:999:1+@201@HNSHK:2:4+XXX:X+999+2331068+1+1+2::67dfadcc41bd4f8fbdb40a9310fe09+1+1+1:999:1+6:10:19+280:XXXXXXXX:PRIVATE____:S:0:0'HIRMG:3:2+0010::Nachricht entgegengenommen.+0100::Dialog beendet.'HNSHA:4:2+2331068''HNHBS:5:1+2'
HNHBK:1:3+000000000484+300+0+1'HNVSK:998:3+PIN:2+998+1+1::67dfadcc41bd4f8fbdb40a9310fe09+1:20241017:111029+2:2:13:@800000000:5:1+280:XXXXXXXX:PRIVATE____:V:0:0+0'HNVSD:999:1+@291@HNSHK:2:4+PIN:2+923+4551398+1+1+1::67dfadcc41bd4f8fbdb40a9310fe09+1+1:20241017:111029+1:999:1+6:10:19+280:XXXXXXXX:PRIVATE____:S:0:0'HKIDN:3:2+280:XXXXXXXX+PRIVATE____+67dfadcc41bd4f8fbdb40a9310fe09+1'HKVVB:4:3+14+0+0+PRIVATE__________________+1.0'HKTAN:5:7+4+HKTAB'HNSHA:6:2+4551398++PRIVA''HNHBS:7:1+1'
< HNHBK:1:3+000000000687+300+348694120170=482926861273CQDC=+1+348694120170=482926861273CQDC=:1'HNVSK:998:3+PIN:2+998+1+2::67dfadcc41bd4f8fbdb40a9310fe09+1:20241017:131029+2:2:13:@800000000:5:1+280:XXXXXXXX:PRIVATE____:V:0:0+0'HNVSD:999:1+@432@HNSHK:2:4+PIN:2+923+4551398+1+1+2::67dfadcc41bd4f8fbdb40a9310fe09+1+1:20241017:131029+1:999:1+6:10:19+280:XXXXXXXX:PRIVATE____:S:0:0'HIRMG:3:2+3060::Bitte beachten Sie die enthaltenen Warnungen/Hinweise.'HIRMS:4:2:4+3920::Zugelassene Zwei-Schritt-Verfahren für den Benutzer.:923+0020::Der Auftrag wurde ausgeführt.'HIRMS:5:2:5+3076::Starke Kundenauthentifizierung nicht notwendig.'HITAN:6:7:5+4++noref+nochallenge'HNSHA:7:2+4551398''HNHBS:8:1+1'
HNHBK:1:3+000000000394+300+348694120170=482926861273CQDC=+2'HNVSK:998:3+PIN:2+998+1+1::67dfadcc41bd4f8fbdb40a9310fe09+1:20241017:111029+2:2:13:@800000000:5:1+280:XXXXXXXX:PRIVATE____:V:0:0+0'HNVSD:999:1+@172@HNSHK:2:4+PIN:2+923+3373683+1+1+1::67dfadcc41bd4f8fbdb40a9310fe09+1+1:20241017:111029+1:999:1+6:10:19+280:XXXXXXXX:PRIVATE____:S:0:0'HKTAB:3:4+0+A'HNSHA:4:2+3373683++PRIVA''HNHBS:5:1+2'
< HNHBK:1:3+000000000546+300+348694120170=482926861273CQDC=+2+348694120170=482926861273CQDC=:2'HNVSK:998:3+PIN:2+998+1+2::67dfadcc41bd4f8fbdb40a9310fe09+1:20241017:131029+2:2:13:@800000000:5:1+280:XXXXXXXX:PRIVATE____:V:0:0+0'HNVSD:999:1+@291@HNSHK:2:4+PIN:2+923+3373683+1+1+2::67dfadcc41bd4f8fbdb40a9310fe09+1+1:20241017:131029+1:999:1+6:10:19+280:XXXXXXXX:PRIVATE____:S:0:0'HIRMG:3:2+0010::Nachricht entgegengenommen.'HIRMS:4:2:3+0020::Der Auftrag wurde ausgeführt.'HITAB:5:4:3+0+A:1:::::::::::Alle Geräte::::::::'HNSHA:6:2+3373683''HNHBS:7:1+2'
HNHBK:1:3+000000000421+300+348694120170=482926861273CQDC=+3'HNVSK:998:3+PIN:2+998+1+1::67dfadcc41bd4f8fbdb40a9310fe09+1:20241017:111029+2:2:13:@800000000:5:1+280:XXXXXXXX:PRIVATE____:V:0:0+0'HNVSD:999:1+@199@HNSHK:2:4+PIN:2+923+5325932+1+1+1::67dfadcc41bd4f8fbdb40a9310fe09+1+1:20241017:111029+1:999:1+6:10:19+280:XXXXXXXX:PRIVATE____:S:0:0'HKEND:3:1+348694120170=482926861273CQDC='HNSHA:4:2+5325932++PRIVA''HNHBS:5:1+3'
< HNHBK:1:3+000000000472+300+348694120170=482926861273CQDC=+3+348694120170=482926861273CQDC=:3'HNVSK:998:3+PIN:2+998+1+2::67dfadcc41bd4f8fbdb40a9310fe09+1:20241017:131029+2:2:13:@800000000:5:1+280:XXXXXXXX:PRIVATE____:V:0:0+0'HNVSD:999:1+@217@HNSHK:2:4+PIN:2+923+5325932+1+1+2::67dfadcc41bd4f8fbdb40a9310fe09+1+1:20241017:131029+1:999:1+6:10:19+280:XXXXXXXX:PRIVATE____:S:0:0'HIRMG:3:2+0010::Nachricht entgegengenommen.+0100::Dialog beendet.'HNSHA:4:2+5325932''HNHBS:5:1+3'
HNHBK:1:3+000000000145+300+0+1'HKIDN:2:2+280:XXXXXXXX+9999999999+0+0'HKVVB:3:3+0+0+0+PRIVATE__________________+1.0'HKTAN:4:6+4+HKIDN'HNHBS:5:1+1'
< HNHBK:1:3+000000010859+300+962692354346=369536861273CQDE=+1+962692354346=369536861273CQDE=:1'HIRMG:2:2+3060::Bitte beachten Sie die enthaltenen Warnungen/Hinweise.+0100::Dialog beendet.'HIRMS:3:2:3+3050::BPD nicht mehr aktuell, aktuelle Version enthalten.+0020::Informationen fehlerfrei entgegengenommen.'HIBPA:4:3:3+14+280:XXXXXXXX+Sparkasse M+3+1+300'HIKOM:5:4:3+280:XXXXXXXX+1+3:banking-fints-4.de/fints30'HISHV:6:3:3+N+XXX:X'...'HITAN:168:6:4+4++noref+nochallenge'HNHBS:169:1+1'
HNHBK:1:3+000000000113+300+962692354346=369536861273CQDE=+2'HKEND:2:1+962692354346=369536861273CQDE='HNHBS:3:1+2'
< HNHBK:1:3+000000000171+300+962692354346=369536861273CQDE=+2+962692354346=369536861273CQDE=:2'HIRMG:2:2+0010::Nachricht entgegengenommen.+0100::Dialog beendet.'HNHBS:3:1+2'
HNHBK:1:3+000000000391+300+0+1'HNVSK:998:3+XXX:X+XXX+1+1::0+1:20241017:111036+2:2:13:@800000000:5:1+280:XXXXXXXX:PRIVATE____:V:0:0+0'HNVSD:999:1+@227@HNSHK:2:4+XXX:X+999+8595702+1+1+1::0+1+1:20241017:111036+1:999:1+6:10:19+280:XXXXXXXX:PRIVATE____:S:0:0'HKIDN:3:2+280:XXXXXXXX+PRIVATE____+0+1'HKVVB:4:3+14+0+0+PRIVATE__________________+1.0'HKSYN:5:3+0'HNSHA:6:2+8595702++PRIVA''HNHBS:7:1+1'
< HNHBK:1:3+000000000611+300+973100125056=861636861273CQDE=+1+973100125056=861636861273CQDE=:1'HNVSK:998:3+XXX:X+XXX+1+2::0+1:20241017:131036+2:2:13:@800000000:5:1+280:XXXXXXXX:PRIVATE____:V:0:0+0'HNVSD:999:1+@385@HNSHK:2:4+XXX:X+999+8595702+1+1+2::0+1+1:20241017:131036+1:999:1+6:10:19+280:XXXXXXXX:PRIVATE____:S:0:0'HIRMG:3:2+3060::Bitte beachten Sie die enthaltenen Warnungen/Hinweise.'HIRMS:4:2:5+0020::Auftrag ausgeführt.'HIRMS:5:2:4+3920::Zugelassene Zwei-Schritt-Verfahren für den Benutzer.:923+0020::Der Auftrag wurde ausgeführt.'HISYN:6:4:5+b3d1f3dac9994c648b68245bba0d8a'HNSHA:7:2+8595702''HNHBS:8:1+1'
HNHBK:1:3+000000000421+300+973100125056=861636861273CQDE=+2'HNVSK:998:3+XXX:X+XXX+1+1::b3d1f3dac9994c648b68245bba0d8a+1:20241017:111036+2:2:13:@800000000:5:1+280:XXXXXXXX:PRIVATE____:V:0:0+0'HNVSD:999:1+@199@HNSHK:2:4+XXX:X+999+8389149+1+1+1::b3d1f3dac9994c648b68245bba0d8a+1+1:20241017:111036+1:999:1+6:10:19+280:XXXXXXXX:PRIVATE____:S:0:0'HKEND:3:1+973100125056=861636861273CQDE='HNSHA:4:2+8389149++PRIVA''HNHBS:5:1+2'
< HNHBK:1:3+000000000440+300+973100125056=861636861273CQDE=+2+973100125056=861636861273CQDE=:2'HNVSK:998:3+XXX:X+XXX+1+2::b3d1f3dac9994c648b68245bba0d8a+1+2:2:13:@800000000:5:1+280:XXXXXXXX:PRIVATE____:V:0:0+0'HNVSD:999:1+@201@HNSHK:2:4+XXX:X+999+8389149+1+1+2::b3d1f3dac9994c648b68245bba0d8a+1+1+1:999:1+6:10:19+280:XXXXXXXX:PRIVATE____:S:0:0'HIRMG:3:2+0010::Nachricht entgegengenommen.+0100::Dialog beendet.'HNSHA:4:2+8389149''HNHBS:5:1+2'
HNHBK:1:3+000000000505+300+0+1'HNVSK:998:3+PIN:2+998+1+1::b3d1f3dac9994c648b68245bba0d8a+1:20241017:111036+2:2:13:@800000000:5:1+280:XXXXXXXX:PRIVATE____:V:0:0+0'HNVSD:999:1+@312@HNSHK:2:4+PIN:2+923+4704059+1+1+1::b3d1f3dac9994c648b68245bba0d8a+1+1:20241017:111036+1:999:1+6:10:19+280:XXXXXXXX:PRIVATE____:S:0:0'HKIDN:3:2+280:XXXXXXXX+PRIVATE____+b3d1f3dac9994c648b68245bba0d8a+1'HKVVB:4:3+14+0+0+PRIVATE__________________+1.0'HKTAN:5:7+4+HKIDN+++++++++Alle Ger??te'HNSHA:6:2+4704059++PRIVA''HNHBS:7:1+1'
< HNHBK:1:3+000000000647+300+394164959995=382636861273CQDE=+1+394164959995=382636861273CQDE=:1'HNVSK:998:3+PIN:2+998+1+2::b3d1f3dac9994c648b68245bba0d8a+1+2:2:13:@800000000:5:1+280:XXXXXXXX:PRIVATE____:V:0:0+0'HNVSD:999:1+@408@HNSHK:2:4+PIN:2+923+4704059+1+1+2::b3d1f3dac9994c648b68245bba0d8a+1+1+1:999:1+6:10:19+280:XXXXXXXX:PRIVATE____:S:0:0'HIRMG:3:2+9050::Die Nachricht enthält Fehler.+3905::Es wurde keine Challenge erzeugt.+9800::Dialog abgebrochen'HIRMS:4:2:4+3920::Zugelassene Zwei-Schritt-Verfahren für den Benutzer.:923+9955::Auftrag nicht ausgeführt - Die Gerätebezeichnung ist unbekannt. (MBV07390100255)'HNSHA:5:2+4704059''HNHBS:6:1+1'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants