2013年3月21日木曜日

製品についてアクセサリの検索

製品についてアクセサリの検索

<?php
//ItemLookup
include_once('eng.php');

$para['Operation']='ItemLookup';
$para['IdType']='ASIN';
$para['ItemId']='B000IIOQOK';
$para['ResponseGroup']='Accessories';

$x=new amazon();
$x->para($para);
echo sprintf('<a href="%s">link</a>',$x->xml_url());

?>

指定したメーカーの商品を検索

指定したメーカーの商品を検索

<?php
include_once('eng.php');
//ItemSearch

$para['Operation']='ItemSearch';
$para['SearchIndex']='Electronics';
$para['ItemPage']='7';
$para['Manufacturer']='ASUSTek'; //商品に関連したメーカーの名前。名前の全部または一部。
$para['ResponseGroup']='Medium';

$x=new amazon();
$x->para($para);
echo $x->xml_url();
echo sprintf('<a href="%s"><br>link</a>',$x->xml_url());

?>

2013年3月20日水曜日

使用できないパラメータの組み合わせ

リクエストには、使用できないパラメータの組み合わせが含まれています。

SearchIndexがElectronicsである場合、 Brandは使えません。
SearchIndexがAllである場合、 Brandは使えません。


MerchantIdに指定した値は無効です。
['All','Amazon','Featured','FeaturedBuyBoxMerchant']などが有効な値の例です。


次のパラメータのうち、最低1個がリクエストに含まれている必要があります:'Keywords','Title','Power','BrowseNode','Artist','Author','Actor','Director','AudienceRating','Manufacturer','MusicLabel','Composer','Publisher','Brand','Conductor','Orchestra','TextStream','Cuisine','City','Neighborhood'



ブラウズノード下の商品を検索

ブラウズノード下の商品を検索


<?php
include_once('eng.php');

$para['Operation']='ItemSearch';
$para['SearchIndex']='Electronics';
$para['BrowseNode']='140474011';  //デジタルオーディオプレーヤー
$para['ResponseGroup']='Medium';


$x=new amazon();
$x->para($para);
echo $x->xml_url();
echo sprintf('<a href="%s"><br>link</a>',$x->xml_url());

?>

商品のブラウズノードの名前とIDの検索


商品のItemID(<ASIN>)からブラウズノードの名前とIDを返します。

<?php
//BrowseNodes レスポンスグループ
//https://images-na.ssl-images-amazon.com/images/G/09/associates/paapi/dg/RG_BrowseNodes.html
//レスポンスで返される商品に関連付けられているブラウズノードの名前とIDを返します。


include_once('eng.php');
$para['Operation']='ItemLookup';

$para['ResponseGroup']='BrowseNodes';
$para['ItemId']='B004ZVWGJ8';

$x=new amazon();
$x->para($para);
echo sprintf('<a href="%s">link</a>',$x->xml_url());

?>

2013年3月17日日曜日

共通のリクエストパラメータ


共通のリクエストパラメータ

次の表は、Product Advertising API の全てのオペレーションで使用できるリクエストパラメータを示しています。

パラメータ定義必須AssociateTag

アソシエイトを一意に識別する半角英数字の文字列。この文字列は、Amazon が商品の販売に対する紹介料を加算するアソシエイトを識別するのに使われます。アソシエイトを識別せずにリクエストを実行しても、紹介料は支払われません。AssociateTag を CartCreate リクエストに指定した場合、 CartCreateで返される PurchaseURL に AssociateTag の値が自動的に指定されます。 アソシエイトタグを取得するには、http://affiliate.amazon.co.jpをご参照ください。 詳細については、AssociateTag パラメータをご参照ください。

有効な値: アソシエイトを一意に識別するために Amazon によって割り当てられた半角英数字の文字列。カスタマーが購入した場合に紹介料を受け取れるようにするには、全てのリクエストでこの値を指定します。 いいえ
AWSAccessKeyId リクエストの送信者を一意に識別する半角英数字の文字列。AWSAccessKeyIdを取得するには、http://aws.amazon.com をご参照ください。

