ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

PHP×WebサービスAPIコミュのYahoo!オークションWeb APIについて

  • mixiチェック
  • このエントリーをはてなブックマークに追加
Web Creators2月号に掲載されていた
Yahoo!オークションWeb APIを試してみたのですが、上手くいきません。
ソースはサイトからサンプルとして配布されていたので、間違いないと思います。
APIは初心者です。どうか教えていただけたと思います。

以下のソースを、php形式で保存してアップしただけです。

<?php
define('APPLICATION_ID', '自分のアプリケーションID');

/**
* Yahoo!オークション APIに接続する
*
* @param string URI
* @param array その他のリクエストオプション
* @param is_xml レスポンスデータをXML出力で取得するかどうか
*/
function request_yahoo_auctions($uri, $options = array(), $is_xml = false)
{
$url = 'http://auctions.yahooapis.jp/AuctionWebService/' . $uri;
$options['appid'] = APPLICATION_ID;
if ($options) {
foreach ($options as $key => $val) {
if ($val) {
$str_params []= sprintf('%s=%s', $key, urlencode($val));
}
}
$url = sprintf('%s?%s', $url, implode('&', $str_params));
}

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,
CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
$response = curl_exec($ch);
curl_close($ch);
if ($is_xml == true) {
return simplexml_load_string($response);
}
else {
return unserialize($response);
}
}

/**
* カテゴリ情報を取得する
*
*/
function request_category()
{
return request_yahoo_auctions('V2/php/categoryTree');
}

/**
* 検索する
*
* @param array 検索データ
*/
function request_search($options = array())
{
return request_yahoo_auctions('V2/php/search', $options);
}

/**
* 出品者の出品リストを取得する
*
* @param array 出品者データ
*/
function request_item_list($options = array())
{
return request_yahoo_auctions('V2/php/sellingList', $options);
}

/**
* 出品者の評価を取得する
*
* @param array 出品者データ
*/
function request_rating($options = array())
{
return request_yahoo_auctions('V1/ShowRating', $options, true);
}

