12.モール別ランキングのYahooショッピングAPI関数(yahoo_function.php)のソース内容

「モール別ランキング」アプリのソース解説12回目です。前回は「共通関数」のプログラムの流れについて解説しました。今回は「yahoo_function.php(YahooショッピングAPI関数)」のプログラムソースの流れを簡単に解説します。

 

前回の記事

11.モール別ランキングの共通関数(common_function.php)のソース内容

アプリURL
モール別ランキング – 大手通販サイトのランキングを比較

 

yahoo_function(YahooショッピングAPI関数)

 

ソース内容

<?php
    //-------------------------------------------------------------------------------------------------------
    //Yahooショッピング情報取得APIを呼び出し、取得したデータをXML形式から配列に変換する
    //
    //パラメータ($type)呼び出すAPIの種類
    //パラメータ($options)APIに渡すパラメータ
    //-------------------------------------------------------------------------------------------------------
    function yahooFind($type = 'first', $options = array()) {
        //APIに渡すID情報の設定
        $keys = array(
            'appid'=>'取得したアプリケーションID',
            'affiliate_type'=>'vc',
            'affiliate_id'=>'取得したアフィリエイトID'
        );

        //アフィリエイトIDをURLエンコードする
        $keys['affiliate_id']=urlencode($keys['affiliate_id']);

        switch ($type) {
            case "first":
                //------------------------------------------------------------
                //商品コードで検索し詳細情報を取得
                //------------------------------------------------------------

                //取得するデータのサイズをLargeに指定
                $options['responsegroup']='large';
                //取得する画像のサイズを300×300にする
                $options['image_size']=300;

                //商品コード検索リクエストURL
                $req = 'http://shopping.yahooapis.jp/ShoppingWebService/V1/itemLookup?';

                //APIに渡すパラメータとID配列をマージ
                $api_params = array_merge($options,$keys);

                //配列形式のパラメータをURL エンコードされたクエリ文字列に変換
                $req .= http_build_query($api_params);

                //APIを呼び出しXMLを形式で取得
                $xml = simplexml_load_string(file_get_contents($req));

                //配列に変換
                $json = json_encode($xml);
                $yahoos = json_decode($json,TRUE);

                //結果を返す
                return $yahoos['ResultSet'];



            case "all":
                //------------------------------------------------------------
                //指定したパラメータで商品検索を行いショッピング情報を取得
                //------------------------------------------------------------

                //キーワード検索用パラメータの設定
                if(isset($options['q'])){
                    $options['query']=$options['q'];
                    unset($options['q']);
                }

                //取得する検索結果数の設定
                if(empty($options['limit'])){
                    $options['hits']=30;
                }else{
                    $options['hits']=$options['limit'];
                    unset($options['limit']);
                }

                //ページパラメータをオフセット(何件目から表示)に変換
                if(empty($options['page'])){
                    $options['offset']=1;
                }else{
                    $options['page']--;
                    $options['offset']=$options['page']*($options['hits']+1);
                    unset($options['page']);
                }

                //取得する画像のサイズを300×300にする
                $options['image_size']=300;

                //商品検索リクエストURL
                $req = 'http://shopping.yahooapis.jp/ShoppingWebService/V1/itemSearch?';

                //APIに渡すパラメータとID配列をマージ
                $api_params = array_merge($options,$keys);

                //配列形式のパラメータをURL エンコードされたクエリ文字列に変換
                $req .= http_build_query($api_params);

                //APIを呼び出しXMLを形式で取得
                $xml = simplexml_load_string(file_get_contents($req));

                //配列に変換
                $json = json_encode($xml);
                $yahoos = json_decode($json,TRUE);

                //検索結果のHIT数を判定し、0なら空の配列を返す
                if (empty($yahoos['@attributes']['totalResultsAvailable'])){
                    return [];
                }

                //検索結果の設定。検索結果が1件の場合、配列化する
                if (isset($yahoos['Result']['Hit'][0]['Name'])){
                    $retData=$yahoos['Result']['Hit'];
                }elseif (isset($yahoos['Result']['Hit']['Name'])){
                    $retData[]=$yahoos['Result']['Hit'];
                }else{
                    $retData=[];
                }

                return $retData;




            case "ranking":
                //------------------------------------------------------------
                //カテゴリ別ランキング情報を取得
                //------------------------------------------------------------

                //ページパラメータをオフセット(何件目から表示)に変換
                if(empty($options['page'])){
                    $options['offset']=1;
                }else{
                    $options['page']--;
                    $options['offset']=$options['page']*($options['limit']+1);
                    unset($options['page']);
                    unset($options['limit']);
                }

                //カテゴリランキングリクエストURL
                $req = 'http://shopping.yahooapis.jp/ShoppingWebService/V1/categoryRanking?';

                //APIに渡すパラメータとID配列をマージ
                $api_params = array_merge($options,$keys);

                //配列形式のパラメータをURL エンコードされたクエリ文字列に変換
                $req .= http_build_query($api_params);

                //APIを呼び出しXMLを形式で取得
                $xml = simplexml_load_string(file_get_contents($req));
                //配列に変換
                $json = json_encode($xml);
                $yahoos = json_decode($json,TRUE);

                //検索結果の設定。検索結果が1件の場合、配列化する
                if (isset($yahoos['Result']['RankingData'][0]['Name'])){
                    $retData=$yahoos['Result']['RankingData'];
                }elseif (isset($yahoos['Result']['RankingData']['Name'])){
                    $retData[]=$yahoos['Result']['RankingData'];
                }else{
                    $retData=[];
                }

                return $retData;



            case "category":
                //------------------------------------------------------------
                //カテゴリ情報を取得
                //------------------------------------------------------------

                //カテゴリID取得リクエストURL
                $req = 'http://shopping.yahooapis.jp/ShoppingWebService/V1/categorySearch?';

                //APIに渡すパラメータとID配列をマージ
                $api_params = array_merge($options,$keys);

                //配列形式のパラメータをURL エンコードされたクエリ文字列に変換
                $req .= http_build_query($api_params);

                //APIを呼び出しXMLを形式で取得
                $xml = simplexml_load_string(file_get_contents($req));

                //配列に変換
                $json = json_encode($xml);
                $yahoos = json_decode($json,TRUE);

                return $yahoos;

        }
      }

 

プログラムの流れ

8行目:

Yahooショッピングの各APIを呼び出す関数です

YahooショッピングAPIのマニュアルやAPIの詳細情報

 

10行目〜14行目:

ID情報の設定を行います。

アプリケーションIDの登録方法

アフィリエイトIDの変更と取得方法

 

20〜47行目:

商品コード検索(商品詳細)APIの取得処理。

リクエスト方法とパラメータの詳細

 

51〜115行目:

商品検索APIの取得方法。

Amazonや楽天API使用でも使用する検索キーワード(「q」)などは共通のパラメータ名にしているので、APIのパラメータに合わせて変換しています。

 

リクエスト方法とパラメータの詳細

 

117〜159行目:

カテゴリランキングAPIの取得方法。

リクエスト方法とパラメータの詳細

 

160〜181行目:

カテゴリIDAPIの取得方法

リクエスト方法とパラメータの詳細

 

 

 

次回はrakuten_function.php(楽天APIの関数ライブラリ)のソース内容を紹介します。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です