Amazon Product API(现称为Amazon Product Advertising API)是亚马逊提供的一套接口,允许开发者通过编程方式访问亚马逊产品目录信息,包括产品详情、价格、评论、图片等。
Amazon Product API主要提供以下操作类型:
<?php
require 'vendor/autoload.php';
use Aws\ProductAdvertising\ProductAdvertisingClient;
use Aws\Credentials\Credentials;
$associateTag = 'YOUR_ASSOCIATE_TAG';
$accessKey = 'YOUR_ACCESS_KEY';
$secretKey = 'YOUR_SECRET_KEY';
$credentials = new Credentials($accessKey, $secretKey);
$client = new ProductAdvertisingClient([
'credentials' => $credentials,
'region' => 'us-east-1',
'version' => 'latest'
]);
try {
$result = $client->searchItems([
'Keywords' => 'iPhone',
'SearchIndex' => 'Electronics',
'Resources' => ['Images.Primary.Medium', 'ItemInfo.Title'],
'PartnerTag' => $associateTag,
'PartnerType' => 'Associates'
]);
print_r($result);
} catch (Exception $e) {
echo 'Error: ', $e->getMessage(), "\n";
}
?>
<?php
function amazonProductApiRequest($params) {
$public_key = "YOUR_ACCESS_KEY";
$private_key = "YOUR_SECRET_KEY";
$associate_tag = "YOUR_ASSOCIATE_TAG";
$method = "GET";
$host = "webservices.amazon.com";
$uri = "/onca/xml";
// 添加必要参数
$params["Service"] = "AWSECommerceService";
$params["AWSAccessKeyId"] = $public_key;
$params["AssociateTag"] = $associate_tag;
$params["Timestamp"] = gmdate("Y-m-d\TH:i:s\Z");
$params["Version"] = "2013-08-01";
// 排序参数
ksort($params);
// 创建规范化的查询字符串
$canonicalized_query = array();
foreach ($params as $param => $value) {
$param = str_replace("%7E", "~", rawurlencode($param));
$value = str_replace("%7E", "~", rawurlencode($value));
$canonicalized_query[] = $param . "=" . $value;
}
$canonicalized_query = implode("&", $canonicalized_query);
// 创建待签名的字符串
$string_to_sign = $method . "\n" . $host . "\n" . $uri . "\n" . $canonicalized_query;
// 计算签名
$signature = base64_encode(hash_hmac("sha256", $string_to_sign, $private_key, true));
$signature = str_replace("%7E", "~", rawurlencode($signature));
// 创建请求URL
$url = "https://" . $host . $uri . "?" . $canonicalized_query . "&Signature=" . $signature;
// 发送请求
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
// 示例:搜索产品
$params = array(
"Operation" => "ItemSearch",
"SearchIndex" => "Books",
"Keywords" => "PHP programming",
"ResponseGroup" => "ItemAttributes,Offers,Images"
);
$xml_response = amazonProductApiRequest($params);
$parsed_xml = simplexml_load_string($xml_response);
print_r($parsed_xml);
?>
原因:通常是由于时间戳不正确或签名计算错误导致。
解决方案:
原因:亚马逊API有请求频率限制(通常为1次/秒)。
解决方案:
原因:未正确设置ResponseGroup参数。
解决方案:
原因:服务器SSL配置问题或证书验证失败。
解决方案:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
通过合理使用Amazon Product API,开发者可以构建强大的电子商务应用,集成亚马逊庞大的产品目录。
没有搜到相关的文章