First thing you need is PHP client for Fulfillment Inventory API, you can download at https://developer.amazonservices.ca/doc/fba/inventory/v20101001/php.html – yes, version is 4 years old, they don’t have any newer… Unpack zip at you library folder and you should see such files:
Next step is preparing config, all you need is below:
define('AWS_ACCESS_KEY_ID', '........'); define('AWS_SECRET_ACCESS_KEY', '........'); define('APPLICATION_NAME', '......'); define('APPLICATION_VERSION', '1'); define('MERCHANT_ID', '......'); define('MARKETPLACE_ID', '......');
Just fill in proper values. Then setup autoloader for your client (if you have it already done for other libraries, just skip this step):
set_include_path(get_include_path() . PATH_SEPARATOR . '../../'); // this should point at your library folder wherever it is spl_autoload_register(function ($className) { $filePath = str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php'; $includePaths = explode(PATH_SEPARATOR, get_include_path()); foreach ($includePaths as $includePath) { if (file_exists($includePath . DIRECTORY_SEPARATOR . $filePath)) { require_once $filePath; return; } } });
Then invoke client itself:
$serviceUrl = "https://mws-eu.amazonservices.com/FulfillmentInventory/2010-10-01"; $configData = array( 'ServiceURL' => $serviceUrl, 'ProxyHost' => null, 'ProxyPort' => -1, 'MaxErrorRetry' => 3, ); $service = new FBAInventoryServiceMWS_Client( AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, $configData, APPLICATION_NAME, APPLICATION_VERSION);
Variable $serviceUrl depends on your region:
North America – https://mws.amazonservices.com/FulfillmentInventory/2010-10-01
Europe – https://mws-eu.amazonservices.com/FulfillmentInventory/2010-10-01
Japan – https://mws.amazonservices.jp/FulfillmentInventory/2010-10-01
China – https://mws.amazonservices.com.cn/FulfillmentInventory/2010-10-01
Next step is preparing request itself, you need to use product SKU:
$request = new FBAInventoryServiceMWS_Model_ListInventorySupplyRequest(); $request->setSellerId(MERCHANT_ID); $skus = new FBAInventoryServiceMWS_Model_SellerSkuList(); $skus->setmember(array('SKU1', 'SKU2', 'SKU3')); $request->setSellerSkus($skus);
And the final step is calling webservice:
try { $response = $service->ListInventorySupply($request); } catch (FBAInventoryServiceMWS_Exception $ex) { $code = $ex->getStatusCode(); $simplexml = new SimpleXMLElement($ex->getXML()); $message = (string) $simplexml->Error->Message; }
The strange thing is that even with proper response (without any errors, Amazon throws exception, maybe there is some config entry for this, have no idea. Anyway in $code variable you should have HTTP reponse code, if this is 200 then everything went ok, returned XML should look like:
<ListInventorySupplyResponse xmlns="http://mws.amazonaws.com/FulfillmentInventory/2010-10-01/"> <ListInventorySupplyResult> <InventorySupplyList> <member> <SellerSKU>SKU1</SellerSKU> <TotalSupplyQuantity>0</TotalSupplyQuantity> <InStockSupplyQuantity>0</InStockSupplyQuantity> </member> <member> <SellerSKU>SKU2</SellerSKU> <ASIN>XXXXXX</ASIN> <TotalSupplyQuantity>73</TotalSupplyQuantity> <FNSKU>YYYYYY</FNSKU> <Condition>NewItem</Condition> <InStockSupplyQuantity>73</InStockSupplyQuantity> <SupplyDetail/> <EarliestAvailability> <TimepointType>Immediately</TimepointType> </EarliestAvailability> </member> </InventorySupplyList> </ListInventorySupplyResult> <ResponseMetadata> <RequestId>b9fb5095-d94d-4bb0-bbd7-70881d486bbb</RequestId> </ResponseMetadata> </ListInventorySupplyResponse>
Now all you need is to update your DB with proper values.