いつかエンジニアになりたい

Nothing is too late to start

Amazon Product Advertising API を利用してみる

Amazonの商品情報をAPIから取得できるかどうかを試してみる。

Amazon Product Advertising API とは

Amazonの商品情報を利用して独自のEコマースサイトを作成するためのAPI群。
これにより、APIを叩くだけでAmazonの商品情報をはじめ、様々な情報を取得できる。

Amazon Product Advertising API を利用する

詳細については、以下のサイトが非常に分かりやすいので、参考にしてください。
Amazon Web サービス入門(Product Advertising API)

APIを利用する上で必要なもの
  • トラッキングID

 事前にAmazonアソシエイト・プログラムへの参加し、トラッキングIDを取得 *1
 参考:Amazonアソシエイト・プログラムへの参加

  • Access Key ID, Secret Access Key

 Product Advertising API アカウントを作成し、上記のID, Keyを取得
 参考:Access Key IDとSecret Access Keyの取得

Product Advertising APIREST APIなので、XMLが取得できるかどうかだけなら、
ブラウザのURL部分に下記のリクエストを入力すればXMLが取得できるはず。
※AccessKeyID部分を自分のAccess Key IDに置き換える
※プログラムからXMLを取得する際は、署名などを加えたりしてめんどくさい。

http://ecs.amazonaws.jp/onca/xml?
Service=AWSECommerceService
&AWSAccessKeyId=[AccessKeyId]
&Operation=ItemSearch
&SearchIndex=Books
&Title=Harry%20Potter
&Version=2009-07-01
APIを利用してみる
yum -y install httpd php pear
pear install Services_Amazon-0.9.0

※Amazonにリクエストを送る際に、タイムスタンプ、署名を加える必要があるので、今回は、PearServices_Amazonを利用する。

  • Services_Amazonを利用し、リクエストを取得する
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8" />
    <title>Amazon API</title>
</head>
<body>
    <h1>Amazon API</h1>
    <form action="" method="post">
	<input type="text" placeholder="Keyword" name="test">
	<button type="submit" class="btn">Submit</button>
    </form>
	
    <?php
    require_once "Services/Amazon.php";

    $amazon = new Services_Amazon();
    $amazon->setLocale("JP");
    $amazon->setAccessKeyID("****************");
    $amazon->setSecretAccessKey("*************************");
    $amazon->setAssociateID("************");
    $options = array();
    $options['Keywords'] = $_POST['test'];
    $options['Sort'] = 'salesrank';
    $options['ResponseGroup'] = 'ItemIds,ItemAttributes,Images';
	
    $result = $amazon->ItemSearch('Books', $options);
	
    if(!empty($_POST['test'])){
	if (PEAR::isError($result)) { // Error
		$error = $amazon->getError();
		echo $error['Code'];
		echo $error['Message'];
	} else { // Correct
		echo "<pre>";
		var_dump($result);
		echo "</pre>";
	}
    }
    ?>
</body>
</html>

詳しい関数の説明については、Services_Amazon を参照。
XMLで取得したい情報はResponseGroupで指定。

今回はAmazon Product Advertising APIを利用して、商品の検索しか行なっていませんが、他にもカートの追加、削除であったり色々とできるみたいなので、気になる方は調べてみてください。


以上

*1:Amazonアソシエイト・プログラムへの参加の為に、利用するWEBサイトの情報を入力するんだけど、しっかりとしたサイトや目的がないとAmazonの審査が通らない。審査に落ちても確認はできないがAPIは利用できるっぽいので、審査が通らない場合は、トラッキングID, Access Key ID, Secret Access Keyは確認したらメモしといたほうが良い。