4.

署名認証の方法(PHPサンプル ItemSearch)

ページの作成
テンプレートを更新

ページの作成

親となるページを選択してください。

ページは必ず何かしらの親ページに紐づきます。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球

子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール

親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!

本稿はPA-APIのリクエストの際に署名認証をする方法を説明します。

 

リクエストの基本構文に対して、更に「Signiture」および「Timestamp」のパラメータを追加することで署名認証が可能となります。

SignitureにはRFC2104準拠のHMAC-SHA256ハッシュアルゴリズムの計算した秘密キーを、

Timestampには現在日時を指定します。

キーの発行が済んでいない方はこちらを参照。

また、パラメータはソートする必要があるので要注意。

サンプルは以下の通り。

/*
 * 基本情報
 */
const SERVICE = "AWSECommerceService";
const ACCESS_KEY = "自身のアクセスキーを入力";
const ASSOCIATE_TAG = "自身のアソシエイトIDを入力";
const SECRET_KEY = "自身の秘密キーを入力";
$operation = "ItemSearch";
$searchIndex = "Apparel";
$keywords = "Shirt";
$timestamp = gmdate('Y-m-d\TH:i:s\Z');

$params = array(
    "Service" => SERVICE,
    "AWSAccessKeyId" => ACCESS_KEY,
    "AssociateTag" => ASSOCIATE_TAG,
    "Operation" => $operation,
    "SearchIndex" => $searchIndex,
    "Keywords" => $keywords,
    "Timestamp" => $timestamp
);

//キーのソートを実行する。
//ソートをしないと思わぬエラーが発生するので要注意。
ksort($params);

//パラメータの整形
$pairs = array();
foreach ($params as $key => $value) {
    array_push($pairs, rawurlencode($key)."=".rawurlencode($value));
}
$canonicalQS = join("&", $pairs);


/*
 * 署名情報
 */
const REQUEST_METHOD = "GET";
const ENDPOINT = "webservices.amazon.co.jp";
const REQUEST_URI = "/onca/xml";
const ALGORITHM = "sha256";
$toSign =
    REQUEST_METHOD . "\n"
    . ENDPOINT . "\n"
    . REQUEST_URI . "\n"
    . $canonicalQS;

//RFC2104準拠のHMAC-SHA256ハッシュアルゴリズムで計算する
$signature = rawurlencode(base64_encode(hash_hmac(ALGORITHM, $toSign, SECRET_KEY, true))); 

//リクエストURL完成
$url = "http://" . ENDPOINT . REQUEST_URI . "?" . $canonicalQS . "&Signature=" . $signature;
echo "url: " . $url;

 

子ページ
子ページはありません
同階層のページ
  1. アカウントの作成とキーの生成
  2. PA-APIの使い方 リクエストの構造とパラメータの指定
  3. リクエストにスペースを含める方法
  4. 署名認証の方法(PHPサンプル ItemSearch)
  5. エラー一覧
  6. レスポンスの構造(ItemSearch)

最近コメントのあったページ

最近の質問

コメント一覧

コメントがありません

ログインしなければコメント投稿はできません。