亚马逊 MWS 集成
Posted
技术标签:
【中文标题】亚马逊 MWS 集成【英文标题】:Amazon.com MWS Integration 【发布时间】:2011-11-13 06:04:39 【问题描述】:我目前正在开发一个非常基本的网站,此时将只显示来自亚马逊商城的订单信息。
我拥有所有 MWS 安全凭证。 我下载并查看了 php 客户端库,但很困惑。 我对 PHP 有点陌生,但我觉得我可以处理这个项目。我需要知道如何从这个 API 安装和访问信息。我觉得我什么都试过了。亚马逊没有提供足够的信息来实现这一目标。它们听起来好像只需要 5 或 6 个简单的步骤,您就可以访问您的信息;这不是真的。
有没有关于MWS的详细教程?我需要尽可能多的信息。如果你能帮助我,也许可以概述实现它所需的步骤,那将非常感激!!!!我正在为此拔头发。再次感谢
【问题讨论】:
由于声誉限制,无法投票五次,但想确认来自@pepsi_max2k 的有效输入,mws.amazonservices.com 不适合我,但 mws.amazonservices.com.au 可以,这使得 api 主机名变得如此重要,具体取决于您的帐户在哪里注册 【参考方案1】:帮助您入门的粗略文件。这取自几页,包括来自@Vaidas 的this one。我还没有链接,抱歉。我唯一的贡献是将它们放在一个地方。
亚马逊提供的 PHP 代码没有一个开箱即用。我假设您有带有 cURL 或等效环境的 XAMPP。此代码应该开箱即用,让您开始了解需要发生的事情。只需插入您的凭据即可。
<?php
$param = array();
$param['AWSAccessKeyId'] = 'YourAccessKeyID';
$param['Action'] = 'GetLowestOfferListingsForASIN';
$param['SellerId'] = 'YourSellerID';
$param['SignatureMethod'] = 'HmacSHA256';
$param['SignatureVersion'] = '2';
$param['Timestamp'] = gmdate("Y-m-d\TH:i:s.\\0\\0\\0\\Z", time());
$param['Version'] = '2011-10-01';
$param['MarketplaceId'] = 'YourMarketplaceID';
$param['ItemCondition'] = 'new';
$param['ASINList.ASIN.1'] = 'B00C5XBAOA';
$secret = 'YourSecretKey';
$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 = 'GET' . "\n";
$sign .= 'mws.amazonservices.com' . "\n";
$sign .= '/Products/2011-10-01' . "\n";
$sign .= $arr;
$signature = hash_hmac("sha256", $sign, $secret, true);
$signature = urlencode(base64_encode($signature));
$link = "https://mws.amazonservices.com/Products/2011-10-01?";
$link .= $arr . "&Signature=" . $signature;
echo($link); //for debugging - you can paste this into a browser and see if it loads.
$ch = curl_init($link);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/xml'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$response = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
echo('<p>' . $response . '</p>');
print_r('<p>' . $info . '</p>');
?>
请注意,拥有
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
线,至少在我的情况下。除了 MWS 页面之外,CURL 对任何页面都可以正常工作(它只是给了我一个空白页面,其中包含 -1 的信息,我花了一天的大部分时间才弄清楚我需要那条线。它在 MWS 论坛的某个地方.
为了更好的衡量,这里是link to MWS ScratchPad。
一旦我对使用 MWS 有了更好的了解,也许我会做一个教程。或者更擅长 html 并且需要更多功能的人可以这样做。
【讨论】:
用户请记住,这是针对已弃用的 API 不要忘记某种退避实现,以防您开始收到“请求限制”回复 你救了我的命! 谢谢!没想到这么简单的解决方案【参考方案2】:如果您仍然不知道如何执行此操作,请按照以下步骤操作
阅读Developer Guide 阅读Reports API ReferenceRequestReport
和一些 ReportType
将返回订单数据(第 51 页左右,查看报告 api 参考)
您可以使用MWS Scratchpad 进行测试
您也可以发帖到Amazon MWS community forum 以获得更多帮助
你甚至可以写信给Amazon Tech Support
希望这对您和其他用户有所帮助。
【讨论】:
【参考方案3】:亚马逊在https://developer.amazonservices.com/ 提供了一些很棒的示例代码。我已经成功地将他们的代码用于我的 PHP 应用程序。
我同意。搞清楚 MWS API 简直是一场噩梦。
【讨论】:
我没有任何代码可以与亚马逊商店交互。对不起。【参考方案4】:对@Josiah 的方法进行了一些更改,使其适用于其他市场:
行:
$sign .= 'mws.amazonservices.com' . "\n";
更改为:您正确的 MWS 端点。在此处列出 http://docs.developer.amazonservices.com/en_US/dev_guide/DG_Endpoints.html - 它将与您的市场 ID 相匹配,可能是这样的:
$sign .= 'mws-eu.amazonservices.com' . "\n";
以及英国网站的英国市场 ID。
行:
$link = "https://mws.amazonservices.com/Products/2011-10-01?";
再次,按照上面的方式更改 url 的开头。
这可能会在浏览器中为您提供直接的文本输出(查看 xml 的源代码)。对于 XML 可见输出(更易于检查),请执行以下操作:
在文件顶部添加一个 XML 内容类型行:
header('Content-type: application/xml');
然后注释掉:
echo($link);
和
print_r('<p>' . $info . '</p>');
【讨论】:
感谢 pepsi_max。欢迎来到堆栈溢出!让您的答案不包含个人内容通常是一个好主意,但我很高兴代码对您有所帮助,并且您在将我的代码转换为生产就绪代码方面提出了很好的观点。您可能希望编辑您的答案以使其更简洁。提示:在将 ASIN 与 EAN 匹配时要格外小心。您需要批量运行GetMatchingProductForId
,然后再运行您需要的任何其他信息。给我发一封电子邮件,如果你愿意,我会给你一些其他的建议 - 它在我的个人资料中。【参考方案5】:
如果您遵循正确的步骤,实施 MWS 很容易: 1-根据您的首选语言从https://developer.amazonservices.com/ 下载代码库库。 2-在示例文件夹下的 config.php 文件中设置您的卖家 mws 凭据,以便在运行示例文件夹下的特定文件时使用相同的凭据,例如:RequestReportSample.php,并为特定卖家域设置报告类型和端点 URL。 3-然后您可以从暂存器检查提交的请求状态。 4- 您可以使用 GetReportSample 文件来获取订单报告数据,并根据您的需要使用。
您也可以关注参考http://prashantpandeytech.blogspot.com/2015/03/mws-amazon-marketplace-web-service-api.html
【讨论】:
以上是关于亚马逊 MWS 集成的主要内容,如果未能解决你的问题,请参考以下文章