有効な値: Amazon によって割り当てられたアクセスキー ID はい
ContentType レスポンスのコンテンツ形式を指定します。通常、ContentTypeは、RES Tリクエストで、Style パラメータを XSLT スタイルシートに設定した場合にだけ変更します。例えば、Product Advertising API のレスポンスを HTML 形式に変換するには、ContentTypeを text/html に設定します。詳細については、Styleをご参照ください。

デフォルト: text/xml有効な値: text/xml, text html いいえ
MerchantId

マーチャントを一意に識別するために Amazon によって割り当てられた半角英数字の文字列。次の値を指定できます。有効な値:



All—レスポンスには、全てのマーチャントが出品している商品が含まれます。


特定のマーチャント—特定のマーチャント ID. Amazon は、マーチャント ID をマーチャントに割り当てます。


Amazon (デフォルト)—Amazon も特定のマーチャント ID を持っています。この ID は、デフォルト値であるため、他のマーチャントとは区別されています。つまり、リクエストでマーチャント ID を指定しない場合、Amazon が出品している商品だけが返されます。リクエストで結果が返されない場合は、MerchantIdの値を "All" に変更してみてください。


FeaturedBuyBoxMerchant—「ショッピングカートに入れる」ボタンに表示されるマーチャント。これは、商品の詳細ページの「ショッピングカートに入れる」ボタンに関連付けられた出品者です。「ショッピングカートに入れる」ボタンには商品の詳細ページのデフォルトの出品者が表示され、カスタマーがこのボタンをクリックすると、この出品者から商品を購入することになります いいえ
Operation 実行する Product Advertising API のオペレーションを指定します。

有効な値: Product Advertising APIのオペレーション。例えば、 ItemLookup はい
Service Product Advertising API のサービスを指定します。Product Advertising API の全てのオペレーションで、値は1つしかありません。

有効な値: AWSECommerceService はい
Style Product Advertising API のレスポンスで返されるデータの形式を制御します。Styleは、REST リクエストだけに関係します。このパラメータに "XML"(デフォルト)を設定すると、純粋な XML レスポンスが生成されます。このパラメータに XSLT スタイルシートの URL を指定すると、 XML レスポンスが変換されます。詳細については、以下をご参照ください。ContentType

デフォルト: XML

有効な値: XSLT スタイルシートの URL。 いいえ
Validate オペレーションを実行しないようにします。実際にリクエストを実行することなくテストを行うには、Validateパラメータを True に設定します。リクエストにValidateを設定する場合、値を True にする必要があります。デフォルト値は Falseです。リクエストを実際に実行しないと(Validate=True)、リクエストに対する一部のエラーしか返されません。これは、リクエストの実行時にしか発生しないエラー(例えばno_exact_matches)があるからです。

デフォルト: False

有効な値: True | False いいえ
Version 使用するProduct Advertising API ソフトウェアと WSDL のバージョンです。デフォルトでは、バージョン 2005-10-05 が使用されます。バージョンを指定する場合は、2009-11-02 などのバージョンを指定します。有効なバージョン番号の一覧については、Product Advertising API のリリースノートを参照してください。最新版の Product Advertising API は、デフォルトでは使われないので注意してください。

デフォルト: 2005-10-05

有効な値: 有効なWSDLバージョンの日付。例えば、2009-11-02 いいえ
XMLEscaping レスポンスをシングルパスとダブルパスのどちらでXMLエンコードするかを指定します。デフォルトでは, XMLEscapingは Single で、Product Advertising API のレスポンスは XML 内で1回だけエンコードされます。例えば、レスポンスデータにアンパサンド文字 (&) が含まれている場合、その文字は通常のXMLエンコード (&) で返されます。もし、XMLEscapingが Double の場合、同じアンパサンド文字が2回 XML エンコードされます(&amp;)。このXMLEscapingの値 Double は、XML 要素内のテキストをデコードしない、PHP などのクライアントで便利です。

デフォルト: Single

有効な値: Single, Double いいえ


AssociateTag

AssociateTagパラメータは Product Advertising API のリクエストにおいては、リモートショッピングカートを作成する場合以外ではオプションとなります。カートにアソシエイトタグを関連付けた場合は、そのショッピングカートに対する他の全てのカートオペレーションでアソシエイトタグを使用する必要があります。アソシエイトタグを使用しない場合、エラーが返されます。

もし CartCreate リクエストにアソシエイトタグを指定しないと、カスタマーがショッピングカート内の商品を購入した場合にアソシエイトとして紹介料を受け取ることができません。リモートショッピングカートを作成したあとにアソシエイトタグを追加する場合は、PurchaseURL の値に手動で追加する必要があります。

AssociateTagは、各国サイトで固有です。つまり、アソシエイトとして紹介料を受け取りたいサイトごとにアソシエイトタグを取得する必要があります。例えば、US サイトのアソシエイトタグを JP サイトで使用しても、アソシエイトの紹介料を得ることはできません。

アソシエイトタグは間違えないように指定してください。値が間違っていてもエラーは返されません。

Product Advertising API で提供される画像

Product Advertising API で提供される画像

Amazon には、商品の画像が何百万点も登録されています。次の画像の URL からわかるように、これらの画像は、画像提供専用の数台のサーバ上に格納されています。http://images.amazon.com/images/P/B000BNM5OA.01_SL110_.jpg

全ての画像のURLは同じ構造になっています。

URLの部分

説明
エンドポイント
画像サーバの URL です。どの画像でも、http://images.amazon.com/images/P/と表記されます。
英数字の文字列

B000BNM5OA.01.SWCH など、画像を一意に識別する ID。01 は国コードです。画像に表示される言語は各国ごとに異なるため、国コードは重要です。次に示すのは、国コード値の一覧です。
01 - US, CA
02 - UK
03 - DE
08 - FR
09 - JP

サフィックス
返される画像のサイズを指定します。サフィックスの種類は次の通りです。
大: _SL500_.jpg
中: ._SL160_.jpg
小: ._SL110_.jpg
サムネイル: ._SL110_.jpg
特小: ._SL75_.jpg
極小 (スウォッチ): _SL30_.jpg


注意

小とサムネイルのサイズは同じです。

サフィックスを見るとわかるように、数値は、画像の長辺の最大ピクセル数を表しています。通常、Amazon の画像は、ファイル名で指定されたピクセル数で構成されています。つまり、_SL500_.jpg の画像は、長辺の長さが500ピクセルになります。Amazon 以外から提供される画像は、正確に500ピクセルであるとは限りません。返される画像は、画像のファイル名に指定されているサイズ以下で、種類としては最も大きいものです。例えば、_SL500_.jpg の画像でも、長辺が400ピクセルしかない場合があります。


1インチあたりのピクセル数は96です。

次の例は、大中小の各サイズの画像を並べて相対的な大きさを示しています。






全て同じ画像でサイズだけが異なります。上の画像はいずれも画像IDが同じで、サイズを示すサフィックスだけが異なります。各画像は、その次に大きなサイズの約半分になっています。


画像は増えたり、なくなったりするため、画像の URL をアプリケーションにハードコーディングすることは、お勧めできません。Images または VariationImages レスポンスグループを使用して画像を返すことで、最新の画像 URL であることが保証されます。画像の URL を取得したら、画像名のサフィックスを書き換えるだけで異なるサイズの画像を表示することができます。これにより、異なるサイズの画像ごとにリクエストを送信する必要がなくなります。


参考URL
https://images-na.ssl-images-amazon.com/images/G/09/associates/paapi/dg/UnderstandingImagesSuppliedbyA2S.html


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