2013年3月17日日曜日

Amazon API署名の作成




とりあえず成功した。


オペレーション(Operation)
          ItemSearch オペレーションでは、1つまたは複数のサーチインデックス
          に対して、検索条件を満たす商品を返します。

          ItemSearch リクエストで、SearchIndexパラメータが"All" の場合、
          リクエスト内で使用できるのは次のパラメータのみです。
          Keywords


レスポンスグループ(ResponseGroup)
        $para['ResponseGroup']='ItemAttributes';
        $para['ResponseGroup']='Images';
        $para['ResponseGroup']='Large';
        $para['ResponseGroup']='Medium';


<?php
//REST リクエストの構造
//http://associates-amazon.s3.amazonaws.com/signed-requests/helper/index.html

$para['Operation']='ItemSearch';
$para['SearchIndex']='All';
$para['Keywords']='WebAPI';

$x=new amazon();
$x->para($para);
echo '<br>';
echo $x->signed_url();


class amazon{
        public $org_url;                 //署名する前のURL
        public $sig_url;                 //署名を追加したURL
        public $sigend_para;         //署名にするためのストリング
        public $secret_key='************************************';         //署名キー

        public function para($addpara) {
                $apiurl='http://ecs.amazonaws.jp/onca/xml?';
                $para['AssociateTag']='********-22';
                $para['Service']='AWSECommerceService';
                $para['AWSAccessKeyId']='**********************';
                $para['Version']='2010-09-01';
                //$para['Timestamp']=gmdate('Y-m-d\TH:m:s\.000\Z');
                $para['Timestamp']=gmdate('c');
                $para=$para + $addpara;
                ksort($para);
                $this->sigend_para=http_build_query($para);
                $this->org_url=$apiurl.http_build_query($para);
                //return $this->org_url;

        }


        public function signed_url(){
                $me="GET\necs.amazonaws.jp\n/onca/xml\n";
                $temp=$me.$this->sigend_para;
                $sigendkey=base64_encode(hash_hmac('sha256', $temp, $this->secret_key, true));
                $this->sig_url=$this->org_url.'&Signature='.rawurlencode($sigendkey);
                return $this->sig_url;
        }

}

?>


詳細はこちらに参考してください。

https://images-na.ssl-images-amazon.com/images/G/09/associates/paapi/dg/index.html
https://images-na.ssl-images-amazon.com/images/G/09/associates/paapi/dg/CHAP_ApiReference.html




2 件のコメント:

bai xiao さんのコメント...

一部訂正
訂正前
$this->sigend_para=http_build_query($para);
$this->org_url=$apiurl.http_build_query($para);

訂正後
  $this->sigend_para=str_replace('+','%20',http_build_query($para));
  $this->org_url=$apiurl.$this->sigend_para;

訂正しないと
 正確に結果を検索出来ない。

bai xiao さんのコメント...

https://images-na.ssl-images-amazon.com/images/G/09/associates/paapi/dg/index.html?CHAP_ApiReference.html