2016-12-06 224 views
1

我試圖使用亞馬遜MWS API檢索特定SKU的費用估計。我有示例文件,並且已經閱讀和閱讀,但我無法弄清楚如何實際指定要提交的SKU。提交亞馬遜MWS GetMyFeesEstimate API請求

我有示例文件GetMyFeesEstimateSample.php工作對模擬文件,但這是響應文件,不是嗎?

這是我的,我如何爲請求指定SellerSKU?

<?php 
/******************************************************************************* 
* Copyright 2009-2016 Amazon Services. All Rights Reserved. 
* Licensed under the Apache License, Version 2.0 (the "License"); 
* 
* You may not use this file except in compliance with the License. 
* You may obtain a copy of the License at: http://aws.amazon.com/apache2.0 
* This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
* CONDITIONS OF ANY KIND, either express or implied. See the License for the 
* specific language governing permissions and limitations under the License. 
******************************************************************************* 
* PHP Version 5 
* @category Amazon 
* @package Marketplace Web Service Products 
* @version 2011-10-01 
* Library Version: 2016-06-01 
* Generated: Fri Sep 16 11:49:32 PDT 2016 
*/ 

/** 
* Get My Fees Estimate Sample 
*/ 

require_once('.config.inc.php'); 

/************************************************************************ 
* Instantiate Implementation of MarketplaceWebServiceProducts 
* 
* AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY constants 
* are defined in the .config.inc.php located in the same 
* directory as this sample 
***********************************************************************/ 
// More endpoints are listed in the MWS Developer Guide 
// North America: 
//$serviceUrl = "https://mws.amazonservices.com/Products/2011-10-01"; 
// Europe 
//$serviceUrl = "https://mws-eu.amazonservices.com/Products/2011-10-01"; 
// Japan 
//$serviceUrl = "https://mws.amazonservices.jp/Products/2011-10-01"; 
// China 
//$serviceUrl = "https://mws.amazonservices.com.cn/Products/2011-10-01"; 


$config = array (
    'ServiceURL' => $serviceUrl, 
    'ProxyHost' => null, 
    'ProxyPort' => -1, 
    'ProxyUsername' => null, 
    'ProxyPassword' => null, 
    'MaxErrorRetry' => 3, 
); 

$service = new MarketplaceWebServiceProducts_Client(
     AWS_ACCESS_KEY_ID, 
     AWS_SECRET_ACCESS_KEY, 
     APPLICATION_NAME, 
     APPLICATION_VERSION, 
     $config); 

/************************************************************************ 
* Uncomment to try out Mock Service that simulates MarketplaceWebServiceProducts 
* responses without calling MarketplaceWebServiceProducts service. 
* 
* Responses are loaded from local XML files. You can tweak XML files to 
* experiment with various outputs during development 
* 
* XML files available under MarketplaceWebServiceProducts/Mock tree 
* 
***********************************************************************/ 
// $service = new MarketplaceWebServiceProducts_Mock(); 

/************************************************************************ 
* Setup request parameters and uncomment invoke to try out 
* sample for Get My Fees Estimate Action 
***********************************************************************/ 
// @TODO: set request. Action can be passed as MarketplaceWebServiceProducts_Model_GetMyFeesEstimate 
$request = new MarketplaceWebServiceProducts_Model_GetMyFeesEstimateRequest(); 
$request->setSellerId(MERCHANT_ID); 
// object or array of parameters 
invokeGetMyFeesEstimate($service, $request); 

