てるてるブログ

てるてるぼうずの日常やらお勉強やら

Amazon API

Posted on | 9月 3, 2012 | No Comments

api

APIいじり継続中。
あれこれ手を出してどれも中途半端になりそうな感じですね。

とりあえず今度はAmazon API。

この手のAPI、一度仕様が変わるとその度に右往左往しなきゃならないのが悩ましいとこ。

最近、久々にログインしようと思ったらクレジットカードの登録を求められて思わずウィンドウ閉じちゃってみたり…
なんか課金体系が変わったっぽいですね。…いつからだろう?
しばらく情報収集を怠っていたからなぁ。


Amazon APIでも利用には登録が必要でAccess Key IDとSecret Access Key、アフィリエイトで必要なAssociate IDが必要です。
とりあえずはAmazon アソシエイトに参加されている方は、Amazon アソシエイトのサイトの上部タグ「Product Advertising API」をクリック。
そのページから登録ページへ進めます。
詳しくはググってみて下さい。

$access_key_id = 'アクセスキー ID';
$secret_access_key = 'シークレットアクセスキー';
$associate_tag = 'アソシエイトID';

//基本リクエスト
$baseurl = 'http://ecs.amazonaws.jp/onca/xml';

$params = array();
$params['Service']        = 'AWSECommerceService';
$params['AWSAccessKeyId'] = $access_key_id;
$params['secret_key'] = $secret_access_key ;
$params['AssociateTag']   = $associate_tag ;
$params['Operation']   = 'ItemSearch'; // ← ItemSearch オペレーションの例
$params['SearchIndex']  = 'All';
$params['Keywords']  = 'てるてるぼうず'; // ← 文字コードは UTF-8
$params['ResponseGroup']  = 'Small,Images';
$params['Timestamp'] = gmdate('Y-m-d\TH:i:s\Z');

//パラメータの順序を昇順に並び替えます
ksort($params);

$query_string = '';
foreach($params as $k => $v){
	$query_string .= '&' . urlencode_RFC3986($k) . '=' . urlencode_RFC3986($v);
}
$query_string = substr($query_string, 1);

// 署名を作成
$parsed_url = parse_url($baseurl);
$string_to_sign = "GET\n{$parsed_url['host']}\n{$parsed_url['path']}\n{$query_string}";
$signature = base64_encode(hash_hmac('sha256', $string_to_sign, $secret_access_key, true));

// URL を作成
$url = $baseurl.'?'.$query_string.'&Signature='.urlencode_rfc3986($signature);

// RFC3986 形式で URL エンコードする関数
function urlencode_RFC3986($str){
	return str_replace('%7E', '~', rawurlencode($str));
	}

//XMLの読み込み
$url_xml = simplexml_load_file($url);

echo '<ul>';
//各要素へのアクセス
foreach($url_xml -> Items -> Item  as $item) {
$detailPageUrls = $item -> DetailPageURL;//詳細ページアドレス
$Name = $item ->  ItemAttributes -> Title;//商品タイトル
$image_Small = $item -> SmallImage -> URL;//画像(小)アドレス
	
echo '<li>
<a href="'.$detailPageUrls.'" target="_blank">'.$Name.'</a><br />';
	if(empty($image_Small)){
		echo '画像無し';
	}else{
		echo '<img src="'.$image_Small.'" />';
	}
	}
echo '</ul>';

一回のリクエストで10件までかな?
残りのページを読み込みたい場合はItemPageを指定すればいいはず。

検索フォーム付きのもそのうち…

参考にさせていただいたのが下記のサイト様。

トラックバックURL:

Comments

Leave a Reply





*

About

てるぼうず

てるてるぼうずな日常やらお勉強やら

旧ブログ倉庫 »
旧ブログの記事をお探しの方はこちらから

Admin