せっかくPHPの勉強をしたので、楽天APIを利用したページ作りにトライしました。
楽天APIの一覧で使いたいAPIを選んでおきます。
https://webservice.rakuten.co.jp/document/
まずは、楽天のデベロッパーIDとアフィリエイトIDを取得しないと始まりません。
https://webservice.rakuten.co.jp/
で新規アプリ登録をします。使うのは楽天トラベルの空室検索APIです。
登録が終わるとデベロッパーIDとアフィリエイトIDが表示されます。
自分の場合は
1089363386770913344
15040cf4.7d33bce5.15040cf5.078e12d9
でした。
公開API活用ガイド(ZAPA)の楽天APIに関するPHPプログラムを動作させてみました。
ソースファイルrakuten.phpは
http://www.kohgakusha.co.jp/support.html
で入手できます。
でも動作しませんでした(笑!)
楽天側の仕様が変わったのだと思います
これじゃあ話にならないという事で、とにかく楽天APIを動作させるPHPのサンプルプログラムをネットで探してみました。いくつか試したのですが、いずれもエラー表示が出るものばかりで使い物になりません。
http://connet.lolipop.jp/agoranet/rakutenaff/
でやっと自分の環境でも動作するPHPファイルを見つけました。
それを参考に、公開API活用ガイド(ZAPA)の楽天APIに関するPHPプログラムを改変して、やっと動作させることに成功しました。
設定した検索ワードに基づいて、5件分の画像が表示され、画像をクリックするとアフィリエイトIDをクッキーに埋め込み、対象ページに移動するプログラムです。
青文字は各自のIDを入れないといけないし、赤文字は今回書き換えた部分です。
<!DOCTYPE html >
<html lang=”ja”>
<head>
<meta charset=utf-8″>
<meta name=”viewport” content=”width=device-width, initial-scale=1, shrink-to-fit=no”>
<title>Rakuten API sample</title>
</head>
<body>
<?php
//楽天から商品を検索してHTMLタグを返す関数
function search_rakuten($keyword,$limit){
//developerIdを設定する
$applicationId = ‘1089363386770913344‘;
//affiliateIdを設定する
$affiliateId = ‘15040cf4.7d33bce5.15040cf5.078e12d9‘;
//バージョンを設定する
$version = ‘2017-07-06‘;
//取得件数を設定する
$hits = $limit;
//検索キーワードをURLエンコードして設定する
$text = urlencode($keyword);
//人気の高い順に検索する
$sort = urlencode(“standard”);
//URLを生成する
$url = ‘https://app.rakuten.co.jp/services/api/IchibaItem/Search/20170706?format=xml’.
‘&applicationId=’.$applicationId.
‘&affiliateId=’.$affiliateId.
‘&version=’.$version.
‘&keyword=’.$text.
‘&hits=’.$hits.
‘&sort=’.$sort;
//RESTで返されるXMLファイルを取得する
$str = @file_get_contents($url);
//XMLを解析してオブジェクトにセットする
$xml = simplexml_load_string($str);
//xpathによって、Item要素だけを取り出す
$Items = $xml->Items->Item;
//divタグでくくる
$ret = ‘<div id=”rakuten_item”>’;
//Item数だけ繰り返す
foreach($Items as $Item){
$ret .= ‘<a href=”‘.$Item->affiliateUrl.'”>’;
$ret .= ‘<img src=”‘.$Item->mediumImageUrls->imageUrl.'” >’;
$ret .= “</a>\n”;
}
//divタグを閉じる
$ret .= ‘</div>’;
//作成したHTMLを返す
return $ret;
}
//検索ワードを設定する
$keyword = “スイーツ”;
//取得数を設定する
$limit = 5;
//楽天から商品を検索して表示する
echo search_rakuten($keyword,$limit);
?>
<br>
<!– Rakuten Web Services Attribution Snippet FROM HERE –>
<a href=”https://webservice.rakuten.co.jp/” target=”_blank”>Supported by 楽天ウェブサービス</a>
<!– Rakuten Web Services Attribution Snippet TO HERE –>
</body>
</html>