亚马逊 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 Reference RequestReport 和一些 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 集成的主要内容,如果未能解决你的问题,请参考以下文章

亚马逊 MWS 推送通知

使用亚马逊 MWS 作为电子商务解决方案

使用亚马逊商城网络服务 (MWS) 的许可

将亚马逊 MWS 暂存器查询转换为 API 调用

亚马逊 MWS API 请求错误

如何获取亚马逊 MWS 的所有产品列表