Shopware 6 API PHP Client

Hallo alle zusammen,

der Shopware 5 Rest API PHP Client, welcher hier veröffentlicht wird:

https://developers.shopware.com/developers-guide/rest-api/

… funktioniert anscheinend nicht für Shopware 6 ;-(

Gibt es schon einen passenden PHP-Codeschnipsel, mit dem man die Shopware 6 API abfragen kann? Wenn ja, wo ist er zu finden?

Viele Grüße
canetti

 

Hallo @canetti2‍,

schau mal hier nach: https://docs.shopware.com/en/shopware-platform-dev-en/api

Hier kannst du dann die Anpassungen in der SW5 Verison vornehmen.

VG

ener Space  Webhosting
Tel.: +49 511 - 999 791 70 | Web: https://www.enerspace.de

Du kannst dir anhand der Swagger Datei ein API Client generieren

1 Like

Hallo,

zunächst vielen Dank für Eure schnellen Antworten. Leider helfen die mir aber nicht wirklich weiter:

Der von enerSpace genannte Link ist mir bekannt. Nur leider kann ich da keinen PHP-Codeschnipsel finden, mit dem ich mal schnell / unkompliziert eine Verbindung zur API herstellen kann.

Den Hinweis mit der Swagger Datei kann ich leider auch nicht recht deuten.

Konkret: Ich habe einen Shopware Playground Account mit entsprechender API-Zugangs-ID. Gibt es schon irgendwo eine Beschreibung „für Dummies“ oder eben einen fertigen PHP-Codeschnipsel (Siehe Shopware 5 Rest-Api), mit dem ich eine Verbindung zur API herstellen kann?

Viele Grüße

canetti

Einen fertigen Client speziell gibt es nicht, allerdings kannst du Clients wie Guzzle nutzen. In der Dokumentation findest du dann die einzelnen Routen, sowie möglichen Methoden:

http://docs.guzzlephp.org/en/stable/

https://docs.shopware.com/en/shopware-platform-dev-en/api?_ga=2.66429742.1866278837.1560790357-1224740672.1560790357 

Wenn es wirklich nur zum Testen der API geht, kannst du auch Tools wie Postman nutzen - die sind relativ einfach und können via GUI bedient werden.

LG Andre

Und Playground != Shopware 6!

Playground hat aktuell etwa den Stand von Januar/Februar. Da wird es noch einige Zeit dauern, bis das aktualisiert wird - einfach weil wir aktuell den Fokus auf den Early Access von SW6 haben. Wenn du also wirklich SW6 testen willst, solltest du entweder bei den Hosting-Anbietern ein Testpaket nutzen, bspw. hat Shyim auch eine kostenlose Demo: https://sw6.shyim.de/

keine Ahnung, ob das allerdings aktuell ist - oder das lokal aufsetzen.

Da ist dann auch die Swagger-Integration dabei - quasi eine HTML-Seite die dir die einzelnen API-Calls ausgibt. Mit der passenden JSON-Datei davon, kann man dann auch eine API generieren:

https://swagger.io/tools/swagger-codegen/

(glaube @Shyim‍ meinte das)

1 Like

Moin zusammen,

nur der Vollständigkeit halber:
Es gibt einen Beispiel Client für Shopware 6. :slight_smile:

https://docs.shopware.com/en/shopware-platform-dev-en/how-to/working-with-the-api-and-an-http-client

VIelleicht hilft dir das ein wenig weiter.

Lieben Gruß,
Patrick  Shopware

2 Likes

@Moritz Naczenski schrieb:

bspw. hat Shyim auch eine kostenlose Demo: https://sw6.shyim.de/

Wir bieten ebenso eine kostenlose Demo an, die von uns jede Woche aktualisiert wird. Da kannst du auch nach herzenslust testen: https://shopware6demo.enerspace.de/

@Shyim‍ danke für den Tipp bezüglich Swagger! Das schaue ich mir einmal genauer an.

@canetti2‍ schau mal auf der folgenden Seite nach, da findest du die Swaggerdateien: Shopware Management API und Shopware Sales-Channel API

VG

ener Space  Webhosting
Tel.: +49 511 - 999 791 70 | Web: https://www.enerspace.de

Hallo,

erstmal vielen Dank für Eure zahlreichen Posts. Vielleicht habe ich mich mit meiner Frage ja auch ein wenig blöd angestellt. Beim Googlen habe ich diese Seite gefunden:

https://7synth.com/dokumentation/shopware-playground-storefront

Dort wird folgender PHP Code gepostet:

  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, "https://MEIN INSTANZ.pg.shopware.com/storefront-api/v1/product");
  curl_setopt($ch, CURLOPT_HTTPHEADER, ["x-sw-access-key:MEINE API ZUGANGS-ID"]);
  $myApiData = curl_exec($ch);
  curl_close($ch);
  var_dump(json_decode($myApiData, true));

