0. 準備
APIを利用するには、「アクセスキーID」と「アクセスシークレットキー」の2つが必要です。この辺を参考にアカウントを作成して取得。
Access Key IDの取得 – サービス利用の準備 – Amazon Web サービス
デザインが変わってるけど大体解ると思います。
ちなみにこれはAmazonオンラインショップのユーザーアカウントや、アフリエイトのアカウントとは違うので、それらとは別に取得しなくてはなりません。また既にAmazonでアフリエイトをやってる人は、メールアドレスを揃えないといけないらしいです。
1. ライブラリのインストール
適当に、こんな感じで。pear install Services_Amazon-beta
まだbeta版なので、「-beta」をお忘れ無く。
2. サンプルコード(商品検索)
ItemSearchメソッドを使います。require_once 'Services/Amazon.php';
$amazon = new Services_Amazon('アクセスキーID', 'アクセスシークレットキー', 'アソシエイトID');
$response = $amazon->ItemSearch('All', array('Keywords' => 'イカ娘'));
var_dump($response);
結果は配列に格納されて返ってきます。
array
'Request' =>
array
'IsValid' => string 'True' (length=4)
'ItemSearchRequest' =>
array
'Condition' => string 'New' (length=3)
'DeliveryMethod' => string 'Ship' (length=4)
'Keywords' => string 'イカ娘' (length=9)
'MerchantId' => string 'Amazon' (length=6)
'ResponseGroup' =>
array
...
'ReviewSort' => string '-SubmissionDate' (length=15)
'SearchIndex' => string 'All' (length=3)
'TotalResults' => string '243' (length=3)
'TotalPages' => string '25' (length=2)
'Item' =>
array
0 =>
array
'ASIN' => string 'B00522PHH2' (length=10)
(...)
APIの返答そのまま(XMLで返ってきます)が欲しい場合には、リクエストのあと、これで取得できます。
$rawResult = $amazon->getRawResult()
3. サンプルコード(特定の商品を取得)
ItemLookupメソッドを使います。require_once 'Services/Amazon.php';
$amazon = new Services_Amazon('アクセスキーID', 'アクセスシークレットキー', 'アソシエイトID');
$response = $amazon->ItemLookup('B00522PHH2');
var_dump($response);
結果は商品検索と同様に配列に格納されて返ってきます。
array
'Request' =>
array
'IsValid' => string 'True' (length=4)
'ItemLookupRequest' =>
array
'Condition' => string 'New' (length=3)
'DeliveryMethod' => string 'Ship' (length=4)
'IdType' => string 'ASIN' (length=4)
'MerchantId' => string 'Amazon' (length=6)
'OfferPage' => string '1' (length=1)
'ItemId' => string 'B00522PHH2' (length=10)
'ResponseGroup' =>
array
...
'ReviewPage' => string '1' (length=1)
'ReviewSort' => string '-SubmissionDate' (length=15)
'VariationPage' => string 'All' (length=3)
'Item' =>
array
0 =>
array
'ASIN' => string 'B00522PHH2' (length=10)
(...)
XMLが欲しい時も商品検索と同じ。
$rawResult = $amazon->getRawResult()
Tipsその1. 日本のAmazonでの結果が欲しいとき
Services_Amazonのデフォルトの地域はamazon.comになっているのでこれを設定してやる必要があります。メソッドは、「setBaseUrl()」で、以下のように設定すると日本のAmazonからの結果になります。require_once 'Services/Amazon.php';
$amazon = new Services_Amazon('アクセスキーID', 'アクセスシークレットキー', 'アソシエイトID');
$amazon->setBaseUrl('https://ecs.amazonaws.jp/onca/xml');
$response = $amazon->ItemSearch('All', array('Keywords' => 'イカ娘'));
var_dump($response);
Tipsその2. 商品の詳細情報が欲しいとき
オプション「ResponseGroup」に、「ItemAttributes」を設定します。require_once 'Services/Amazon.php';
$amazon = new Services_Amazon('アクセスキーID', 'アクセスシークレットキー', 'アソシエイトID');
$amazon->setBaseUrl('https://ecs.amazonaws.jp/onca/xml');
$response = $amazon->ItemSearch('All', array('Keywords' => 'イカ娘', 'ResponseGroup' => 'ItemAttributes'));
var_dump($response);
同様に画像が欲しいときは「Images」、売り上げ順位が欲しいときは「SalesRank」を指定します。
複数指定するときはカンマで区切って指定。
require_once 'Services/Amazon.php';
$amazon = new Services_Amazon('アクセスキーID', 'アクセスシークレットキー', 'アソシエイトID');
$amazon->setBaseUrl('https://ecs.amazonaws.jp/onca/xml');
$response = $amazon->ItemSearch('All', array('Keywords' => 'イカ娘', 'ResponseGroup' => 'ItemAttributes, Images, SalesRank'));
var_dump($response);
Tipsその3. 結果のソート
商品カテゴリとして「All」「Blends」以外を指定した場合に利用できるそうです。例えば、「Books」カテゴリで「いしいひさいち」を検索して発売日の新しい順に並べるとこうなります。
require_once 'Services/Amazon.php';
$amazon = new Services_Amazon('アクセスキーID', 'アクセスシークレットキー', 'アソシエイトID');
$amazon->setBaseUrl('https://ecs.amazonaws.jp/onca/xml');
$response = $amazon->ItemSearch('Books', array('Keywords' => 'いしいひさいち', 'Sort' => 'daterank'));
var_dump($response);
Tipsその4. 結果をキャッシュ
「setCache」メソッドと「setCacheExpire」メソッドを使います。require_once 'Services/Amazon.php';
$amazon = new Services_Amazon('アクセスキーID', 'アクセスシークレットキー', 'アソシエイトID');
$amazon->setBaseUrl('https://ecs.amazonaws.jp/onca/xml');
$amazon->setCache('file', array('cache_dir' => 'cache/')));
$amazon->setCacheExpire(3600);
$response = $amazon->ItemSearch('Books', array('Keywords' => 'いしいひさいち', 'Sort' => 'daterank'));
var_dump($response);
あ、PEAR::Cache必須です。Cache_Liteでは動きません。
その他の情報
基本的にはAmazonのドキュメントを眺めれば解りますが、解りづらければこちらを。Amazon Web サービス入門(Product Advertising API)
用途別に解りやすくまとまっています。
Services_Amazonのドキュメントはこちら。
Services_Amazon 0.8.0
参考になるか解りませんが。