スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

--/--/-- | スポンサー広告  TOP

PHP4 「Product Advertising API」をPHP4から使う。その4。Services/Amazon編。

リクエストがありましたので、連載第四弾となります。
1.PHP4 「Product Advertising API」をPHP4から使う。その一。HMACへの道。
2.PHP4 「Product Advertising API」をPHP4から使う。その2。HMAC-SHA256自作編。
3.PHP4 「Product Advertising API」をPHP4から使う。その3。HMAC-SHA256実装編。

本格的な利用ってことで、Services/Amazonでの実装例です。
まず、Services/Amazonの0.8.0以降のバージョンが必要になりますので、下記サイトからダウンロードをお願いします。
Services/Amazon最新
これをローカルに展開するか、PEARの従来のものと入れ替えてください。

では、実装例です。
その2で作ったHMAC-SHA256クラスを使います。

<?php
########################################################################
# アマゾン Services/Amazonの実装編
########################################################################
    
  // IDとキー。自分の情報を設定してください。
    define("SECRET_ACCESS_KEY","secret_access_key");
    define("SUBSCRIPTION_ID","subscription_id");
    define("ASSOCIATE_ID","associate-22");

    //  ライブラリ
    require_once("Services/Amazon.php");    //  Services/Amazonのインストール先に合わせて変更してください。
    require_once('hmac_sha256.php');

//----------------------------------------------
//  Services_Amazonの暗号化をオーバーライド
//----------------------------------------------
class Services_AmazonMHASH extends Services_Amazon {
    //  オーバーライド関数
    function _hash($string_to_sign, $secret_access_key)
    {
        if (function_exists('hash_hmac')) {
            echo "use hash_hmac<br>";
            return hash_hmac('sha256', $string_to_sign, $secret_access_key, true);
        } elseif (function_exists('mhash')) {
            echo "use mhash<br>";
            return mhash(MHASH_SHA256, $string_to_sign, $secret_access_key);
        }
        //  自前のハッシュ関数。
        echo "use local HMAC_SHA256<br>";
        $hmac_sha256 = new HMAC_SHA256($secret_access_key);
        return $hmac_sha256->hmac($string_to_sign);
    }
}

    //  アマゾンサービスのクラスを得る。オーバライドした方のクラスを使います。
    $amazon = new Services_AmazonMHASH(SUBSCRIPTION_ID, SECRET_ACCESS_KEY, ASSOCIATE_ID);
    $amazon->setLocale("JP");
   
    //  アマゾンで検索する。
    $item_list = $amazon->ItemSearch("VideoGames",
                array(  "BrowseNode" => "15782591",
                        "Sort" => '-releasedate',
                        "ResponseGroup" => 'Small,ItemAttributes,Images,OfferFull,Reviews,SalesRank',
                        "ItemPage" => 1));
    //  エラー?
    if (PEAR::isError($item_list)) {
        //  結果なし?
        if( FALSE !== mb_strpos($item_list->message,"リクエストに該当する結果がありません") ) {
        } else {
            //  エラー
            echo( $item_list->message );
        }
    }
    //  結果をダンプ
    $v = var_export($item_list, true);
    $v = str_replace(" "," ",$v);
    $v = str_replace("\n","<br>",$v);
    echo $v;
?>


以上です。
これで情報が取得できるはずですが、何か問題があれば教えてください。

以上です。お役に立ちましたら拍手をお願いします

2009/06/18 | 未分類COMMENT(1)TRACKBACK(0)  TOP

コメント

ありがとうございます。

わかりやすいスクリプトを公開してくださり、ありがとうございます。助かりました。

No:17 2009/07/25 12:05 | KJ #mQop/nM. URL編集 ]

コメントの投稿



管理者にだけ表示を許可する

 | BLOG TOP | 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。