Jedoch funktioniert der Code leider nicht - eine Zeile darunter wird auch (kommentarlos) die Fehlermeldung veröffentlicht.

 

Ich erhalte den folgenden Error:

{“errors”:[{“code”:“9”,“status”:“401”,“title”:“The resource owner or authorization server denied the request.”,“detail”:“Missing \u0022Authorization\u0022 header”}]}int(1)

Daner nochmals meine Frage: Mit einem simplen CURL Code (siehe oben) kann man noch nicht mal die SalesChannel-API abfragen, für die ja keine oauth2 Authentifizierung notwendig ist?

Viele Grüße

canetti

 

 

 

Klar kann man das - du testest nur einen alten Stand.

Die API heißt mitlerweile auch „sales-channel-api“ und der Authorisation Header „sw-access-key“. Du solltest einfach eine passende Installation nehmen und die offizielle Dokumentation nutzen. 

 

Funktioniert im aktuellen Master einwandfrei. Access-Key aus dem Headless-Sales-Channel und halt meien Testdomain.

Hallo Moritz,

ich erhalte bei deinem Code als Rückgabewert NULL.

Ich habe mir einen friendsofshopware.de Testaccount angelegt.

URL: https://sw6-5d0882772c871.friendsofshopware.de
User: admin
PWD: shopware

Zum Abfragen der Kategorien sollte dieser Code dann i.o. sein:
 

  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, 'https://sw6-5d0882772c871.friendsofshopware.de/api/v1/category');
  curl_setopt($ch, CURLOPT_HTTPHEADER, ['sw-access-key:SWSCA2LKRJV1S2QXU1Y4D0VUAW']);
  $myApiData = curl_exec($ch);
  curl_close($ch);
  var_dump(json_decode($myApiData, true));

 

Ist er aber leider nicht, da ich als Rückgabewert ein Missing Authorization header erhalte. Woran liegt es?

 

 

 

Der sw-access-key gilt nur für die sales-channel-apis. 

Schau nochmal deinen Code an. Du sprichst die API nicht richtig an. /api ist falsch.

So funktioniert es einwandfrei:

 

