AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi REST-Zugriff auf Magento 2 (OAuth)
Thema durchsuchen
Ansicht
Themen-Optionen

REST-Zugriff auf Magento 2 (OAuth)

Ein Thema von STEP · begonnen am 7. Jun 2017 · letzter Beitrag vom 30. Jan 2018
 
STEP

Registriert seit: 28. Feb 2013
2 Beiträge
 
#1

REST-Zugriff auf Magento 2 (OAuth)

  Alt 7. Jun 2017, 08:16
Hallo zusammen,

ich versuche nun schon seit einiger Zeit mit Delphi XE6 eine Schnittstelle für Magento 2.1 zu entwickeln.
In Versionen bis Magento 1.9 wurde dies per SOAP realisiert, mit der Umstellung der API seit Magento 2 erscheint mir dies allerdings nicht mehr die beste Lösung zu sein.

Nun zu meinem Problem.
Ich habe in Magento eine Integration erstellt, mit allen Rechten versehen und aktiviert.
Hier erhalte ich: Konsumentenschlüssel, Konsumentengeheimnis, Zugriffstoken und Zugriffstoken-Geheimnis.

Nun habe ich einen RESTClient, RESTRequest, RESTResponse und einen OAuth1Authenticator. Dem Authenticator weise ich die zwei Tokens und Secrets zu.
Außerdem passe ich im Client die Properties für Accept, AcceptCharset und AcceptEncoding an.

Sofern ich nun ein GET-Request auf http://192.168.200.108/index.php/rest/V1/orders/1 mache funktioniert dies auch wunderbar. Ich erhalte meine erste Bestellung, die im Shop getättigt wurde.
Die IP 192.168.200.108 ist in unserem lokalen Netzwerk eine Standardinstallation von Magento in einer VM.

Will ich mir allerdings eine gefilterte Auftragsmenge per http://192.168.200.108/index.php/res...ition_type]=gt ausgeben lassen, erhalte ich immer wieder "ungültige Signatur" als Rückgabe.

Mit der REST-Client-Erweiterung für den Firefox erhalte ich allerdings meine gefilterte Auftragsmenge.

Verschlüsselungsalgorhitmus im Authenticator ist HMAC_SHA1. Ich habe auch bereits per Wireshark die beiden Requests (FF-Restclient und Delphi) verglichen. Diese sehen recht identisch aus.
Delphi URL-codiert die Klammern, was die REST-Client-Erweiterung nicht macht. Wenn ich dem RESTClient in Delphi allerdings sage, dass die URL bereits codiert ist, erhalte ich als Rückgabe ein HTML mit 400 Bad Request.

Ich habe nun momentan echt keine Ahnung mehr, wo ich noch ansetzen könnte. Hat von Euch vielleicht jemand noch eine Idee?

Code:
  OAuth1Authenticator1.ConsumerKey := sCONSUMER_KEY;
  OAuth1Authenticator1.ConsumerSecrect := sCONSUMER_SECRET;
  OAuth1Authenticator1.AccessToken := sACCESS_TOKEN;
  OAuth1Authenticator1.AccessTokenSecret := sACCESS_TOKEN_SECRET;

  RestClient2.AcceptEncoding := 'gzip, deflate';
  RESTRequest2.AcceptEncoding := 'gzip, deflate';

  RestClient2.Accept := '*/*';
  RESTRequest2.Accept := '*/*';

  RESTClient2.AcceptCharset := 'UTF-8';
  RESTRequest2.AcceptCharset := 'UTF-8';

  RESTClient2.BaseURL := 'http://192.168.200.108/';
  RESTRequest2.Params.Clear;
 
  RESTRequest2.Resource := 'index.php/rest/V1/orders?searchCriteria[filter_groups][0][filters][0][field]=created_at&searchCriteria[filter_groups][0][filters][0][value]=2016-07-01 00:00:00&searchCriteria[filter_groups][0][filters][0][condition_type]=gt';
 
  RESTRequest2.Method := rmGET;
 
  RESTRequest2.Params.Clear;
  RESTRequest2.Params.AddItem;
  RESTRequest2.Params[0].name := 'private_content_version';
  RESTRequest2.Params[0].Value := 'c6f9e0919d7028c78ee63e79593ef689';
  RESTRequest2.Params[0].ContentType := ctTEXT_PLAIN;
  RESTRequest2.Params[0].Kind := pkCOOKIE;
  RESTRequest2.Params[0].Options := RESTRequest2.Params[0].Options + [poDoNotEncode];

  RESTRequest2.Params.AddItem;
  RESTRequest2.Params[1].name := 'mage-messages';
  RESTRequest2.Params[1].Value := '%5B%5D';
  RESTRequest2.Params[1].ContentType := ctTEXT_PLAIN;
  RESTRequest2.Params[1].Kind := pkCOOKIE;
  RESTRequest2.Params[1].Options := RESTRequest2.Params[1].Options + [poDoNotEncode];

  RESTRequest2.Params.AddItem;
  RESTRequest2.Params[2].name := 'Accept-Language';
  RESTRequest2.Params[2].Value := 'null';
  RESTRequest2.Params[2].ContentType := ctTEXT_PLAIN;
  RESTRequest2.Params[2].Kind := pkHTTPHEADER;
  RESTRequest2.Params[2].Options := RESTRequest2.Params[2].Options + [poDoNotEncode];

  RESTRequest2.Params.AddItem;
  RESTRequest2.Params[3].name := 'DNT';
  RESTRequest2.Params[3].Value := '1';
  RESTRequest2.Params[3].ContentType := ctTEXT_PLAIN;
  RESTRequest2.Params[3].Kind := pkHTTPHEADER;
  RESTRequest2.Params[3].Options := RESTRequest2.Params[3].Options + [poDoNotEncode];

  RESTRequest2.Params.AddItem;
  RESTRequest2.Params[4].name := 'Connection';
  RESTRequest2.Params[4].Value := 'keep-alive';
  RESTRequest2.Params[4].ContentType := ctTEXT_PLAIN;
  RESTRequest2.Params[4].Kind := pkHTTPHEADER;
  RESTRequest2.Params[4].Options := RESTRequest2.Params[4].Options + [poDoNotEncode];

  RESTRequest2.Execute;
  Memo1.Lines.Add(RESTResponse2.Content);
  Mit Zitat antworten Zitat
 

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz