提交亚马逊MWS GetMyFeesEstimate API请求
我试图使用亚马逊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
由于您的请求的一部分,您提交FeesEstimateRequestList
在列表中,你specifiy的IdType
,它可以是ASIN
或SellerSKU
。然后你给它一个价值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知道您在寻找什么。
了这昨天编程,发现关于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");
}
}
这是帮助吗? –
对不起,屏幕截图来自亚马逊网站,而不是我的要求。这是我努力理解的一点,我如何形成并提交请求。我将在循环中运行多个请求。 – Stuart
我不是一个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