am 30.10.2020 12:48
Hallo,
ich implementiere derzeit die REST-API in mein System, um automatisiert prüfen zu könne, ob bestimmte Rechnungen bezahlt wurden. Super, dass sich das mit der REST-API umsetzen lässt.
Der Autnehtifizierungsprozess mit den fünf Schritten (2.1 bis 2.5) funktioniert auch soweit und ich kann die Umsätze abrufen. Problematisch ist bisher lediglich, dass ich die Aktivierung der Session-TAN (Schritt 2.3) manuell aufrufen muss, nachdem ich die Freigabe in der comdirect App getätigt habe (ich nutze P_TAN).
Wenn ich den Schritt 2.3 ausführe, bevor ich die Freigabe in der App getätigt habe, bekomme ich eine Fehlermeldung (ist soweit ja auch richtig). Wenn den Schritt aber anschließend wiederhole, nachdem ich die Freigabe erteilt habe, dann fuktioniert es nicht mehr. Mache ich hier etwas falsch bzw. wie sollte man hier verfahren. Woher soll mein System wissen, wann die Freigabe erfolgt ist (gibt es hier die Möglichkeit einen Websoccet einzurichten?) Oder muss das Manuel durch den User eingegeben werden?
Ich hatte einfach gedacht, Schritt 2.3 in Abstand von x Sekunden durchzuführen, biss die Freigabe erfolgt.
Danke vorab für die Antwort.
Beste Grüße
Christof
Gelöst! Gzum hilfreichen Beitrag.
08.11.2022 19:52 - bearbeitet 08.11.2022 19:54
08.11.2022 19:52 - bearbeitet 08.11.2022 19:54
Hallo,
es funktioniert wunderbar wie von jsattler als Antwort auf meinen Beitrag beschrieben.
Ich habe einfach eine Schleife geschrieben, die jede Sekunde eine Anfrage senden und den Status abruft. Wenn der Status von "PENDING" auf "AUTHENTICATED" wechselt wird die Schleife verlassen und Schritt 2.4 wird durchgeführt.
In PHP (Laravel) sieht es bei mir dann so aus.
// Waiting for TAN input on device
for ($i = 1; $i < 180; $i++) {
$response23loop = Http::withHeaders(['x-http-request-info' => '{"clientRequestId":{"sessionId":"' . $this->session_id . '","requestId":"023121212"}}'])
->withToken($this->access_token)->acceptJson()->get('https://api.comdirect.de' . $this->url)->json($key = null);
if ($response23loop['status'] == 'AUTHENTICATED') {
return true;
};
sleep(1);
}
$this->url ist die url die man von der API in Schritt 2.3 als Antwort erhält.
Vielleicht hilft es ja. Nach 180 Zyclen (etwas mehr als drei Minuten) wird die Schlefe mit einer Fehlermeldung verlassen.
Dokumentation der API wurde leider nicht angepasst und ist leider sehr Lückenhaft.
Beste Grüße
Christof
am 08.11.2022 20:28
Super, danke!
Damit hat sich das Problem für mich gelöst.
Das sollte das Comdirect-team bald in die Doku aufnehmen, da es ein ziemlich wichtiger Punkt ist, wie ich finde.