[@Moritz Naczenski](http://forum.shopware.com/profile/14574/Moritz Naczenski “Moritz Naczenski”)‍ DANKE !!!

Jau das war es - so ein blöder Fehler. Jetzt erhalte ich endlich die gewünschte Ausgabe - super!!!

Mühsam ernährt sich das eichhörnchen :wink:

Jetzt kommen natürlich gleich die nächsten Fragen:
Wenn ich ein Produkt abfrage, erhalte ich als Rückgabewert nur der ERSTE Prodkutbild [URL]. Weitere Produktbilder werden mit der API zum jetzigen Zeitpunkt zumindest noch nicht übergeben. Ich gehe davon aus, dass das noch kommt, oder?

Auf die gleiche / ähnliche Art und Weise kann man dann doch bestimmt auch Produktdaten editieren / ändern, oder? Davon steht bislang leider noch nichts in der SalesChannel-API Doku. Ich hoffe, die Doku wird diesbezüglich zeitnah erweitert, oder?

Viele Grüße

canetti

 

Hallo canetti,

Schau dir noch mal genau die Doku an  Smile https://docs.shopware.com/en/shopware-platform-dev-en/api
Grundsätzlich kann man erstmal zwei APIs unterscheiden: Management API zum pflegen von Entitäten, z.B. Produktdaten ändern und die SalesChannel API, die E-Commecre Prozesse abbildet, z.B. Kunden anlegen, etwas in den Warenkorb legen, Bestellung abschließen, etc

Wenn du also ein Produkt über die SalesChannel API abfragst, bekommst du das so wieder gegeben, wie es in diesem SalesChannel ausgespielt werden soll. 
Änderungen kann man nur über die Management API machen, für die du wiederum andere Zugangsdaten brauchst. 

Viele Grüße aus Schöppingen

cool Michael Telgmann

[@Michael Telgmann](http://forum.shopware.com/profile/17553/Michael Telgmann „Michael Telgmann“)‍ Danke für den Hinweis.

Das war mir so auch nicht bekannt - wäre ja auch zu einfach, wenn man lediglich mit einer API alles erledigen könnte :wink: Aber sei es drum…

Das erklärt aber noch nicht, warum mir die SalesChannel API nur ein Produktbild wieder gibt, wenn im Frontend aber alle Bilder angezeigt werden. Und wenn ich mit der SalesChannel API Kunden anlegen, Bestellungen abschließen ect. kann, ist das auch ein „schreibender Vorgang“.

Generell:
1)
Kann man Produktdaten mit BEIDEN Apis abfragen bzw. ändern? Wenn ja, wo ist die entsprechende Beschreibung in der Management API Doku?

Du hast geschrieben, dass man für die Management API andere Zugangsdaten benötigt. Im Shopware Backend finde ich lediglich die API-Zugangs-ID…? Und kann man die Management API auch über CURL abfragen? Wenn ja, wie müsste man den obigen Code ändern / erweitern?

Viele Grüße

canetti

Wie du mit der Management API Sprichst ist hier beschrieben: https://docs.shopware.com/en/shopware-platform-dev-en/api/management-authentication

Die Storefront-API ist für typische Prozesse in der Storefront - da gehört das verändern von Produkten nicht dazu. Du kannst eben eine Storefront abbilden und Bestellungen auslösen. Bspw. für Anbindungen einer App, einer Wordpress-Integration usw. Daher ist das auch ein komplett anderer Authorisierungsprozess. 

Die Management API ist eher für PIM-Systeme und ERP-Systeme. Da lassen sich dann alle Bereiche des Shops drüber steuern. Also alles das was du auch im Admin kannst. Da musst du dein CURL Beispiel erweitern und erstmal einen Key anfragen. Kannst dich ja an dem Beispeil aus Patricks Post orientieren und das per CURL umsetzen, da sollten sich alle Informationen adaptieren lassen.

 

Hallo canetti,

es geht hierbei nicht um die Trennung von schreibende und lesende Vorgänge. Eher um die Trennung von zwei komplett verschiedenen Aufaben  Wink

Entitäten kannst du nur über die Management API ändern. Hast du dir die Doku und die Unterpunkte angeschaut, die ich vorhin geschickt habe? Da wird genau erklärt, wie du darauf zugreifen kannst: https://docs.shopware.com/en/shopware-platform-dev-en/api/management-authentication?category=shopware-platform-dev-en/api

Viele Grüße aus Schöppingen

cool Michael Telgmann

Ich habe nochmals zwei Fragen:

  1. Swagger

Bei Aufruf dieser Seite erhalte ich keine Ausgabe: https://sw6-5d0882772c871.friendsofshopware.de/api/v1/_info/swagger.html

Ist der entsprechende PHP-Code aus Sicherheitsgründen auskommentiert? Da ich keinen Zugang zum friendsofshopware.de Server habe, kann ich das leider nicht selber prüfen.

 

  1. Curl

Wenn ich Euch richtig verstanden habe, kann man grundsätzlich auch die Management API über CURL ansprechen. Nur muss dann der von mir gepostete Code für die Sales API erweitert bzw. modifiziert werden. Hier noch mal der Code:

Vielleicht gibt es hier ja einen Experten, der das schon gemacht hat, bzw. der den entsprechenden Code parat hat. Wenn das so ist, wäre ich dankbar, wenn der Code hier mal gepostet werden würde. Ich bin mir sicher, dass wäre auch im Interesse vieler anderer Nutzer, die sich mit der Thematik früher oder später auseinander setzen.

Viele Grüße

canetti

 

 

Scheint irgendwie kaputt zu sein. Geh mal auf https://petstore.swagger.io/ und gib oben bei der URL https://sw6-5d0882772c871.friendsofshopware.de/api/v1/_info/openapi3.json?format=json an und drück explore