亚马逊产品广告API:XML请求问题

时间:2013-08-16 08:44:35

标签: amazon-web-services xmlhttprequest amazon

我希望得到一个“立即购买”链接,并且游戏产品的实际amazo价格可以获得游戏标题。为此,我必须使用“按标题搜索”(http://docs.aws.amazon.com/AWSECommerceService/latest/DG/EX_SearchingbyTitle.html)。

我找到了XML-Request的示例,并尝试为我构建它。

示例是:

    $AWSAccessKeyId = "";
$SecretAccessKey = "";

$ItemId = "0679722769"; // ASIN
$Timestamp = gmdate("Y-m-d\TH:i:s\Z");
$Timestamp = str_replace(":", "%3A", $Timestamp);
$ResponseGroup = "ItemAttributes,Offers,Images,Reviews";
$ResponseGroup = str_replace(",", "%2C", $ResponseGroup);

$String = "AWSAccessKeyId=$AWSAccessKeyId&
AssociateTag=xy&
ItemId=$ItemId&
Operation=ItemLookup&
ResponseGroup=$ResponseGroup&
Service=AWSECommerceService&
Timestamp=$Timestamp&
Version=2009-01-06";



$String = str_replace("\n", "", $String);

$Prepend = "GET\nwebservices.amazon.com\n/onca/xml\n";
$PrependString = $Prepend . $String;

$Signature = base64_encode(hash_hmac("sha256", $PrependString, $SecretAccessKey, True));  
$Signature = str_replace("+", "%2B", $Signature);
$Signature = str_replace("=", "%3D", $Signature);

$BaseUrl = "http://webservices.amazon.com/onca/xml?";
$SignedRequest = $BaseUrl . $String . "&Signature=" . $Signature;

$XML = simplexml_load_file($SignedRequest);

echo '<a href="'.$SignedRequest.'">XML</a><p>';
print_r ($XML);

这很完美,但不是我的搜索值。 我编辑了参数并且请求被破坏了。

我的要求:

    $AWSAccessKeyId = "";
$SecretAccessKey = "";

$ItemId = "Payday2"; // ASIN
$Timestamp = gmdate("Y-m-d\TH:i:s\Z");
$Timestamp = str_replace(":", "%3A", $Timestamp);
$ResponseGroup = "ItemAttributes";
$ResponseGroup = str_replace(",", "%2C", $ResponseGroup);

$String = "AWSAccessKeyId=$AWSAccessKeyId&
AssociateTag=xy&
Operation=ItemSearch&
SearchIndex=Game&
Title=$ItemId&
ResponseGroup=$ResponseGroup&
Service=AWSECommerceService&
Timestamp=$Timestamp&
Version=2009-01-06";



$String = str_replace("\n", "", $String);

$Prepend = "GET\nwebservices.amazon.com\n/onca/xml\n";
$PrependString = $Prepend . $String;

$Signature = base64_encode(hash_hmac("sha256", $PrependString, $SecretAccessKey, True));  
$Signature = str_replace("+", "%2B", $Signature);
$Signature = str_replace("=", "%3D", $Signature);

$BaseUrl = "http://webservices.amazon.com/onca/xml?";
$SignedRequest = $BaseUrl . $String . "&Signature=" . $Signature;

$XML = simplexml_load_file($SignedRequest);

echo '<a href="'.$SignedRequest.'">XML</a><p>';
print_r ($XML);

为什么我的请求不起作用?

由于

1 个答案:

答案 0 :(得分:1)

我在这里看到两个潜在的问题。首先,“游戏”似乎不是SearchIndex的有效输入,但VideoGames是您正在寻找的。 See here for a list of all of them.

(美国境外可以find applicable lists here

我看到的另一个潜在问题,我不确定亚马逊API的灵活性是多少,因为游戏中应该有一个标题为“发薪日2”的空间。这实际上比修复空间更重要。根据您对标题输入的控制程度,您可以更灵活地根据关键字而不是标题进行搜索。