亚马逊MWS集成

9

我目前正在开发一个非常基本的网站,它将仅显示来自亚马逊市场的订单信息。

  • 我已经拥有了所有的MWS安全凭据。
  • 我已经下载并审查了PHP客户端库,但感到很困惑。
  • 尽管我对PHP不太熟悉,但我觉得我可以处理这个项目。

我需要知道如何安装和访问此API中的信息。 我感觉自己已经尝试了所有可能的方法。 亚马逊没有提供足够的信息来启动。 他们让它听起来只需要5或6个简单的步骤就能访问您的信息; 这是不正确的。

是否有关于MWS的详细教程? 我需要尽可能多的信息。 如果您可以帮助我,也许提供所需的步骤概述,那将非常感激! 我为此苦恼到掉头发。 再次感谢。


由于声望限制,无法点赞,但想确认@pepsi_max2k的有效输入。对我而言,mws.amazonservices.com无法使用,但mws.amazonservices.com.au可以。这使得API主机名变得非常重要,取决于您的帐户注册位置。 - Ming Teoh
5个回答

11

这是一个粗略的文件,可帮助您入门。此代码取自多个页面,包括 @Vaidas 的 此页面。抱歉我还没有链接。我的唯一贡献是将其整合到一个地方。

我没能成功运行 Amazon 提供的任何 PHP 代码。我假设您已经安装了 XAMPP 和 cURL 或等效环境。该代码应该能够立即工作,让您开始进行所需的操作。只需插入您的凭据即可。

<?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); 这行代码非常重要。CURL 可以正常工作,除了 MWS 页面(它只会给我一个带有 -1 的空白页面,并且我花了一整天时间才发现需要这行代码。这个代码在 MWS 论坛上可以找到。

为了保险起见,这里是一个 MWS ScratchPad 的链接

一旦我更好地掌握了 MWS 的操作,也许我会制作一个教程。或者有需要更多功能的 HTML 专家可以做到。


1
请用户注意,此为已弃用的API。 - Goose
1
不要忘记在开始收到“请求被限制”的回复时实现某种退避机制。 - Gabriel Alack
1
你救了我的命! - user3676604
谢谢!没想到会有这么简单的解决方案。 - Muhammad Tarique

10

5
亚马逊在 https://developer.amazonservices.com/ 提供了一些很好的示例代码。我已经成功地在我的PHP应用程序中使用它们的代码。
我同意。弄清楚MWS API是一场噩梦。

我没有任何与亚马逊商店进行接口的代码。抱歉。 - Adam Bertram

0

对@Josiah的方法进行了一些更改,使其适用于其他市场:

行:

$sign .= 'mws.amazonservices.com' . "\n";

更改为:您的正确MWS端点。请在此处列出http://docs.developer.amazonservices.com/en_US/dev_guide/DG_Endpoints.html - 它将与您的市场ID匹配,该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。欢迎来到Stack Overflow!通常最好保持你的答案没有个人内容,但我很高兴那段代码对你有帮助,并且你提出了将我的代码转换为生产就绪代码的好建议。你可能需要编辑你的答案使其更简洁。提示:匹配ASIN和EAN时要非常小心。你需要运行GetMatchingProductForId的批处理,然后获取其他所需信息。给我发一封电子邮件,如果你想的话,我会给你一些其他的指针 - 这在我的个人资料中。 - Josiah

0

如果您按照正确的步骤实施MWS,那么这将变得非常容易: 1-根据您喜欢的语言从https://developer.amazonservices.com/下载代码库。 2-在示例文件夹下的config.php文件中设置您的卖家mws凭据,以便在运行特定文件(如:RequestReportSample.php)时可以使用相同的凭据,并为特定卖家域设置报告类型和端点URL。 3-然后您可以从Scratchpad检查提交的请求状态。 4-您可以使用GetReportSample文件获取订单报告数据,并根据需要使用相同的数据。

您也可以参考http://prashantpandeytech.blogspot.com/2015/03/mws-amazon-marketplace-web-service-api.html


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接