Magento und die API
In der Alpha-Version von Magento, die man sich per SVN herunterladen kann, sind nun auch die neuen API-Funktionalitäten mit drin. Nachdem mein erster Versuch gescheitert ist, war es nach dem Update nun möglich per PHP den Root-Kategorie-Baum auszulesen. Wie das geht?
Anlegen einer Rolle für die API-User
Das geht im Admin-Bereich unter “Web Services” und dann “Roles”. Dann “Add new role”, Namen vergeben und bei “Role Resources” entweder Zugriff auf alle Resources erlauben oder welche zusammenstellen.
Anlegen eines API-Users
Dann unter “Users” und einem Klick auf “Add new user” die relevanten Daten eingeben und bei “User Role” die entsprechende Rolle zuweisen.
Ausführen des PHP-Scripts
Folgendes kleines Test-Script als mangetosoap.php abspeichern:
< ?php /** * Pixeldreamz * http://www.pixeldreamz.com */ $host= 'magento.localhost'; $client= new SoapClient('http://'.$host.'/index.php/api/soap/?wsdl'); // Can be added in Magento-Admin -> Web Services $apiuser= ''; $apikey = ''; try { $sess_id= $client->login($apiuser, $apikey); $result= $client->call($sess_id, "catalog_category.tree", array()); } catch (Exception $e) { echo "==> Error: ".$e->getMessage(); exit(); } foreach ($result['children'] as $child) { echo "--> ".$child['name']." (id:".$child['category_id'].")\n"; } ?>
Bei $host ist der Hostname einzutragen unter welchem die Magentoinstallation erreichbar ist, $apiuser und $apikey bekommen die entsprechenden Daten vom Angelegten Benutzer.
Jetzt unter Windows die Kommandozeile öffnen (Start -> Ausführen -> “cmd”) und dann dort in das Verzeichniss wechseln wo die Datei gespeichert wurde. Nach einem Eingeben von:
php magentosoap.php
sollte eine ähnliche Ausgabe wie:
--> Default Category (id:2) --> New Category (id:3)
erscheinen.
Mit dieser API wird in Zukunft einiges möglich sein, ohne Manipulationen über die Datenbank vornehmen zu müssen, und einige spannende Entwicklungen kommen.
11 Kommentare zu “Magento und die API”
08.07.2008 um 20:07 Uhr
Hallo,
danke für das schöne Beispiel!
Funktioniert das auch mit der neusten Alpha von Magento?
gruss
Jan
23.07.2008 um 16:11 Uhr
Hello, thank you for the tutorial. It really helped me out. However, I am having this error:
==> Error: Invalid api path.
How do I make sure I have SOAP installed and running? Sorry for the trouble.
29.07.2008 um 08:29 Uhr
Hi ptjedi,
i cannot reproduce this right now, i am working with the head-checkout from the svn but i get another error.
When i got news i will post here.
14.08.2008 um 15:23 Uhr
Beim API-Aufruf gemäß der Anleitung oben bekomme ich auf einem Server immer:
Warning: include(SoapServer.php) [function.include]: failed to open stream: No such file or directory in /var/www/vhosts/127.0.0.1/httpdocs/magento/magento/app/code/core/Mage/Core/functions.php on line 67
Auf einem anderen Server klappt es problemlos. Leider kann ich den Fehler nicht finden. Hat jemand einen Tip für mich ?
14.08.2008 um 17:16 Uhr
Hallo Chris,
für das Beispiel muß in deinem PHP Soap enabled sein, d.h. unter Linux beim Kompilieren ist das der Parameter “–enable-soap” oder bei Windows in der php.ini “add extension=php_soap.dll”. Wenn du auf der Kommandozeile “php -m” aufrufst, muß bei dir muß da “soap” mit drinstehen.
Hoffe das hilft.
05.09.2008 um 22:30 Uhr
There was a problem with the syntax-highlight of the example (wordpress is converting some characters), so there was a error: “Invalid api path” like ptjedi reported. I found the bug when i copied the example today and tried it. Sorry for that.
17.09.2008 um 14:27 Uhr
Hallo,
danke für das Beispiel.
Geht das auch noch bei den neuen 1.1.5 Versionen so?
Gruss
Jan Bludau
19.09.2008 um 11:59 Uhr
Hallo Jan,
ich hab es gerade auf einem SVN-Head (1.1.6) probiert und da hat es funktioniert.
Gruß
jens
19.10.2008 um 23:01 Uhr
Vielen Dank für das Beispiel und die Infos. Werde das gleich mal mit der aktuellen Version 1.1.6 testen. Ich hoffe doch, dass es bei mir auch so problemlos funktioniert, wie bei Jens ![]()