Recently I’ve been working with
Magento at work, and in particular with integrating with their API. Now, before I say anything more, I must say that I am always pleased when I see that these products do include some kind of API. The Magento one is a bit interesting, although there is some
half-decent API documentation for the original API.
However they have then released a new version of the API, with very little documentation. So here are two calls – one to the v1 API and one to the v2 – which I hope will help illustrate the differences. The example I’ll give is the customer list functionality, including filtering the result set – because this was a total mystery when I started working with the v2 API!
$options = array(
"location" => 'http://magentoinstall.local/index.php/api/index/index/',
"uri" => 'http://magentoinstall.local/api/'
);
$client = new SoapClient(NULL, $options);
$session = $client->login('user', 'pass');
$list = $client->call($session, 'customer.list', array(array("customer_id" => "42")));
To make the same call with API version 2, we need to address the method in a different way, using the structure in the underlying code as the method name that we call, and CamelCasing those, like this:
$client = new SoapClient('http:/magentoinstall.local/api/v2_soap?wsdl=1');
$session = $client->login('user', 'pass');
$filter = new StdClass();
$filter->filter = array(array("key" => "customer_id", "value" => "42"));
$list = $client->customerCustomerList($session, $filter);
I haven’t used either of the APIs a lot but once I was able to call the same method via both available services, I wanted to share the approach here in the hope that this would help someone else trying to solve the same problem. It is certainly not obvious from the documentation how to interact with the v2 API and I had some real puzzles getting the filtering working. These snippets are from my working code so I hope they are helpful to someone!