AmazonのProduct Advertising APIを使ってみる

AmazonのProduct Advertising APIを使って、サイトに商品情報を表示させてみます。

AWSのアカウント作成

Product Advertising APIを使用するには、以下の3つが必要になります。

  • アクセスキー
  • シークレットキー
  • アソシエイトタグ

まずはアクセスキーとシークレットキーを取得するために、こちらからAWSのアカウントを作成を行います。

try-using-product-advertising-api-of-amazon01

メールアドレスを入力し、パスワードがない場合は「I am a new customer.」を選択して、「Sign in using our secure server」をクリック。

try-using-product-advertising-api-of-amazon02

メールアドレスの再入力と名前・パスワードを入力して、「Create account」をクリックします。

try-using-product-advertising-api-of-amazon03

アカウント情報を入力します。
「Address Line 1」「ZIP or Postal Code」「Country」「Website or Application Description」が必須の項目のようです。
入力後、規約に問題なければチェックを入れて、「Complete Registration」をクリックします。

try-using-product-advertising-api-of-amazon04

アカウントの登録が完了しました。
 

アクセスキーとシークレットキーの取得

アカウント登録完了画面の下部にある「Manage Your Account」をクリックします。

try-using-product-advertising-api-of-amazon05

アクセスキー情報の「こちらのリンク」をクリック。

try-using-product-advertising-api-of-amazon06

先ほど登録したメールアドレスとパスワードでログインします。

try-using-product-advertising-api-of-amazon07

ポップアップが表示された場合は「セキュリティ認証情報に進む」を選択します。

try-using-product-advertising-api-of-amazon08

アクセスキー(アクセスキーIDとシークレットアクセスキー)を選択します。

try-using-product-advertising-api-of-amazon09

新しいアクセスキーの作成をクリック。

try-using-product-advertising-api-of-amazon10

表示されたポップアップの「アクセスキーを表示」をクリックすると、アクセスキーとシークレットキーが確認できます。
「キーファイルのダウンロード」をクリックで、アクセスキーとシークレットキーの入ったCSVファイルのダウンロードもできます。

try-using-product-advertising-api-of-amazon11

シークレットキーは作成した初回しか表示ができないようなので、扱いには注意して下さい。
 

Amazonアソシエイトの登録

アソシエイトタグを取得するためにAmazonアソシエイトに登録します。
無料アカウント作成をクリック。

try-using-product-advertising-api-of-amazon12

メールアドレスを入力し、「初めて利用します。」を選択して、「サインイン」をクリック。

try-using-product-advertising-api-of-amazon13

メールアドレスの再入力と名前・パスワードを入力して、「アカウントを作成する」をクリックします。

try-using-product-advertising-api-of-amazon14

アカウント情報を入力します。

try-using-product-advertising-api-of-amazon15

Webサイト情報を入力します。

try-using-product-advertising-api-of-amazon16

電話での認証を行います。
例えば電話番号が「0123456789」の場合、市外局番の「0」を抜いて、先頭に「+81」を追加して、「+81123456789」と入力します。
「今すぐ電話する」をクリックすると、PIN番号が表示されて自動音声の電話がかかってきますので、アナウンスに合わせてダイヤルをプッシュします。

try-using-product-advertising-api-of-amazon17

電話での認証が完了すると以下のような画面になるので、契約条件にチェックを入れて「完了」をクリックします。

try-using-product-advertising-api-of-amazon18

アソシエイトタグが取得できました。

try-using-product-advertising-api-of-amazon19

実際にAmazonアソシエイトで支払いを得るためにはAmazonの審査に通る必要がありますが、単にProduct Advertising APIを使うだけであれば審査に通らなくても使えるようです。
 

サイトに表示する

書籍のISBNを指定して、書籍情報を取得してみます。
取得のコードはこちらのページのものを流用・一部変更して使用しています。

PHP

<?php-->
define("ACCESS_KEY_ID"     , 'アクセスキー');
define("SECRET_ACCESS_KEY" , 'シークレットキー');
define("ASSOCIATE_TAG"     , 'アソシエイトタグ');
define("ACCESS_URL"        , 'http://ecs.amazonaws.jp/onca/xml');

$isbn = '9784865541144'; // 取得したい本のISBN番号を指定

$params = array(); 
$params['Service']        = 'AWSECommerceService';
$params['Version']        = '2011-08-02';
$params['Operation']      = 'ItemLookup';
$params['ItemId']         = $isbn;
$params['IdType']         = 'ISBN';
$params['SearchIndex']    = 'Books';
$params['AssociateTag']   = ASSOCIATE_TAG;
$params['ResponseGroup']  = 'ItemAttributes,Offers,Images,Reviews';
$params['Timestamp']      = gmdate('Y-m-d\TH:i:s\Z');

ksort($params);

$canonical_string = 'AWSAccessKeyId='.ACCESS_KEY_ID;
foreach ($params as $k => $v) {
	$canonical_string .= '&'.urlencode_RFC3986($k).'='.urlencode_RFC3986($v);
}

function urlencode_RFC3986($str) {
	return str_replace('%7E', '~', rawurlencode($str));
}

$parsed_url = parse_url(ACCESS_URL);
$string_to_sign = "GET\n{$parsed_url['host']}\n{$parsed_url['path']}\n{$canonical_string}";

$signature = base64_encode(
	hash_hmac('sha256', $string_to_sign, SECRET_ACCESS_KEY, true)
);

$url = ACCESS_URL.'?'.$canonical_string.'&Signature='.urlencode_RFC3986($signature);

$response = file_get_contents($url); //Amazonへレスポンス

$parsed_xml = null;
// レスポンスを配列で取得
if (isset($response)) {
	$parsed_xml = simplexml_load_string($response);
}

// Amazonへのレスポンスが正常に行われていたら
if ($response && isset($parsed_xml) && !$parsed_xml->faultstring && !$parsed_xml->Items->Request->Errors) {
	foreach ($parsed_xml->Items->Item as $current) {
		$title          = $current->ItemAttributes->Title; // タイトル
		$author         = $current->ItemAttributes->Author; // 著者
		$manufacturer   = $current->ItemAttributes->Manufacturer; // 出版社
		$imgURL         = $current->LargeImage->URL; // 本の表紙の大サイズのURL(サイズは小中大から選べる)  
		$bookURL        = $current->DetailPageURL; // Amazonの本のページのURL
		$releaseDate    = $current->ItemAttributes->ReleaseDate; // 出版日

		$authors = $author[0];
		// 著者が複数いる場合
		if (count($author) > 1) {
			for ($i = 1; $i < count($author); $i++) {
				$authors = $authors. ",". $author[$i];
			}
		}
	}
}

出力部分は以下のように記述しています。

<div class="book">
	<div class="book-image"><img src="<?php echo $imgURL; ?>"></div>
	<div class="book-data">
		<p class="book-title">
			<a href="<?php echo $bookURL; ?>" target="_blank">
			<?php echo $title; ?>
			</a>
		</p>
		<p class="book-author">著者:<?php echo $authors; ?></p>
		<p class="book-manufacturer">出版社:<?php echo $manufacturer; ?></p>
		<p class="book-manufacturer">出版日:<?php echo $releaseDate; ?></p>
	</div>
</div>

ISBNから書籍情報を取得するデモページ
 

【参考サイト】

 

このエントリーをはてなブックマークに追加

関連記事

1件のコメント

コメントを残す

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


コメントが承認されるまで時間がかかります。

2022年6月
 1234
567891011
12131415161718
19202122232425
2627282930