/** 
    * Get Get My Fees Estimate Action Sample 
    * Gets competitive pricing and related information for a product identified by 
    * the MarketplaceId and ASIN. 
    * 
    * @param MarketplaceWebServiceProducts_Interface $service instance of MarketplaceWebServiceProducts_Interface 
    * @param mixed $request MarketplaceWebServiceProducts_Model_GetMyFeesEstimate or array of parameters 
    */ 

    function invokeGetMyFeesEstimate(MarketplaceWebServiceProducts_Interface $service, $request) 
    { 
     try { 
     $response = $service->GetMyFeesEstimate($request); 

     echo ("Service Response\n"); 
     echo ("=============================================================================\n"); 

     $dom = new DOMDocument(); 
     $dom->loadXML($response->toXML()); 
     $dom->preserveWhiteSpace = false; 
     $dom->formatOutput = true; 
     echo $dom->saveXML(); 
     echo("ResponseHeaderMetadata: " . $response->getResponseHeaderMetadata() . "\n"); 

    } catch (MarketplaceWebServiceProducts_Exception $ex) { 
     echo("Caught Exception: " . $ex->getMessage() . "\n"); 
     echo("Response Status Code: " . $ex->getStatusCode() . "\n"); 
     echo("Error Code: " . $ex->getErrorCode() . "\n"); 
     echo("Error Type: " . $ex->getErrorType() . "\n"); 
     echo("Request ID: " . $ex->getRequestId() . "\n"); 
     echo("XML: " . $ex->getXML() . "\n"); 
     echo("ResponseHeaderMetadata: " . $ex->getResponseHeaderMetadata() . "\n"); 
    } 
} 

我發現這個,但我仍然不知道該怎麼做。你會認爲亞馬遜樣本將包括樣本ASIN或SKU; https://docs.developer.amazonservices.com/en_US/products/Products_GetMyFeesEstimate.html

Get Fees

回答

1

由於您的請求的一部分,您提交FeesEstimateRequestList在列表中,你specifiy的IdType,它可以是ASINSellerSKU。然後你給它一個價值IdValue。請注意,還有其他元素是必需的。退房FeesEstimateRequest這些元素在這裏https://docs.developer.amazonservices.com/en_US/products/Products_Datatypes.html#FeesEstimateRequest

以上您的文章有IdType定義的ASIN,而不是SellerSKU。就像我上面提到的那樣把它改成SellerSKU,你就會被設置。

我使用C# SDK,它有所有這些的例子。我會假設PHP SDK將是相同的,但也許它是完整的。無論如何,您需要在您的POST中提交FeesEstimateRequestList,以便MWS知道您在尋找什麼。

+0

對不起,屏幕截圖來自亞馬遜網站,而不是我的要求。這是我努力理解的一點,我如何形成並提交請求。我將在循環中運行多個請求。 – Stuart

+0

我不是一個PHP傢伙,但最終的結果是生成一個POST到MWS。您可以手動編寫代碼並提交或使用亞馬遜的SDK。看看上面的PHP代碼,看起來您需要取消註釋以下行:「* @param mixed $ request MarketplaceWebServiceProducts_Model_GetMyFees估計或參數數組」並將參數放在那裏。這對我來說有點陌生。看看周圍的計算器的例子。也許這一個:http://stackoverflow.com/questions/37416063/fetch-product-from-amazon-mws-using-product-api – ScottG

2

了這昨天編程,發現關於FeesEstimateRequestElements的解決方案,以獲得更多信息:

http://docs.developer.amazonservices.com/en_US/products/Products_Datatypes.html#FeesEstimateRequest

信息有關操作GetMyFeesEstimate:

http://docs.developer.amazonservices.com/en_US/products/Products_GetMyFeesEstimate.html

GetMyFeesEstimateSample有一些意見,這個作品:

<?php 

require_once('.config.inc.php'); 


$serviceUrl = "https://mws.amazonservices.com/Products/2011-10-01"; 

$config = array (
    'ServiceURL' => $serviceUrl, 
    'ProxyHost' => null, 
    'ProxyPort' => -1, 
    'ProxyUsername' => null, 
    'ProxyPassword' => null, 
    'MaxErrorRetry' => 3, 
); 

$service = new MarketplaceWebServiceProducts_Client(
     AWS_ACCESS_KEY_ID, 
     AWS_SECRET_ACCESS_KEY, 
     APPLICATION_NAME, 
     APPLICATION_VERSION, 
     $config); 