$category = request_category();
$query = '';
$item_result = $seller = array();
$rating = null;
if (isset($_GET['search'])) {
$query = $_GET['query'];
$result = request_search($_GET);
if (isset($result['ResultSet']['Result']['Item'])) {
$item_result = $result['ResultSet']['Result']['Item'];
}
}
else if (isset($_GET['type'])) {
switch ($_GET['type']) {
case 'item_list':
$result = request_item_list($_GET);
if (isset($result['ResultSet']['Result']['Item'])) {
$item_result = $result['ResultSet']['Result']['Item'];
}
if (isset($result['ResultSet']['Result']['Seller'])) {
$seller = $result['ResultSet']['Result']['Seller'];
}
break;
case 'rating':
$rating = request_rating($_GET);
break;
}
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Yahoo!オークションAPIを使って、オークション情報を取得してみよう!</title>
<style text="text/css">
table { border: 1px solid gray; border-collapse: collapse; }
table th, table td { border: 1px solid gray; text-align: center; padding: 5px; }
.result { width: 240px; }
</style>
</head>

<body style="text-align: center;">
<h2>Yahoo!オークションAPIを使って、オークション情報を取得してみよう!</h2>

<p>検索したいキーワードを入力してから、検索条件を選択して「検索」ボタンをクリックしてください</p>
<form action="yahoo_auctions.php" class="search">
<label for="query"></label><input type="text" name="query" value="<?php echo htmlspecialchars($query) ?>" size="60">
<br>
カテゴリ:
<select name="category">
<option value="0">-- 指定しない --</option>
<?php if (isset($category['ResultSet']['Result']['ChildCategory'])): ?>
<?php foreach ($category['ResultSet']['Result']['ChildCategory'] as $result): ?>
<option value="<?php echo $result['CategoryId'] ?>"><?php echo $result['CategoryPath'] ?></option>
<?php endforeach; ?>
<?php endif; ?>
</select>
<br>
検索の種類:
<input type="radio" name="type" value="all" checked>全ての文字を含む
<input type="radio" name="type" value="any">いずれかの文字を含む
<br>
並び順:
<input type="radio" name="sort" value="end" checked>終了時間
<input type="radio" name="sort" value="img">画像の有無
<input type="radio" name="sort" value="bids">入札数
<input type="radio" name="sort" value="cbids">現在の価格
<input type="radio" name="sort" value="bidorbuy">即決価格
<br>
<input type="radio" name="order" value="a" checked>昇順
<input type="radio" name="order" value="b">降順
<br>
商品の区分:
<input type="radio" name="store" value="0" checked>すべての商品
<input type="radio" name="store" value="1">オークションストアの商品
<input type="radio" name="store" value="2">一般の出品者の出品
<br>
商品の状態:
<input type="radio" name="item_status" value="0" checked>指定なし
<input type="radio" name="item_status" value="1">新品
<input type="radio" name="item_status" value="2">中古
<br>

<input type="submit" name="search" value="検索する">
</form>
<br>

<?php if (isset($_GET['type']) && $_GET['type'] == 'item_list'): ?>
<table align="center">
<tr>
<td>出品者ID</td>
<td><?php echo $seller['Id'] ?></td>
</tr>
<tr>
<td>自己紹介ページURL</td>
<td><a href="<?php echo $seller['AboutUrl'] ?>" target="_blank">URL</a></td>
</tr>
<tr>
<td>評価ポイント</td>
<td><?php echo $seller['Rating']['Point'] ?></td>
</tr>
<tr>
<td>状態</td>
<td>
<?php if ($seller['IsSuspended'] == true): ?>
停止中
<?php elseif ($seller['IsDeleted'] == true): ?>
登録削除済み
<?php else: ?>
登録中
<?php endif; ?>
</td>
</tr>
</table>
<br clear="both">
<?php endif; ?>

<?php if ($item_result): ?>
<?php foreach ($item_result as $item): ?>
<table class="result" style="width: 200px; margin: 15px; float: left; height: 400px;">
<tr>
<td>商品のタイトル</td>
<td>
<a href="<?php echo $item['AuctionItemUrl'] ?>" target="_blank">
<?php echo $item['Title'] ?>
</a>
</td>
</tr>
<tr>
<td>出品者</td>
<td>
<?php echo htmlspecialchars($item['Seller']['Id']) ?>
<br>
<a href="yahoo_auctions.php?type=item_list&sellerID=<?php echo $item['Seller']['Id'] ?>">この出品者の出品リスト</a>
<br>
<a href="yahoo_auctions.php?type=rating&id=<?php echo $item['Seller']['Id'] ?>">この出品者の評価</a>
</td>
</tr>
<tr>
<td>商品の写真</td>
<td>
<img src="<?php echo $item['Image'] ?>">
</td>
</tr>
<tr>
<td>現在の価格</td>
<td><?php echo $item['CurrentPrice'] ?>円</td>
</tr>
<tr>
<td>現在の入札数</td>
<td><?php echo $item['Birds'] ?></td>
</tr>
<tr>
<td>終了予定日時</td>
<td><?php echo $item['EndTime'] ?></td>
</tr>
<tr>
<td>即決価格</td>
<td><?php echo isset($item['BidOrBuy']) ? $item['BidOrBuy'] : '-' ?></td>
</tr>
<tr>
<td>最低入札の有無</td>
<td><?php echo ($item['IsReserved'] == true) ? '有' : '無' ?></td>
</tr>
</table>
<?php endforeach; ?>
<?php endif; ?>

<?php if ($rating != null): ?>
<table align="center">
<tr>
<td>非常に良い・良いの評価の総数</td>
<td><?php echo $rating->TotalGoodRating ?></td>
</tr>
<tr>
<td>非常に悪い・悪いの評価の総数</td>
<td><?php echo $rating->TotalBadRating ?></td>
</tr>
</table>
<?php foreach ($rating->Result as $result): ?>
<table class="result" style="width: 200px; margin: 15px; float: left; height: 400px;">
<tr>
<td>オークションID</td>
<td><?php echo $result->AuctionID ?></td>
</tr>
<tr>
<td>落札した商品のタイトル</td>
<td><?php echo $result->Title ?></td>
</tr>
<tr>
<td>落札者</td>
<td>
ID: <?php echo $result->Author->Id ?>
<br
<a href="yahoo_auctions.php?type=item_list&sellerID=<?php echo $result->Author->Id ?>">この落札者の出品リスト</a>
<br>
<a href="yahoo_auctions.php?type=rating&id=<?php echo $result->Author->Id ?>">この落札者の評価</a>
<br>
</td>
</tr>
<tr>
<td>終了日時</td>
<td><?php echo $result->EndTime ?></td>
</tr>
<tr>
<td>評価</td>
<td>
<?php if ($result->Rating == 'veryGood'): ?>
非常に良い
<?php elseif ($result->Rating == 'good'): ?>
良い
<?php elseif ($result->Rating == 'normal'): ?>
どちらでもない
<?php elseif ($result->Rating == 'bad'): ?>
悪い
<?php elseif ($result->Rating == 'veryBad'): ?>
非常に悪い
<?php else: ?>
該当なし
<?php endif; ?>
</td>
</tr>
<tr>
<td>コメント</td>
<td>
<?php foreach ($result->RatingField as $comment): ?>
<?php echo $comment->Comment ?>
(<?php echo $comment->Date ?>:
<?php if ($comment->SellerOrWinner == 'seller'): ?>
出品者からの返答
<?php elseif ($comment->SellerOrWinner == 'winner'): ?>
落札者からのコメント
<?php else: ?>
該当なし
<?php endif; ?>
)<br>
</td>
</tr>
</table>
<?php endforeach; ?>
</tr>
</table>
<?php endforeach; ?>
<?php endif; ?>

<br clear="both">
<hr>
<!-- Begin Yahoo! JAPAN Web Services Attribution Snippet -->
<a href="http://developer.yahoo.co.jp/about">
<img src="http://i.yimg.jp/images/yjdn/yjdn_attbtn2_88_35.gif" width="88" height="35" title="Webサービス by Yahoo! JAPAN" alt="Webサービス by Yahoo! JAPAN" border="0" style="margin:15px 15px 15px 15px; float: left;"></a>
<!-- End Yahoo! JAPAN Web Services Attribution Snippet -->
</body>
</html>

コメント(0)

mixiユーザー
ログインしてコメントしよう!

PHP×WebサービスAPI 更新情報

PHP×WebサービスAPIのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。