亚马逊 MWS GetReport 错误
Amazon MWS GetReport error
我试图通过 _GET_WEBSTORE_PRODUCT_CATALOG_ ReportType 获取有关产品目录的信息。我成功提交了报告请求,甚至它已被处理,甚至处理状态为 DONE,生成的 ID 也被收集。但是,当我尝试通过 Action: GetReport 获取报告时,即使提到了市场,它也不会发送市场。下面是代码示例,我没有使用任何 PHP 客户端库....
代码示例
<?php
require 'config.php';
$param = array(
'AWSAccessKeyId'=> AWS_KEY,
'Action'=>'GetReport',
'ReportId'=>'513798174016724',
'Merchant'=> MERCHANT_ID,
'SignatureMethod' => "HmacSHA256",
'SignatureVersion'=> "2",
'Timestamp'=> gmdate("Y-m-d\TH:i:s.\0\0\0\Z", time()),
'Version' => "2009-01-01",
'Marketplace'=>MARKETPLACE
);
$secret = AWS_SECRET_ACCESS_KEY;
$url = array();
foreach ($param as $key => $val) {
$key = str_replace("%7E", "~", rawurlencode($key));
$val = str_replace("%7E", "~", rawurlencode($val));
$url[] = "{$key}={$val}";
}
sort($url);
$arr = implode('&', $url);
$sign = 'POST' . "\n";
$sign .= 'mws.amazonservices.com' . "\n";
$sign .= '/' . "\n";
$sign .= $arr;
$signature = hash_hmac("sha256", $sign, $secret, true);
$signature = urlencode(base64_encode($signature));
$link = "https://mws.amazonservices.com/?";
$link .= $arr . "&Signature=" . $signature;
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $link,
CURLOPT_POST => 1,
)
);
$resp1 = curl_exec($curl);
curl_close($curl);
print_r($resp1);
和错误示例
请指明需要报告的商城。
有什么我遗漏的吗……或者我打错了什么……
感谢提前解决..
试试改成这些
$request = new MarketplaceWebService_Model_RequestReportRequest();
$marketplaceIdArray = array("Id" => array($marketplace_id));
$request->setMarketplaceIdList($marketplaceIdArray);
$request->setMerchant($merchant_id);
$request->setReportType($this->report_type);
我试图通过 _GET_WEBSTORE_PRODUCT_CATALOG_ ReportType 获取有关产品目录的信息。我成功提交了报告请求,甚至它已被处理,甚至处理状态为 DONE,生成的 ID 也被收集。但是,当我尝试通过 Action: GetReport 获取报告时,即使提到了市场,它也不会发送市场。下面是代码示例,我没有使用任何 PHP 客户端库....
代码示例
<?php
require 'config.php';
$param = array(
'AWSAccessKeyId'=> AWS_KEY,
'Action'=>'GetReport',
'ReportId'=>'513798174016724',
'Merchant'=> MERCHANT_ID,
'SignatureMethod' => "HmacSHA256",
'SignatureVersion'=> "2",
'Timestamp'=> gmdate("Y-m-d\TH:i:s.\0\0\0\Z", time()),
'Version' => "2009-01-01",
'Marketplace'=>MARKETPLACE
);
$secret = AWS_SECRET_ACCESS_KEY;
$url = array();
foreach ($param as $key => $val) {
$key = str_replace("%7E", "~", rawurlencode($key));
$val = str_replace("%7E", "~", rawurlencode($val));
$url[] = "{$key}={$val}";
}
sort($url);
$arr = implode('&', $url);
$sign = 'POST' . "\n";
$sign .= 'mws.amazonservices.com' . "\n";
$sign .= '/' . "\n";
$sign .= $arr;
$signature = hash_hmac("sha256", $sign, $secret, true);
$signature = urlencode(base64_encode($signature));
$link = "https://mws.amazonservices.com/?";
$link .= $arr . "&Signature=" . $signature;
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $link,
CURLOPT_POST => 1,
)
);
$resp1 = curl_exec($curl);
curl_close($curl);
print_r($resp1);
和错误示例 请指明需要报告的商城。 有什么我遗漏的吗……或者我打错了什么…… 感谢提前解决..
试试改成这些
$request = new MarketplaceWebService_Model_RequestReportRequest();
$marketplaceIdArray = array("Id" => array($marketplace_id));
$request->setMarketplaceIdList($marketplaceIdArray);
$request->setMerchant($merchant_id);
$request->setReportType($this->report_type);