2015-10-18 186 views
0

我试图通过_GET_WEBSTORE_PRODUCT_CATALOG_ ReportType获取有关产品目录的信息。我在提交报告请求方面取得了成功,甚至处理完了,甚至处理状态已完成,生成的ID也被收集起来。但是,当我试图通过Action:GetReport获取报告时,即使市场被提及,它也不会发送市场。下面是代码的样本,我不是任何使用PHP客户端库的....亚马逊MWS GetReport错误

代码示例

<?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); 

和错误样品 请注明需要该报告一个市场。 有什么我很想念......或在我输入了错误的东西... 感谢提前解..

+0

你要知道,这份报告只是如果你有一个亚马逊网上商店而不是普通的亚马逊卖家帐户。此外,在此链接中(http://docs.developer.amazonservices.com/en_UK/reports/Reports_ReportType.html),请注意:如果您有多个市场,则只会生成比较购物引擎和Google Merchant Center产品Feed与您的账户相关的主要市场。当您指定compareshoppingenginefeed或googlemerchantcenterproductfeed时,您必须在MarketplaceIdList请求参数中包含主要市场标识符 –

回答

0

尝试改变这些

$request = new MarketplaceWebService_Model_RequestReportRequest(); 

$marketplaceIdArray = array("Id" => array($marketplace_id)); 
$request->setMarketplaceIdList($marketplaceIdArray); 
$request->setMerchant($merchant_id); 
$request->setReportType($this->report_type);