AmazonのProduct Advertising APIを使ってみた(その2)商品情報の取得
前回、AmazonのProduct Advertising APIを使ってみた(その1)ではProduct Advertising API Signed Requests Helperを利用してXMLという形で商品データを取得しました。今回は画面からカテゴリー(本とかCDなど)とキーワードを入力できるようにして、それを元に商品情報を取得してみます。
これが検索条件入力画面のリスト。
[php]
Choose a Category |
Enter Keywords |
[/php]
そしてこれが商品情報を取得するリスト。画面から入力されたSearchIndexとKeywordsを受け取り処理を行います。
[php]
$value) {
$paramStr .= “&” . urlencode($key) . “=” . urlencode($value);
}
//一番前の&を削除
$paramStr = substr($paramStr, 1);
$parseUrl = parse_url($awsUrl);
$baseStr = “GET\n{$parseUrl[‘host’]}\n{$parseUrl[‘path’]}\n{$paramStr}”;
$signature = base64_encode(hash_hmac(“sha256”, $baseStr, “シークレットアクセスキーを入力”, true));
$url = $awsUrl . “?” . $paramStr . “&Signature=” . urlencode($signature);
echo $url . “
“;
//Catch the response in the $response object
$response = file_get_contents($url);
$parsed_xml = simplexml_load_string($response);
echo “
"; print_r($parsed_xml); echo "
“;
}
?>
[/php]
33行目で連想配列に入れたパラメータをソートしていますが、これはAmazonのマニュアルページに次のような一文があるためソートを行っています。
44行目でGETや\nを文字列として結合していますが、これもマニュアルページに次のように書かれているのでこのような処理を行っています。「改行をそのまま使用してください」というのが\nを使っている理由です。
GET
webservices.amazon.com
/onca/xml
45行目では署名文字列を得るためにHMAC-SHA256ハッシュアルゴリズムを使用してハッシュ値を計算しています(ちなみにこの署名は2009年8月15日以前は必要ありませんでした)。hash_hmac関数の第三引数にはAmazonより発行されたシークレットアクセスキー(Secret Access Key)を指定します。また、このハッシュ値にはプラス(+)やイコール(=)が含まれるため、次の行でurlencode関数を使ってエンコードを行います。あとはfile_get_contents関数でリクエスト内容(XML)を取得して、パースし配列として画面に出力します。
ここではXMLを配列しましたが、取得した情報をXMLのまま扱いたいということであれば52~55行目は必要ありません。配列でやるかXMLでやるかは好みじゃないでしょうか。次回は取得した情報を使ってECサイト風に画面を作りこんでみる予定です。