【问题标题】:Retrieve Amazon MWS Response using php5.2 apis使用 php5.2 api 检索亚马逊 MWS 响应
【发布时间】:2013-01-10 12:56:38
【问题描述】:

我很难从亚马逊得到一个简单的 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>";
?> 

【问题讨论】:

  • 你可以扩展“他们看不到缺少的参数”吗?他们是否确认您的网址包含正确的参数?或者只是让你回到他们的例子?
  • 你的虚拟主机需要升级——PHP5.2已经两年不支持了;它有已知的安全漏洞,没有也不会不会修复。没有值得他付出的服务器管理员允许它仍然在他的服务器上运行。如果您的虚拟主机愿意在他们的服务器上运行过时且已知不安全的软件,那么他们显然不关心他们的用户;你使用了错误的网络主机。
  • @Chris,他们只说“我们在您的请求中没有发现错误”,但我使用 Amazon Scratchpad (mws.amazonservices.com/scratchpad/index.html) 构建了查询
  • @SDC,我知道这一点,但网络空间上的软件是使用 ZEND 加密的,需要 PHP 5.2。
  • 顺便说一句,你说自动加载器不工作是因为你使用的是 5.2...但是 PHP 5.2 确实支持自动加载器。

标签: php amazon-web-services php-5.2 amazon-mws


【解决方案1】:

“我们在您的请求中没有看到错误”可能是指您放入 Scratchpad 的请求,而不是您通过 php 发出的请求,因为您的签名计算很差。

请参阅this StackOverflow questionMWS Developers Guide(第 12 页,“如果您创建自己的客户端库”)了解如何计算 sig。

实际的错误信息看起来很奇怪。我希望一旦你的签名正确,它就会改变。另请注意,相当多的 MWS API 调用需要 HTTP POST,因此如果您打算在其他地方重用该代码,最好相应地更改您的代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多