PEAR::Services_Amazonを使用。
Amazonサーバにリクエストを送信して、結果を取得するまでの一連の作業。
細かいことは別途記載(の、予定・・・)
Services/Amazon.phpをインクルード
インクルードってかrequireなんだが・・・。
require_once('Services/Amazon.php');
Services_Amazonオブジェクトを作成
コンストラクタの引数は接続鍵と秘密鍵の2つ。
他に必要な情報もついでに設定。
define('PAAPI_ACCKEY', 'ごにょごにょ'); // どこぞでdefineしとく
define('PAAPI_SECKEY', 'ごにょごにょ');
$amazon = new Services_Amazon(PAAPI_ACCKEY, PAAPI_SECKEY);
$amazon->setLocale('JP');
$amazon->setVersion('2011-08-01');
リクエストに必要な情報を作成
setVersionの引数が'2011-08-01' の場合、アソシエイトタグが必要。
キーワードなどでマルチバイト文字列を含む場合は、エンコーディングをUTF-8にする必要がある。
(以下はItemSearch の例で)
$keyword = mb_convert_encoding('キーワード', 'UTF-8'); // 必要なら・・・
$options = array(
'AssociateTag' => 'ほにゃらら'
, 'ResponseGroup' => 'Medium'
, 'MerchantId' => 'All'
, 'Condition' => 'All'
, 'BrowseNode' => '465610'
, 'MinimumPrice' => 100
, 'MaximumPrice' => 1000
, 'Keywords' => $keyword
, 'Sort' => 'salesrank'
, 'ItemPage' => 1
);
こんな感じかな?
リクエスト送信
リクエストの内容に応じてServices_Amazonオブジェクトの呼び出す関数や引数が異なる。
戻り値はAmazonさんからのレスポンス(を、Services_Amazonが連想配列にパースしたもの)。
(以下はItemSearch の例で)
$searchIndex = 'Blended';
$result = $amazon->ItemSearch($searchIndex, $options);
正直、searchIndex とBrowseNode の両方を指定する意味がわからない。
まぁBrowseNode は必須ではないのだが。
レスポンスの確認
if (PEAR::isError($result)) {
echo 'リクエストの送信に失敗してる';
} else if (!isset($result['Request']['IsValid'])) {
echo 'なんかおかしい';
} else if (strcmp($result['Request']['IsValid']), 'True') != 0) {
echo 'Amazonさんから何らかのエラーをくらった';
}
print_r($result); // エラーがあってもいちおう結果表示
こんなとこかな?
最終更新:2011年10月28日 13:59