//First we set up all the list variables 
$FeesEstimateRequest = new MarketplaceWebServiceProducts_Model_FeesEstimateRequest(); 
$FeesEstimateRequest->setMarketplaceId('ATVPDKIKX0DER'); // Amazon.com marketplace id 
$FeesEstimateRequest->setIdType('SellerSKU');    // IdType values: ASIN, SellerSKU, SellerSKU in your case 
$FeesEstimateRequest->setIdValue('XXXXXXXXXX');  // The value of the id you have entered 
$FeesEstimateRequest->setIdentifier('request1');   // A identifier for the item you have requested, this is for your own use 
$FeesEstimateRequest->setIsAmazonFulfilled(FALSE);  // Fullfilled by Amazon? true if the offer is fulfilled by Amazon.  

//To set up the $PriceToEstimateFees object we need two instances of the object MarketplaceWebServiceProducts_Model_MoneyType 
//@ set up for both cases: Listing Price and Shipping Price 
//New object MoneyType, setting up the currency and amount for listing price 
$MoneyTypeListingPrice = new MarketplaceWebServiceProducts_Model_MoneyType(); 
$MoneyTypeListingPrice->setCurrencyCode('USD'); // String, the currency code of the price : USD in this example for amazon.com marketplace 
$MoneyTypeListingPrice->setAmount('0.00');  // String, the price of the item 

//New object MoneyType, setting up the currency and amount for shipping price 
$MoneyTypeShipping = new MarketplaceWebServiceProducts_Model_MoneyType(); 
$MoneyTypeShipping->setCurrencyCode('USD'); // String, the currency code of the price : USD in this example for amazon.com marketplace 
$MoneyTypeShipping->setAmount('0.00');  // String, the price of the item 

//Setting up the prices: Listing Price and Shipping Price 
$PriceToEstimateFees = new MarketplaceWebServiceProducts_Model_PriceToEstimateFees(); 
$PriceToEstimateFees->setListingPrice($MoneyTypeListingPrice); 
$PriceToEstimateFees->setShipping($MoneyTypeShipping); 

//Finally setting up the $PriceToEstimateFees object to the $FeesEstimateRequest object 
$FeesEstimateRequest->setPriceToEstimateFees($PriceToEstimateFees); // The product price that the fee estimate is based on. 

//setting up the final required parameter in the $FeesEstimateRequestList object 
$FeesEstimateRequestList = new MarketplaceWebServiceProducts_Model_FeesEstimateRequestList(); 
$FeesEstimateRequestList->setFeesEstimateRequest($FeesEstimateRequest); 

// Last step : sending the $FeesEstimateRequestList object into $request 
$request = new MarketplaceWebServiceProducts_Model_GetMyFeesEstimateRequest(); 
$request->setSellerId(MERCHANT_ID); 
$request->setFeesEstimateRequestList($FeesEstimateRequestList); 
// object or array of parameters 
invokeGetMyFeesEstimate($service, $request); 



function invokeGetMyFeesEstimate(MarketplaceWebServiceProducts_Interface $service, $request) 
    { 
    try { 
    $response = $service->GetMyFeesEstimate($request); 

    echo ("Service Response\n"); 
    echo ("=============================================================================\n"); 

    $dom = new DOMDocument(); 
    $dom->loadXML($response->toXML()); 
    $dom->preserveWhiteSpace = false; 
    $dom->formatOutput = true; 
    echo $dom->saveXML(); 
    echo("ResponseHeaderMetadata: " . $response->getResponseHeaderMetadata() . "\n"); 

} catch (MarketplaceWebServiceProducts_Exception $ex) { 
    echo("Caught Exception: " . $ex->getMessage() . "\n"); 
    echo("Response Status Code: " . $ex->getStatusCode() . "\n"); 
    echo("Error Code: " . $ex->getErrorCode() . "\n"); 
    echo("Error Type: " . $ex->getErrorType() . "\n"); 
    echo("Request ID: " . $ex->getRequestId() . "\n"); 
    echo("XML: " . $ex->getXML() . "\n"); 
    echo("ResponseHeaderMetadata: " . $ex->getResponseHeaderMetadata() . "\n"); 
} 
} 
+0

這是幫助嗎? –