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.

