13.モール別ランキングの楽天市場API関数(rakuten_function.php)のソース内容

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

 

前回の記事

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

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

 

rakuten_function(楽天市場API関数)

 

ソース内容

<?php
    //----------------------------------------------------------------------
    //楽天市場系APIを呼び出し、取得したデータをXML形式から配列に変換する
    //
    //パラメータ($type)呼び出すAPIの種類
    //パラメータ($options)APIに渡すパラメータ
    //----------------------------------------------------------------------
    function rakutenFind($type = 'first', $options = array()) {

        //APIに渡すID情報の設定
        $keys = array(
            'applicationId'=>'13c466b4691b10737384e9cb59d28292',
            'affiliateId'=>'041cf938.61e1b635.041cf939.f315c4e9',
            'format'=>'xml',
            'formatVersion'=>'2'
        );

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

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

        //取得するジャンルの設定
        if(isset($options['category_id'])){
            $options['genreId']=$options['category_id'];
            unset($options['category_id']);
        }

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

                //ジャンル毎の商品数を取得するフラグを設定
                $options['genreInformationFlag']=1;

                //楽天商品検索のリクエストURL
                $req = 'https://app.rakuten.co.jp/services/api/IchibaItem/Search/20140222?';

                //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));

                //XML形式から配列に変換
                $json = json_encode($xml);
                $rakutens = json_decode($json,TRUE);

                //検索結果のカウント数を判定し、0なら空の配列を返す
                if (empty($rakutens['count'])){
                    return [];
                }

                if ($type=="first"){
                    //先頭データのみ返す
                    return $rakutens['Items']['Item'];
                }else{
                    //取得した全データを返す
                    //検索結果の設定。検索結果が1件の場合、配列化する
                    if (isset($rakutens['Items']['Item'][0])){
                        $retData=$rakutens['Items']['Item'];
                    }elseif (isset($rakutens['Items']['Item'])){
                        $retData[]=$rakutens['Items']['Item'];
                    }else{
                        $retData=[];
                    }
                    return $retData;

                }
            case "ranking":
                //------------------------------------------------------------
                //商品ランキング情報を取得
                //------------------------------------------------------------


                //楽天商品検索のリクエストURL
                $req = 'https://app.rakuten.co.jp/services/api/IchibaItem/Ranking/20120927?';

                //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));


                //XML形式から配列に変換
                $json = json_encode($xml);
                $rakutens = json_decode($json,TRUE);

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

            case "category":
                //------------------------------------------------------------
                //ジャンル情報を取得
                //------------------------------------------------------------


                $req = 'https://app.rakuten.co.jp/services/api/IchibaGenre/Search/20140222?';

                //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));

                //XML形式から配列に変換
                $json = json_encode($xml);
                $rakutens = json_decode($json,TRUE);

                return $rakutens;

            case "tag":
                //------------------------------------------------------------
                //タグ情報を取得
                //------------------------------------------------------------
                if (isset($options['tags'])){
                    for($i=0;$i<count($options['tags']);$i++){
                        if ($i>=10) break;

                        $tags[]=$options['tags'][$i];
                    }
                    unset($options['tags']);

                    $options['tagId']=implode(',',$tags);
                }

                $req = 'https://app.rakuten.co.jp/services/api/IchibaTag/Search/20140222?';

                //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);
                $rakutens = json_decode($json,TRUE);

                return $rakutens['root'];

        }
      }

プログラムの流れ

8行目:

楽天市場の各APIを呼び出す関数です

楽天市場APIの一覧

 

11行目〜16行目:

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

アプリIDの発行

 

18〜36行目:

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

 

38〜84行目:

楽天商品検索APIのリクエストと取得処理。

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

 

85〜117行目:

楽天商品ランキングAPIのリクエストと取得方法。

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

 

118〜140行目:

楽天ジャンル検索APIのリクエストと取得方法。

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

 

141〜174行目:

楽天タグ検索APIのリクエストと取得方法

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

 

 

 

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

コメントを残す

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