amazon Product Advertising APIで商品一覧を表示する(PHP/JSON)

前回に続き、書籍”公開API活用ガイド”の第5章:アフィリエイト・リンクを読んで実践。
今回は”amazon Product Advertising API”を利用し、キーワード”工学社”とカテゴリ”Books”で商品検索するPHPプログラムを解説していた。

メモ

  • アクセスキーIDとシークレットアクセスキーが必要
  • リクエストURLの形式:http://webservices.amazon.co.jp/onca/xml

今回出会ったPHP関数

関数 内容
ksort 配列をキーでソートする
str_replace 検索文字列に一致したすべての文字列を置換する
rawurlencode RFC 3986 に基づき URL エンコードを行う
implode 配列要素を文字列により連結する
base64_encode MIME base64 方式でデータをエンコードする
hash_hmac HMAC 方式を使用してハッシュ値を生成する


フォームに入力した検索ワードでamazon商品の一覧を表示するページ:amazon_product_advertising_api.php

参考サイト

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<title>amazon Product Advertising API practice</title>
</head>

<body>
<h1>amazon Product Advertising API sample</h1>
<form action="" method="get">
<input type="text" name="keyword" size="35" maxlength="255" value="" />
<input type="submit" value="search" />
</form>

<?php
function search_paa($SearchIndex, $keyword) {
	$AccesskeyID = 'AWS Access Key ID';
	$SecretAccessKey = 'AWS Secret Access Key';

	$method = "GET";
	$host = 'webservices.amazon.co.jp';
	$uri = "/onca/xml";

	$params['AWSAccessKeyId'] = $AccesskeyID;
	$params['Service'] = 'AWSECommerceService';
	$params['Version'] = '2011-08-01';
	$params['Operation'] = 'ItemSearch';
	$params['ResponseGroup'] = 'Small,Images';
	$params['SearchIndex'] = $SearchIndex;
	$params['Keywords'] = $keyword;
	$params['AssociateTag'] = 'amazon associate id';
	$params['Timestamp'] = gmdate('Y-m-dTH:i:sZ');

	ksort($params);

	$query = array();
	foreach ($params as $param=>$value) {
		$param = str_replace("%7E", "~", rawurlencode($param));
		$value = str_replace("%7E", "~", rawurlencode($value));
		$query[] = $param . "=" . $value;
	}
	$query = implode("&", $query);

	$Signature = $method . "n" . $host . "n" . $uri . "n" . $query;
	$Signature = base64_encode(hash_hmac("sha256", $Signature, $SecretAccessKey, True));
	$Signature = str_replace("%7E", "~", rawurlencode($Signature));

	$url = "http://" . $host . $uri . "?" . $query . "&Signature=" . $Signature;

	$ret = "";
	$xml = simplexml_load_file($url);

	if ($xml === false) {
		return false;
	}
	else {
		foreach ($xml->Items->Item as $Item) {
			$ret .= '<a href="' . $Item->DetailPageURL . '"><img src="' . $Item->MediumImage->URL . ""></a><br />n";
			$ret .= '<a href="' . $Item->DetailPageURL . '">' . $Item->ItemAttributes->Title . "</a><br />n";
		}
	}

	return $ret;
}

if (!empty($_REQUEST["keyword"])) {
	$keyword = htmlspecialchars($_REQUEST["keyword"], ENT_QUOTES, 'UTF-8');

	echo search_paa("Books", $keyword);
}
?>

<p>powered by amazon Product Advertising API</a></p>
</body>

</html>
公開API活用ガイド (I・O BOOKS)
公開API活用ガイド (I・O BOOKS)

posted with amazlet at 12.01.24
ZAPA
工学社
売り上げランキング: 149253

関連エントリー

  1. 楽天ウェブサービス(RWS)を使ってアフィリエイトリンクをつくる(PHP/REST)
  2. MediaWiki APIでWikipediaの情報を取得する
  3. TINAMI API
  4. PHPのPDOでMySQLデータベースのデータを取得する2
  5. (PHP/MySQL)ファイル操作、データベース更新メモ
This entry was posted in 未分類 and tagged , . Bookmark the permalink.