Product Advertising API リクエストのチュートリアル

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
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。