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

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

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

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

スポンサーリンク



準備するもの

以下を準備します。

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

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

Amazonアソシエイトアカウントの登録作成 - Amazon輸出・輸入・ebay・越境EC 攻略ブログ
アソシエイトアカウントの登録方法を解説します。 アソシエイトアカウントの作成 アソシエイトアカウントの作成手順 アソシエイトアカウントの作成方法を説明します。 A...

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

AmazonPA-APIの使い方 アクセスキー、シークレットキーの取得 - Amazon輸出・輸入・ebay・越境EC 攻略ブログ
AmazonPA-APIとは? AmazonのPAAPI(Product Advertising API)を利用するには以下の取得が必要です。 Amazonアシエイトアカウントの登録 Product Advertisin …

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

Web開発環境MAMP(マンプ) Mac版のインストール方法と使い方 - Amazon輸出・輸入・ebay・越境EC 攻略ブログ
Web開発環境MAMP Mac版のインストール方法と使い方を初心者向けに解説します。 目次1 MAMPとは?1.1 MAMPは2つので提供1.2 MAMP PROとの違い2 MAMP(マンプ)のインスト...

プログラムの完成形

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

 

 

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

Amazon APIを使って商品検索するPHPコード【配布・コピペOK】
Amazon APIを使って商品検索するコードです。勉強ついでにいじってみたので、ソースコードと一緒に公開します。Amazon API使って商品情報を抽出して、アフィでうはうは...

コード

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が実行されました。

 

 

この記事が参考になりましたら、ぜひ「いいね!」、シェアをお願いします。
Pocket
[`evernote` not found]