作業でちょこっと楽天APIを触る機会があったのでメモメモ
っつか楽天APIにSDKがあるけど、あんなややこしいの使わなくてもPHPで簡単に使えるよね?
あんなの使ったら余計にややこしくなるし処理が重くなるじゃん?って事でFile_get_contentsを使ってサクッと商品表示してみたいとおもいます。
楽天APIとは?
楽天APIとは「楽天商品検索API」の事を言います。
楽天市場のサイトを利用しないでプログラムから自動的にアフィリエイトコードを取得してアフィリエイトを簡略化させる為のAPIです(アプリケーションインターフェイス)
PHPで以下のサンプルコードを実行する事でキーワードやランキングの結果を取得出来て、しかもアフィリエイトコードまで自動でゲット出来るスグレモノです。
今回紹介するAPIは楽天商品検索APIと楽天商品ランキングAPIだけですが、その他の楽天APIには以下の物があります。
- 楽天市場系API
- 楽天市場商品検索API
- 楽天市場ジャンル検索API
- 楽天市場タグ検索API
- 楽天市場ランキングAPI
- 楽天商品コード検索API
- 商品価格ナビ製品検索API
- 楽天ブックス系API
- 楽天ブックス総合検索API
- 楽天ブックス書籍検索API
- 楽天ブックスCD/Blu-ray検索API
- 楽天ブックス洋書検索API
- 楽天ブックス雑誌検索API
- 楽天ブックスゲーム検索API
- 楽天ブックスソフトウェア検索API
- 楽天ブックスジャンル検索API
- 楽天トラベル系API
- 楽天トラベル施設検索API
- 楽天トラベル施設情報API
- 楽天トラベル空室検索API
- 楽天トラベル地区コードAPI
- 楽天トラベルキーワード検索API
- 楽天トラベルホテルチェーンAPI
- 楽天トラベルランキングAPI
- 楽天ブックマーク系API
- お気に入りブックマーク取得API
- お気に入りブックマーク追加API
- お気に入りブックマーク削除API
- 楽天レシピ系API
- 楽天レシピカテゴリ一覧API
- 楽天レシピカテゴリ別ランキングAPI
- 楽天Kobo系API
- 楽天Kobo電子書籍検索API
- 楽天Koboジャンル検索API
- 楽天GORA系API
- 楽天GORAゴルフ場検索API
- 楽天GORAゴルフ場詳細API
- 楽天GORAプラン検索API
- その他のAPI
- 楽天ダイナミックアドAPI
- 楽天ダイナミックアドAPI トラベル
- 楽天アフィリエイト高料率ショップAPI
楽天商品検索 API サンプルコード
<?php ini_set('display_errors','On'); ini_set('error_reporting', E_ALL ^ E_NOTICE); @require_once('dBug.php'); $apkey = 'ooooooooooo'; $affID = 'oooooooooooooo'; $keyword = urlencode('キーワード'); $reqest = 'https://app.rakuten.co.jp/services/api/IchibaItem/Search/20170706?'; $reqest.= 'applicationId='.$apkey; $reqest.= '&keyword='.$keyword; $reqest.= '&formatVersion=2&affiliateId='.$affID; $options['ssl']['verify_peer'] = false; $options['ssl']['verify_peer_name'] = false; $get = file_get_contents($reqest, false, stream_context_create($options)); new dBug(json_decode($get,true));
上記が基本的な楽天APIを利用して商品検索結果を出すサンプルコードです。
パラメーターについては本家の楽天APIのページを参考にして貰うとして、たったこれだけで楽天のアフィリエイトURLも出せてしまうのは有り難いですね。
楽天APIのレスポンスコードの取得方法
上記が楽天商品検索APIを叩いた時のレスポンスヘッダー部分です。
検索キーワードは『占い』でやってみました。
HIT数は制限を掛けて30件だけ取得してます。
そして以下がが商品情報取得部分です。※クリックで拡大出来ます。
レスポンス取得するサンプルコード
$result = json_decode($get,true); foreach ($result['item'] as $value) { echo "商品名:".$value['itemName']; echo "キャッチコピー:".$value['catchcopy']; echo "商品コード:".$value['itemCode']; echo "価格:".$value['itemPrice']; echo "商品説明:".$value['itemCaption']; echo "商品URL(afiURL):".$value['itemUrl']; echo "ショップURL(afiURL):".$value['shopUrl']; echo "商品画像:".$value['mediumImageUrls']['0']; echo "アフィリエイトURL:".$value['affiliateUrl']; echo "画像フラグ:".$value['imageFlag']; echo "明日楽対応地域:".$value['asurakuArea']; }
上記のサンプルコードを実行すると、楽天APIを利用した商品データを取得する事が出来ます。
下から3行目は画像フラグとなっていますが、ここは0か1の数値が返り0ならば商品画像が無く、1の場合は商品画像があると言う事を判断する為のフラグです。
同様にして他のレスポンスも拾う事が出来ます。上記はあくまでサンプルとしてご自由にお使い下さい。
楽天商品ランキングAPIを取得する場合
楽天の商品売れ行きランキングの情報を取得する場合は以下のようにします。
// 総合ランキングAPIapplicationId=[アプリID] https://app.rakuten.co.jp/services/api/IchibaItem/Ranking/20170628?
// ジャンル指定「洋菓子」ジャンルID(100283)applicationId=[アプリID] &genreId=100283 https://app.rakuten.co.jp/services/api/IchibaItem/Ranking/20170628?
// 年代・性別指定「20代女性」 age=20 sex=1applicationId=[アプリID] &age=20 &sex=1 https://app.rakuten.co.jp/services/api/IchibaItem/Ranking/20170628?
取得する際は一番最初の楽天商品検索APIのサンプルコードを応用して上記ランキングのURLを制作します。
それが出来たら最後にFile_get_contentsで取得してレスポンスを確認すればOKです。
大きいサイズの商品画像を取得したい時
ちなみにもっと大きい画像が欲しい場合は、mediumImageUrlsの画像URLの最後の2000004703425.jpg?_ex=128×128 ?_ex=128×128 の部分を削除すればオリジナル画像URLが取得出来ます。
便利にデバッグしながら返値(レスポンス)を参照する方法
dBug.phpを読み込みしているのはDebugツールの事で私はこれが使いやすいので今も使っています。
かなり古いコードで書かれてるので普通に読み込むとエラーが出るのでrequire_onceの前に@を付けてエラーをエスケープして使ってます。
そしてjson_decode($get,true); trueにしてるのは受け取ったJsonをオブジェクトのままで扱いたい場合はtrueを外すと良いが配列にしてた方が使いやすいのでTrueとしている。
$options['ssl']['verify_peer'] = false; $options['ssl']['verify_peer_name'] = false;
何より楽天APIのSSLは証明書が入ってないので普通にFile_get_contentsするとエラーが出て取得出来ないのでfalseとして強制的に取得するようにしています。
コメント