Rakuten API PHP〜楽天SDKを斬る(part2)〜

イントロダクション

前回は、楽天APIを使うために楽天SDKをレンタルサーバー上にアップロード(インストール)しました。

今回は、SDKを使用して1つページを作成しようと思います。

APIの使い方はこちらのページ(楽天のヘルプ)です。

楽天APIの実装

ヘルプを見ると、上の様な画面が見つかります。「アプリ登録」が必要ということで、はやい話がAPIを使用するためのキーを取得します

上の様にアプリ名と起動するPHPファイルのURLを入力します。

上の様な感じで登録が完了します。

レッツPHP

まず初めに、パスの切り方とかどの様になっているかわからないので以下のコードでrakutenAPI.phpを実装します。

<? php
      phpinfo();
?>
<!DOCTYPE html>
<html>
<head>
 <link rel="stylesheet" href="./rakuten.css">
</head>
<body>
</body>
</html>

そして対象のページを開きます。

上の様なヘッダーがあるページが表示されて色々と詳細が書いてあります。「SCRIPT_URL」という項目があるのでそれを見ると現在の起動しているファイルパスが記載されているのでそれを元にルートパスを確認します。

今回自分のところには「/project」から始まるURLが記載されていたのでルートディレクトリはprojectフォルダのあるディレクトリとなります。

そして使用する楽天APIのSDK→ライブラリのあるパスを指定して「autoload.php」を取り込む様にプログラムを書きます。

こちらのページを参考に作成しました。

// エラーを出力する ini_set('display_errors', 1); require_once('../rws-php-sdk-1.1.0/autoload.php'); $client = new RakutenRws_Client(); // アプリID (デベロッパーID) をセットします $client->setApplicationId('1069312965684050347');

//アプリID (デベロッパーID) をセットします
client->setApplicationId('取得したアプリID');

// アフィリエイトID をセットします(任意)
$client->setAffiliateId('取得したアフィリエイトID');

// IchibaItem/Search API から、keyword=うどん を検索します
$response = $client->execute('IchibaItemSearch', array(
  'keyword' => 'AI'
));
// レスポンスが正しいかを isOk() で確認することができます
if ($response->isOk() == false) {
    // 配列アクセスによりレスポンスにアクセスすることができます。
	echo 'Error:'.$response->getMessage();
	return;
}
foreach($response as $items) {
	var_dump($items);
	foreach($items as $cols) {
		break;
	}
	break;
}

取得する項目に関してのドキュメントはこちらでテストフォームよりGETして見ると取得する内容がJSON形式で取得できます。PHPで取得する場合は変数->項目名で取得します。

取得したデータの初めの1レコード分です、ここから表示したい情報を取り出して紹介画面に表示します。

単純に出力したデータ

["itemName"]=> string(256) "さらにクーポン割引 DAKINE ダカイン メンズ スノーボード グローブ ミトン GORE-TEX AI237-718 手ぶくろ ミトングローブ スノボ スノーグローブ 手袋 ゴアテックス スキーグローブ てぶくろ 男性用"

["catchcopy"]=> string(120) "全3色 DAKINE のスノーボード グローブ ミトン GORE-TEX が20%OFF IMPREZA MITT 2019 WINTER【あす楽】"

["itemCode"]=> string(18) "oc-sports:10024681"

["itemPrice"]=> int(7776)

["itemCaption"]=> string(1244) "メーカー希望小売価格はメーカー商品タグに基づいて掲載しています商品詳細素材・仕様DAKINE/ダカイン メンズ グローブ ミトン IMPREZA MITT 2019 WINTER AI237-7182019-DAKINE WINTER COLLECTION透湿性・防水性に優れたGORE-TEXを採用した、高品質なメンズスノーボードグローブ。裏起毛でゲレンデでも寒さからしっかり守ってくれます!手首はベルクロ使用で自分好みの大きさに調整可能!◆素材:ポリエステル65%、ポリウレタン22%、ナイロン13%サイズS:全長22cm×周囲20cm×幅11cm×親指7cmM:全長23.5cm×周囲22cm×幅13cm×親指8cmL:全長24.5cm×周囲25cm×幅14cm×親指9cm※商品によって多少の誤差がございますので、予めご了承ください。注意事項※初期不良以外の返品・交換は固くお断りしております。サイズ・カラー選び等は慎重に行ってください。※掲載商品の色は、できる限り現品と同じになるよう努めておりますが、ご使用のパソコン環境により多少色合いが異なる場合がございます。著しい色の相違は御座いませんのでご安心ください。"

