我正在尝试获取sku产品的可用库存。我搜索了很多,发现一些pdf不是他们为我工作。我不知道该怎么做,任何人都可以帮助我,我会更感恩。 我也试过这段代码,
$skus = new FBAInventoryServiceMWS_Model_SellerSkuList();
$skus->setmember( 'sku-111' );
invokeListInventorySupply($service, $request->withSellerSkus( $skus ) );
但它返回的是InStockSupplyQuantity为0,你可以看到link
这是我正在使用的代码的完整版本,
<?php
include_once ('.config.inc.php');
$config = array (
'ServiceURL' => MWS_ENDPOINT_URL,
'ProxyHost' => null,
'ProxyPort' => -1,
'MaxErrorRetry' => 3
);
$service = new FBAInventoryServiceMWS_Client(
ACCESS_KEY_ID,
SECRET_ACCESS_KEY,
$config,
APPLICATION_NAME,
APPLICATION_VERSION);
$request = new FBAInventoryServiceMWS_Model_ListInventorySupplyRequest();
$request->setSellerId(SELLER_ID);
$skus = new FBAInventoryServiceMWS_Model_SellerSkuList();
$skus->setmember( 'sku-111' );
invokeListInventorySupply($service, $request->withSellerSkus( $skus ) );
function invokeListInventorySupply(FBAInventoryServiceMWS_Interface $service, $request)
{
try {
$response = $service->listInventorySupply($request);
echo ("Service Response<br />");
echo ("=============================================================================<br />");
echo(" ListInventorySupplyResponse<br />");
if ($response->isSetListInventorySupplyResult()) {
echo(" ListInventorySupplyResult<br />");
$listInventorySupplyResult = $response->getListInventorySupplyResult();
if ($listInventorySupplyResult->isSetInventorySupplyList()) {
echo(" InventorySupplyList<br />");
$inventorySupplyList = $listInventorySupplyResult->getInventorySupplyList();
$memberList = $inventorySupplyList->getmember();
foreach ($memberList as $member) {
echo(" member<br />");
echo ("=============================================================================<br />");
if ($member->isSetSellerSKU())
{
echo(" SellerSKU<br />");
echo(" " . $member->getSellerSKU() . "<br /><br />");
}
if ($member->isSetFNSKU())
{
echo(" FNSKU<br />");
echo(" " . $member->getFNSKU() . "<br /><br />");
}
if ($member->isSetASIN())
{
echo(" ASIN<br />");
echo(" " . $member->getASIN() . "<br /><br />");
}
if ($member->isSetCondition())
{
echo(" Condition<br />");
echo(" " . $member->getCondition() . "<br /><br />");
}
if ($member->isSetTotalSupplyQuantity())
{
echo(" TotalSupplyQuantity<br />");
echo(" " . $member->getTotalSupplyQuantity() . "<br /><br />");
}
if ($member->isSetInStockSupplyQuantity())
{
echo(" InStockSupplyQuantity<br />");
echo(" " . $member->getInStockSupplyQuantity() . "<br /><br />");
}
if ($member->isSetEarliestAvailability()) {
echo(" EarliestAvailability<br />");
$earliestAvailability = $member->getEarliestAvailability();
if ($earliestAvailability->isSetTimepointType())
{
echo(" TimepointType<br />");
echo(" " . $earliestAvailability->getTimepointType() . "<br /><br />");
}
if ($earliestAvailability->isSetDateTime())
{
echo(" DateTime<br />");
echo(" " . $earliestAvailability->getDateTime() . "<br /><br />");
}
}
if ($member->isSetSupplyDetail()) {
echo(" SupplyDetail<br />");
$supplyDetail = $member->getSupplyDetail();
$member1List = $supplyDetail->getmember();
foreach ($member1List as $member1) {
echo(" member<br />");
if ($member1->isSetQuantity())
{
echo(" Quantity<br />");
echo(" " . $member1->getQuantity() . "<br /><br />");
}
if ($member1->isSetSupplyType())
{
echo(" SupplyType<br />");
echo(" " . $member1->getSupplyType() . "<br /><br />");
}
if ($member1->isSetEarliestAvailableToPick()) {
echo(" EarliestAvailableToPick<br />");
$earliestAvailableToPick = $member1->getEarliestAvailableToPick();
if ($earliestAvailableToPick->isSetTimepointType())
{
echo(" TimepointType<br />");
echo(" " . $earliestAvailableToPick->getTimepointType() . "<br /><br />");
}
if ($earliestAvailableToPick->isSetDateTime())
{
echo(" DateTime<br />");
echo(" " . $earliestAvailableToPick->getDateTime() . "<br /><br />");
}
}
if ($member1->isSetLatestAvailableToPick()) {
echo(" LatestAvailableToPick<br />");
$latestAvailableToPick = $member1->getLatestAvailableToPick();
if ($latestAvailableToPick->isSetTimepointType())
{
echo(" TimepointType<br />");
echo(" " . $latestAvailableToPick->getTimepointType() . "<br /><br />");
}
if ($latestAvailableToPick->isSetDateTime())
{
echo(" DateTime<br />");
echo(" " . $latestAvailableToPick->getDateTime() . "<br /><br />");
}
}
}
}
}
}
if ($listInventorySupplyResult->isSetNextToken())
{
echo(" NextToken<br />");
echo(" " . $listInventorySupplyResult->getNextToken() . "<br /><br />");
}
}
if ($response->isSetResponseMetadata()) {
echo(" ResponseMetadata<br />");
$responseMetadata = $response->getResponseMetadata();
if ($responseMetadata->isSetRequestId())
{
echo(" RequestId<br />");
echo(" " . $responseMetadata->getRequestId() . "<br /><br />");
}
}
} catch (FBAInventoryServiceMWS_Exception $ex) {
echo("Caught Exception: " . $ex->getMessage() . "<br /><br />");
echo("Response Status Code: " . $ex->getStatusCode() . "<br /><br />");
echo("Error Code: " . $ex->getErrorCode() . "<br /><br />");
echo("Error Type: " . $ex->getErrorType() . "<br /><br />");
echo("Request ID: " . $ex->getRequestId() . "<br /><br />");
echo("XML: " . $ex->getXML() . "<br /><br />");
}
}
答案 0 :(得分:5)
此代码适用于我:
...
$skus= new FBAInventoryServiceMWS_Model_SellerSkuList();
$skus->setmember("??-????-????"); // Your SKU
$request = new FBAInventoryServiceMWS_Model_ListInventorySupplyRequest();
$request->setSellerId(SELLER_ID);
$request->setMarketplace(MARKETPLACE_ID);
$request->setSellerSkus($skus);
invokeListInventorySupply($service, $request);
...
我的完整代码基于PHP Client Library v20101001中的文件\src\FBAInventoryServiceMWS\Samples\ListInventorySupplySample.php
,其中上面的代码替换了第71行。
输出如下:
答案 1 :(得分:0)
- 编辑 -
认为PHP和我不是最好的朋友,我将解释为确保您获得所需数据所需的步骤:
通过查看以下XML并确保正确调用对象来抓取您的响应:
<?xml version="1.0"?>
<ListInventorySupplyResponse xmlns="http://mws.amazonaws.com/FulfillmentInventory/2010-10-01">
<ListInventorySupplyResult>
<InventorySupplyList>
<member>
<SellerSKU>SampleSKU1</SellerSKU>
<ASIN>B00000K3CQ</ASIN>
<TotalSupplyQuantity>20</TotalSupplyQuantity>
<FNSKU>X0000000FM</FNSKU>
<Condition>NewItem</Condition>
<SupplyDetail/>
<InStockSupplyQuantity>15</InStockSupplyQuantity>
<EarliestAvailability>
<TimepointType>Immediately</TimepointType>
</EarliestAvailability>
....
在C#中,每个响应都可以通过一组对象获得,例如:
submitFeedResponse.SubmitFeedResult.FeedSubmissionInfo.FeedType
或
submitFeedResponse.ResponseMetadata.RequestId
我发现我的大多数无效响应都是由于没有调用正确的对象,或者如果我没有正确的对象,我没有正确显示它(例如,没有调用toString())。
另一方面,您将返回您的sku名称,那么您是否确保您使用的sku应该通过卖家中心返回实际数量?
或者可以在以下网站获得一些出色的支持:
https://sellercentral.amazon.com/forums/forum.jspa?forumID=35