Amazon API 商品検索するPHPコード

理屈抜きでAmazon APIを動かしてみます。

「SNSに記事投稿できる」できる程度のPCスキルでも「ソースコードをコピペしてきた、実際にプログラムを動かす」
を体験してもらばと思います。

私自身プログラマーではありませんので、PHPプログラムの中身の全くわからず、この記事を書いています。

準備するもの

以下を準備します。

  • アソシエイトタグ
  • アクセスキー
  • シークレットキー
  • PHPの実行環境

アソシエイトタグの取得は以下の記事を参考にしてください。

アクセスキー、シークレットキーの取得は以下の記事参考にしてください。

PHPを使うので、開発環境を準備してください。

プログラムの完成形

Amazonで「並行輸入品」で検索した結果を返します。

 

 

コードは「manablog」さんのブログから拝借しました。

コード

index.php

<!DOCTYPE html>  <html lang="ja">  <head>  <title>Amazon APIを使って商品検索するサンプルコード</title>  <meta charset="utf-8">  <!-- Bootstrap読み込み(スタイリングのため) -->  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css">  </head>  <body>    <?php    // Amazon APIのアクセスキーとシークレットキーを入力  define("Access_Key_ID", "XXXXXXXXXXXXXXXXXXXXXXXXXX");  define("Secret_Access_Key", "XXXXXXXXXXXXXXXXXXXXXXXXXX");    // アソシエイトIDの入力  define("Associate_tag", "XXXXXXXXXXXXXXXXXXXXXXXXXX");    // 本のカテゴリから「並行輸入品」で検索  ItemSearch("Books", "並行輸入品");    //Set up the operation in the request  function ItemSearch($SearchIndex, $Keywords){      // Amazon APIの仕様に沿ったリクエスト出力用のPHPスクリプト    include("base_request.php");      $amazon_xml = simplexml_load_string(file_get_contents($base_request));      foreach($amazon_xml->Items->Item as $item) {        $item_id = $item->ASIN; //ASIN      $item_title = $item->ItemAttributes->Title; // 商品名      $item_author = $item->ItemAttributes->Author; // 著者      $item_publicationdate = $item->ItemAttributes->PublicationDate; // 発売日      $item_publisher = $item->ItemAttributes->Publisher; // 出版社      $item_url = $item->DetailPageURL; // 商品のURL      $item_image  = $item->LargeImage->URL; // 商品の画像 ?>        <div class="container">        <div class="row">          <div class="col-xs-4 col-xs-offset-4">            <div class="col-xs-6">              <!-- 商品の画像を表示 -->              <img class="img-responsive" src="<?php                if (isset($item_image)) {                  echo $item_image; // サムネイル画像がある場合                } else {                  echo "http://bit.ly/29Ikwlm"; // サムネイル画像がない場合                }              ?>">            </div>            <div class="col-xs-6">              <ul>                <!-- 商品情報をリストで表示 -->                <li><a href="<?php echo $item_url; ?>"><?php echo $item_title; ?></a></li>                <li><?php echo $item_author; ?></li>                <li><?php echo $item_publicationdate; ?></li>                <li><?php echo $item_publisher; ?>)</li>              </ul>            </div>          </div>        </div>      </div>      <?php } // foreach end    } ?>    </body>  </html>

base_request.php

<?php  $baseurl = "https://webservices.amazon.co.jp/onca/xml";  // リクエストのパラメータ作成  $params = array();  $params["Service"]          = "AWSECommerceService";  $params["AWSAccessKeyId"]   = Access_Key_ID;  $params["Version"]          = "2013-08-01";  $params["Operation"]        = "ItemSearch";  $params["SearchIndex"]      = $SearchIndex;  $params["Keywords"]         = $Keywords;  $params["AssociateTag"]     = Associate_tag;  $params["ResponseGroup"]    = "ItemAttributes,Offers, Images";  $params["MinimumPrice"]     = "100";  $params["ItemPage"]         = "1";  $base_request = "";  foreach ($params as $k => $v) { $base_request .= "&" . $k . "=" . $v; }  $base_request = $baseurl . "?" . substr($base_request, 1);  $params["Timestamp"] = gmdate("Y-m-d\TH:i:s\Z");  $base_request .= "&Timestamp=" . $params['Timestamp'];  $base_request = "";  foreach ($params as $k => $v) {  	$base_request .= '&' . $k . '=' . rawurlencode($v);  	$params[$k] = rawurlencode($v);  }  $base_request = $baseurl . "?" . substr($base_request, 1);  $base_request = preg_replace("/.*\?/", "", $base_request);  $base_request = str_replace("&", "\n", $base_request);  ksort($params);  $base_request = "";  foreach ($params as $k => $v) { $base_request .= "&" . $k . "=" . $v; }  $base_request = substr($base_request, 1);  $base_request = str_replace("&", "\n", $base_request);  $base_request = str_replace("\n", "&", $base_request);  $parsed_url = parse_url($baseurl);  $base_request = "GET\n" . $parsed_url['host'] . "\n" . $parsed_url['path'] . "\n" . $base_request;  $signature = base64_encode(hash_hmac('sha256', $base_request, Secret_Access_Key, true));  $signature = rawurlencode($signature);  $base_request = "";  foreach ($params as $k => $v) { $base_request .= "&" . $k . "=" . $v; }  $base_request = $baseurl . "?" . substr($base_request, 1) . "&Signature=" . $signature;

MAMPのフォルダにファイル配置

MAMPのフォルダにファイル配置します。

  • index.php
  • base_request.php

コードの修正

index.phpを開きます。

  • アクセスキー
  • シークレットキー
  • アソシエイト

を入力し、保存します。

PHPの実行

ブラウザを開き、http://localhost でエンター

PHPが実行されました。