从亚马逊获得一个简单的xml答案我遇到了一些麻烦,它始终报告我:
Sender
InvalidParameterValue
Either Action or Operation query parameter must be present.
如果我问他们的支持,他们无法帮助我他们没有看到缺失的参数...... 他们的建议是遵循他们的示例,但我的Webhost只支持php 5.2,因此自动加载器不起作用。
<?php
#header("Content-Type:text/xml");
$sellerID = 'SELLEDERID';
$aws = 'AWSKEY';
$secret = 'SECRET';
$action = 'GetReportList';
$timestamp = gmdate("Y-m-d\TH:i:s\Z");
$signature = $action . $timestamp;
$sig = base64_encode(hash_hmac("sha256", $signature, $secret, true));
$service = 'https://mws.amazonservices.com/?';
$url = 'AWSAccessKeyId='.$aws;
$url .= '&Action='.$action;
$url .= '&Merchant='.$sellerid;
$url .= '&SignatureVersion=2';
$url .= '&Timestamp=2013-01-10T12:22:48Z';
$url .= '&Version=2009-01-01';
$url .= '&Signature='.$sig;
$url .= '&SignatureMethod=HmacSHA256';
$awsURL = $service.urlencode($url);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $awsURL,
CURLOPT_USERAGENT => 'Request'
));
$resp = curl_exec($curl);
curl_close($curl);
echo "<pre>";
var_dump($resp);
var_dump($awsURL);
echo "</pre>";
?>
答案 0 :(得分:0)
“我们看到您的请求中没有错误”可能是指您放入Scratchpad的请求,而不是您通过php发出的请求,因为您的签名计算已经过时了。
请参阅this StackOverflow question或MWS Developers Guide(第12页,“如果您创建自己的客户端库”),了解如何计算信号。
实际的错误消息似乎很奇怪。一旦你的签名正确,我希望它能改变。还请注意,相当多的MWS API调用需要HTTP POST,因此如果您打算在其他地方重用该代码,则最好相应地更改代码。