["itemUrl"]=> string(191) "http://hb.afl.rakuten.co.jp/hgc/g00s1ld6.jciuf633.g00s1ld6.jciujad2/?pc=http%3A%2F%2Fitem.rakuten.co.jp%2Foc-sports%2F206040057%2F&m=http%3A%2F%2Fm.rakuten.co.jp%2Foc-sports%2Fi%2F10024681%2F" ["shopUrl"]=> string(163) "http://hb.afl.rakuten.co.jp/hgc/g00s1ld6.jciuf633.g00s1ld6.jciujad2/?pc=http%3A%2F%2Fwww.rakuten.co.jp%2Foc-sports%2F&m=http%3A%2F%2Fm.rakuten.co.jp%2Foc-sports%2F"

["smallImageUrls"]=> array(3) { [0]=> array(1) { ["imageUrl"]=> string(92) "http://thumbnail.image.rakuten.co.jp/@0_mall/oc-sports/cabinet/20618/206040057.jpg?_ex=64x64" } [1]=> array(1) {

["imageUrl"]=> string(94) "http://thumbnail.image.rakuten.co.jp/@0_mall/oc-sports/cabinet/20618/206040057_1.jpg?_ex=64x64" } [2]=> array(1) {

["imageUrl"]=> string(94) "http://thumbnail.image.rakuten.co.jp/@0_mall/oc-sports/cabinet/20618/206040057_2.jpg?_ex=64x64" } } ["mediumImageUrls"]=> array(3) { [0]=> array(1) { ["imageUrl"]=> string(94) "http://thumbnail.image.rakuten.co.jp/@0_mall/oc-sports/cabinet/20618/206040057.jpg?_ex=128x128" } [1]=> array(1) {

["imageUrl"]=> string(96) "http://thumbnail.image.rakuten.co.jp/@0_mall/oc-sports/cabinet/20618/206040057_1.jpg?_ex=128x128" } [2]=> array(1) {

["imageUrl"]=> string(96) "http://thumbnail.image.rakuten.co.jp/@0_mall/oc-sports/cabinet/20618/206040057_2.jpg?_ex=128x128" } } ["affiliateUrl"]=> string(191) "http://hb.afl.rakuten.co.jp/hgc/g00s1ld6.jciuf633.g00s1ld6.jciujad2/?pc=http%3A%2F%2Fitem.rakuten.co.jp%2Foc-sports%2F206040057%2F&m=http%3A%2F%2Fm.rakuten.co.jp%2Foc-sports%2Fi%2F10024681%2F"

["shopAffiliateUrl"]=> string(163) "http://hb.afl.rakuten.co.jp/hgc/g00s1ld6.jciuf633.g00s1ld6.jciujad2/?pc=http%3A%2F%2Fwww.rakuten.co.jp%2Foc-sports%2F&m=http%3A%2F%2Fm.rakuten.co.jp%2Foc-sports%2F"

["imageFlag"]=> int(1) ["availability"]=> int(1) ["taxFlag"]=> int(0)

["postageFlag"]=> int(0) ["creditCardFlag"]=> int(1) ["shopOfTheYearFlag"]=> int(0)

["shipOverseasFlag"]=> int(0)

["shipOverseasArea"]=> string(0) ""

["asurakuFlag"]=> int(1)

["asurakuClosingTime"]=> string(5) "13:00"

["asurakuArea"]=> string(305) "群馬県/埼玉県/千葉県/東京都/神奈川県/新潟県/富山県/石川県/福井県/山梨県/長野県/岐阜県/静岡県/愛知県/三重県/滋賀県/京都府/大阪府/兵庫県/奈良県/和歌山県/鳥取県/島根県/岡山県/広島県/山口県/徳島県/香川県/愛媛県/高知県"

["affiliateRate"]=> int(1)

["startTime"]=> string(0) ""

["endTime"]=> string(0) ""

["reviewCount"]=> int(0)

["reviewAverage"]=> int(0)

["pointRate"]=> int(1)

["pointRateStartTime"]=> string(0) ""

["pointRateEndTime"]=> string(0) ""

["giftFlag"]=> int(0)

["shopName"]=> string(15) "OC SPORTS ANNEX"

["shopCode"]=> string(9) "oc-sports"

["genreId"]=> string(6) "501854"

["tagIds"]=> array(0) { }