最終更新:2012-02-01 (水) 18:40:59 (4460d)
amazon.inc.php
Top / amazon.inc.php
Amazon Product Advertising API対応
2009/08/15からAmazon Product Advertising APIになったので対応
//秘密鍵をdefine define('SECRET_ACCESS_KEY_ID','Secret Access Key'); //新APIのURLを作成 function plugin_amazon_get_api_url($asin){ /* define('PLUGIN_AMAZON_XML', 'http://ecs.amazonaws.jp/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=' . AWS_ACCESS_KEY_ID . '&Operation=ItemLookup&Version=2007-10-29&ItemId='); */ $baseurl = 'http://ecs.amazonaws.jp/onca/xml'; $params = array(); $params['Service'] = 'AWSECommerceService'; $params['AWSAccessKeyId'] = AWS_ACCESS_KEY_ID; $params['Version'] = '2009-03-31'; $params['Operation'] = 'ItemLookup'; $params['ItemId'] = $asin; // Timestamp パラメータを追加します // - 時間の表記は ISO8601 形式、タイムゾーンは UTC(GMT) $params['Timestamp'] = gmdate('Y-m-d\TH:i:s\Z'); // パラメータの順序を昇順に並び替えます ksort($params); // canonical string を作成します $canonical_string = ''; foreach ($params as $k => $v) { $canonical_string .= '&'.urlencode_rfc3986($k).'='.urlencode_rfc3986($v); } $canonical_string = substr($canonical_string, 1); // 署名を作成します // - 規定の文字列フォーマットを作成 // - HMAC-SHA256 を計算 // - BASE64 エンコード $parsed_url = parse_url($baseurl); $string_to_sign = "GET\n{$parsed_url['host']}\n{$parsed_url['path']}\n{$canonical_string}"; $signature = base64_encode(hash_hmac('sha256', $string_to_sign, SECRET_ACCESS_KEY_ID, true)); // URL を作成します // - リクエストの末尾に署名を追加 $url = $baseurl.'?'.$canonical_string.'&Signature='.urlencode_rfc3986($signature); return $url; } function plugin_amazon_get_asin_title() { ... //取得URL書き換え $url = plugin_amazon_get_api_url($asin); ... }
参考
2011年10月26日を発効日とするAPIの仕様変更
function create_url($asin) { $header = "GET\nwebservices.amazon.co.jp\n/onca/xml\n"; $param = "AWSAccessKeyId=" . AWS_ACCESS_KEY_ID; //この行を追加 $param .= "&AssociateTag=" . AMAZON_AID; $param .= "&ItemId=" . $asin; $param .= "&Operation=ItemLookup"; $param .= "&ResponseGroup=" . rawurlencode("ItemAttributes,Images,Offers"); $param .= "&Service=AWSECommerceService"; $param .= "&Timestamp=" . rawurlencode(gmdate('Y-m-d\TH:i:s\Z')); $param .= "&Version=2009-03-31"; $sign = rawurlencode(base64_encode(hash_hmac('sha256',$header.$param,SECRET_ACCESS_KEY,true))); $url = AMAZON_XML . $param . "&Signature=" . $sign; return $url; }