Home •  Blog •  Projekte •  Kosmos •  Kontakt

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.


13 Kommentare zu “Magento und die API”

thE_iNviNciblE
thE_iNviNciblE

Hallo,

danke für das schöne Beispiel!

Funktioniert das auch mit der neusten Alpha von Magento?

gruss
Jan

jens
jens

Hallo Jan,

laut meinem SVN habe ich die neueste Version ;)

Gruß
jens

ptjedi
ptjedi

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.

jens
jens

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.

chris
chris

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 ?

jens
jens

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.

jens
jens

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.

Jan Bludau
Jan Bludau

Hallo,

danke für das Beispiel.

Geht das auch noch bei den neuen 1.1.5 Versionen so?

Gruss
Jan Bludau

jens
jens

Hallo Jan,

ich hab es gerade auf einem SVN-Head (1.1.6) probiert und da hat es funktioniert.

Gruß
jens

Magento-News
Magento-News

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 :-)

jens
jens

Würde mich über einen Kommentar dazu freuen. Viel Spaß.

Jan
Jan

==> Error: Error Fetching http headers

wenn ich es mit dem browser starte

jens
jens

Hallo Jan,

der Fehler deutet darauf hin das der SOAP-Service nicht läuft bzw. ansprechbar ist.
Ist der API-User (s.o.) angelegt?

Gruß
jens