Hilfe
abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 

NEU: comdirect REST API für Privatkunden

290 ANTWORTEN

Nicholas
Autor ★
9 Beiträge

Hallo Community,

 

trotz mehrfacher Versuche über die letzten Tage, ist es mir nicht möglich den Schritt 2.1 OAuth2 Resource Owner Password Credentials Flow der comdirect REST API Dokumentation durchzuführen.

Anstatt eines JSON-Objekts mit access_token und refresh_token liefert die API eine HTML-Seite mit dem Header Funktionsstörung und dem Text
Bei der von Ihnen gewählten Funktion ist eine Störung aufgetreten. Wir bitten um Entschuldigung. Die Störung wird so schnell wie möglich behoben, sodass Ihnen in Kürze wieder alle Funktionen zur Verfügung stehen.

 

Den API-Call setze ich wie folgt ab:

curl -H "Accept:application/json" -H "Content-Type:application/x-www-form-urlencoded" -v https://api.comdirect.de/oauth/token --data-urlencode "@body.txt"

Der Inhalt des HTTP-Bodies (cat body.txt😞

client_id:"User_nnnnnn-nnnnnnnnnnnnnnnnnnnnnnnnnn"
client_secret:"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
grant_type:password
username:"nnnnnnnn"
password:"xxxxxx"

 

API Endpunkt:

https://api.comdirect.de/oauth/token


Mitgesendeter HTTP-Header:

Accept:application/json
Content-Type:application/x-www-form-urlencoded


HTTP-Error-Code:

403 Forbidden 

 

Liegt hier (seit mehreren Tagen) tatsächlich eine Störung vor oder was ist möglicherweise an dem oben aufgeführten API Call falsch?

Im Voraus besten Dank.

N.

com_phil
Autor ★★
29 Beiträge

Bei mir funktioniert alles super.

com_phil
Autor ★★
29 Beiträge

Ich habe keine Fehler finden können. Packen die Doku pdf und deinem Code mal in ChatGPT und prüfe auf Fehler. Hat bei mir auch ab und an geholfen.

Nicholas
Autor ★
9 Beiträge

@com_phil Herzlichen Dank fürs Überprüfen und den Tipp mit ChatGPT. Gesagt, getan...

 

Nach mehrmaligen durch ChatGPT vorgeschlagenen und durchgeführten Variationen, bestätigt ChatGPT die Richtigkeit der obigen Anfrage.

 

Auf Grund der fehlenden x-http-response-info in der HTTP-Antwort, ist ChatGPT ziemlich "sicher", das eindeutig ein harter Block vom Server vor dem API-Backend die Ursache ist. Soll heißen, mein Request darf nicht mal zur Authentifizierungs-API durch. So zumindest die Schlussfolgerung seitens ChatGPT.

Nachdem ich das Problem bereits vor drei Tagen telefonisch dem Support erörtert habe, hat der mich gebeten, diese Anfrage an Reklamation@comdirect.de sowie info@commdirect.de zu senden. Das habe ich gemacht, aber noch keine Antwort erhalten.

 

Hatte daher auf die Schwarmintelligenz gehofft und deswegen den Post hier abgesetzt.

com_phil
Autor ★★
29 Beiträge

Vielleicht stören die Anführungsstriche und die Doppelpunkte , das sollten im urlencoden = sein? 

Der Body sollte am im Ende im urlencode wie unten aussehen. 

 

POST /oauth/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 148
Host: api.comdirect.de
Accept: application/json
User-Agent: php-comdirect
Connection: close

client_id=User_2xxxxxxxxxccccccc25&client_secret=xxxxxxxxxxxxxxx&grant_type=password&username=xxxxxxxx&password=xxxxxx

 

Nicholas
Autor ★
9 Beiträge

Ich habe auch diese Variationen durch:

 

Mit Anführungszeichen und Doppelpunkt

client_id:"User_nnnnnn-nnnnnnnnnnnnnnnnnnnnnnnnnn"
client_secret:"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
grant_type:password
username:"nnnnnnnn"
password:"xxxxxx"

Ohne Anführungszeichen, aber mit Doppelpunkt

client_id:User_nnnnnn-nnnnnnnnnnnnnnnnnnnnnnnnnn
client_secret:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
grant_type:password
username:nnnnnnnn
password:xxxxxx

Mit Anführungszeichen und Gleichheitszeichen (=) anstatt des Doppelpunkts (:)

client_id="User_nnnnnn-nnnnnnnnnnnnnnnnnnnnnnnnnn"
client_secret="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
grant_type=password
username="nnnnnnnn"
password="xxxxxx"

Ohne Anführungszeichen, aber mit Gleichheitszeichen (=) anstatt des Doppelpunkts (:)

client_id=User_nnnnnn-nnnnnnnnnnnnnnnnnnnnnnnnnn
client_secret=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
grant_type:password
username=nnnnnnnn
password:xxxxxx

@com_phil Dir nochmals herzlichen Dank für Deine Bemühungen! Ich glaube, dass tatsächlich auf Seiten comdirects beim Erzeugen der client_id und des client_secrets (über die WebGUI) etwas schief gelaufen ist. Ohne Investigation was genau an der API-Schnittstelle bei meinen Anfragen quer hängt, wird das Problem nicht zu lösen sein.

com_phil
Autor ★★
29 Beiträge

Ich glaube weniger an ein Comdirect Problem. Da mir die Fehlermeldung bekannt vorkommt und auf einen Fehler in meinem Code zurückzuführen war. 
In deinem vierten Beispiel sind zwei Doppelpunkte. Die Doppelpunkte müssen komplett mit = ersetzt werden. 
es könnten auch noch die Zeilenumbrüche in der Textdatei sein. schreib alles mal in einer Zeile ohne Leerzeichen sowie oben in meinem Text am Besten direkt im urlencode.

Nicholas
Autor ★
9 Beiträge

Ja, holla die Waldfee!!!

 

*trommelwirbel* für den Supporter des Monats: com_phil 😀🙏

 

Für alle, die mit dem gleichen Problem ringen, hier die Lösung:

 

Wie von com_phil empfohlen, müssen die ganzen Parameter als eine einzige Zeile übergeben werden. Diese am besten in einer Datei (in meinem Beispiel body.txt) speichern:

client_id=User_2xxxxxxxxxccccccc25&client_secret=xxxxxxxxxxxxxxx&grant_type=password&username=xxxxxxxx&password=xxxxxx

 

Eine kurze Erklärung für diejenigen, die mit dem HTTP-Protokoll und APIs (noch) nicht so bewandert sind: Das Kaufmanns-Und (&) dient im HTTP-Protokoll als Trennzeichnen, um mehrere Parameter voneinander zu separieren. Weiterhin ist die ganze Zeile eine Kombination aus mehreren Schlüssel-/Wert-Paaren (Key-/Value-Pairs).

 

Dann den HTTPS-Request wie folgt an comdirects API senden:

curl -H "Accept:application/json" -H "Content-Type:application/x-www-form-urlencoded" -A "comdirect-client/1.0" https://api.comdirect.de/oauth/token --data @body.txt

!!!Uffbasse!!! Die Datei body.txt darf nicht mit dem Parameter --data-urlencode übergeben werden (dann erscheint die zuvor beschriebene Fehlermeldung). Es muss --data verwendet werden!

Wenn alles korrekt ist, belohnt die API einen mit folgendem HTTP-Header:

< HTTP/1.1 200 
< Server: nginx
< Date: Sat, 19 Apr 2025 04:38:21 GMT
< Content-Type: application/json;charset=UTF-8
< Connection: keep-alive
< Vary: Accept-Encoding
< Vary: Accept-Encoding
< Set-Cookie: qSession=annnnnnn.xxxxxxxxxxxxxxxxxxxxxxx;domain=.comdirect.de;Secure;SameSite=none;path=/;HttpOnly
< Vary: Origin
< Vary: Access-Control-Request-Method
< Vary: Access-Control-Request-Headers
< Cache-Control: no-store
< x-content-type-options: nosniff
< Referrer-Policy: strict-origin-when-cross-origin
< Strict-Transport-Security: max-age=31536000; includeSubDomains
< X-XSS-Protection: 1; mode=block
< Content-Language: en-US
< Transfer-Encoding: chunked

 

Und im Body ist folgendes JSON-Objekt enthalten:

{
  "access_token": "nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn",
  "token_type": "bearer",
  "refresh_token": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "expires_in": 599,
  "scope": "TWO_FACTOR",
  "kdnr": "nnnnnnnnnn",
  "bpid": xxxxxxx,
  "kontaktId": nnnnnnnnnn
}

Allen viel Erfolg, die bisher am Erstellen der Tokens gescheitert sind.

Laue
Autor ★
3 Beiträge

Hi Alle,

 

auf der API Seite verlinkt comdirect zur Commerzbank.

Bietet comdirct die gleichen Schnittstellen? 

 

Oder Kurz: Gibt es bei der comdirect eine "Notification" Funktion/API, welche bei jeder Transaktion eine URL (Push) aufrufen kann?

 

Danke!

FSQuant
Experte ★
162 Beiträge

@Laue:

 

Aus meinem Umfeld weiß ich, dass es für Corporate Kunden eine umfangreiche Sammlung an API gibt, die u.a. Webhooks ermöglicht. Soweit ich das der API Doku entnehmen kann, gibts für das Retail-Konto hier keinen Webhok o.ä. Wobei ich fairerweise sagen muss, dass ich nur den Depot/Brokerage-Teil der API nutze.

 

Grüße