バリューコマースのウェブサービスを利用してみた

バリューコマースはヤフーやアマゾンも取り扱う大手のASPなので、
どんなジャンルのサイトであっても、
相応しい広告がゴロゴロしているので紹介しやすいのでは?

サクッとバリューコマースウェブサービスを体感することができるサンプルコードを掲載しました。

ワードプレスの投稿欄なんかに貼り付けて実行することも出来ます。

ページャーも含めて動作させるにはワードプレス側のリライト機能を制御する必要がある。

バリューコマースで取得するトークンが必要です。

<?php

/**********************************************************************/

// バリューコマースWEBサービス
$token = ""; // トークン

/**********************************************************************/
/**********************************************************************

// カテゴリー(参考)
"computers"         (コンピュータ)
"electronics"       (家電、AV機器) 
"music"             (音楽、CD) 
"books"             (本、コミック) 
"dvd"               (DVD) 
"fooddrink"         (フード、ドリンク) 
"fashion"           (ファッション、アクセサリー) 
"beautys"           (美容、健康) 
"toysgameshobbies"  (おもちゃ、ホビー) 
"recreationoutdoor" (レジャー、アウトドア) 
"homeinterior"      (生活、インテリア) 
"babymaternity"     (ベビー、キッズ、マタニティ) 
"officesupplies"    (ビジネス、ステーショナリー"

***********************************************************************/

echo '<div style="width:80%;margin:5% auto;">';
echo '<div style="margin:0; padding:0">';

?>
// 検索フォーム
<div style="margin:0 0 2% 0;">
<form name="searchform" id="itemsearchform" method="get" action="">
<input type="text" name="keyword" id="itemkeyword" value="" />
<input type="submit" id="itemssubmit" value="検索" />
</form>
</div>
<?php

$keyword = htmlspecialchars($_GET['keyword'], ENT_QUOTES);

// URLエンコード
$e_keyword = urlencode($keyword);

$page = (empty($_GET['page'])) ? 1 : $_GET['page'];

$baseurl = 'http://webservice.valuecommerce.ne.jp/productdb/search?';

$vcparam = array();

// キーワードをセット
if ($e_keyword != "") {
  $vcparam['keyword'] = $e_keyword;
}

// リクエストパラメーターをセット(任意)
$vcparam['token']            = $token; // トークン
$vcparam['results_per_page'] = 10; // 1ページ毎の結果件数
$vcparam['sort_by']          = ''; // ソートの属性
$vcparam['sort_order']       = ''; // ソート順(昇順または降順)
$vcparam['category']         = ''; // カテゴリー
$vcparam['stock']            = ''; // 検索対象の在庫状況
$vcparam['ecCode']           = ''; // 検索対象のECサイトコード
$vcparam['merchant']         = ''; // 検索対象のECサイトを指定
$vcparam['product_id']       = ''; // 商品識別コード
$vcparam['sub_store']        = ''; // ECサイトのサブストアID
$vcparam['adult']            = ''; // アダルト商品を検索結果に含めるかどうかの指定
$vcparam['price_max']        = ''; // 最大価格
$vcparam['price_min']        = ''; // 最小価格
$vcparam['rate_max']         = ''; // 最大報酬率
$vcparam['rate_min']         = ''; // 最小報酬率
$vcparam['fixed_max']        = ''; // 最大定額報酬料
$vcparam['fixed_min']        = ''; // 最小定額報酬料
$vcparam['fee_max']          = ''; // 最大報酬額
$vcparam['fee_min']          = ''; // 最小報酬額
$vcparam['page']             = $page; // 表示する検索結果のページ番号
$vcparam['format']           = 'json'; // 検索結果のフォーマット

// 各パラメーターデータを'&'でつないでいく
foreach ($vcparam as $vckey => $vcvalue) {
    $pala .= '&'.$vckey.'='.$vcvalue;
}

$vcurl = $baseurl.$pala;

// レスポンスデータを取得
$vc_json = @file_get_contents($vcurl, true);

// デコード
$Items = json_decode($vc_json);

$ItemArray = $Items->items;

// ステータスを取得
$status = $Items->status;

// 商品数を取得
$resultCount = $Items->resultCount;

// 総ページ数を取得
$pageCount = $Items->pageCount;

// レスポンス商品数が100000を超えるようなら100000に制限
if($resultCount > 100000){
  $resultCount = 100000;
}

// 総ページ数が10000を超えるようなら10000に制限
if($pageCount > 10000){
  $pageCount = 10000;
}

// 次ページ、前ページをセット
    $nextpage = $page+1;
    $prevpage = $page-1;


// レスポンス表示部分

// ステータスがOKなら商品データを展開
if( $status == 'OK' ){

	foreach ( $ItemArray as $item ) {
		
		echo '<div style="width:154px;float:left;"><a href="'.$item->link.'" rel="nofollow" target="_blank"><img src="'.$item->imageLarge->url.'" alt="" />'.$item->pvImg.'</a></div>';

		echo '<div style="font-weight:bold;margin-left:155px;"><a href="'.$item->link.'" rel="nofollow" target="_blank">'.$item->title.$item->pvImg.'</a></div>';

		echo '<div style="color:#ff0000; font-weight:bold;margin-left:155px;">価格 '.number_format((int)$item->price).' 円</div>';

		echo '<div style="margin-left:155px;">'.mb_strimwidth($item->description, 0, 380, '...', 'UTF-8').'</div>';

echo '<div style="clear:both; visibility:hidden; width:100%; height:10px;">クリア</div>';
echo '<hr style="width:100%;border:1px dotted #bbb;" />';

	} // foreach end

}
if(isset($item)){ echo "<span>全 ".number_format($resultCount)." 数</span>"; }

// ページャー
echo '<div>';

$nextpage= '2'; //

$url_a ="<a style='background-color: #ffffff; color: #ff0000; margin: 0; padding: 0.2em 0.5em; border: solid 1px; text-decoration: none;' href=\"?keyword=$e_keyword&page=";

$url_b ="\"";

$html_Page_Link = Page_Link($pageCount,$page,$nextpage,$url_a,$url_b);

echo $html_Page_Link;

function  Page_Link($pageCount,$page,$nextpage,$url_a,$url_b){

	$html = "";

	if($pageCount < 1) return $html;

	if($page > 1) $html .= $url_a.($page-1).$url_b.' style="background-color: #ffffff; margin: 0; padding: 0.2em 0.5em; border: solid 1px; text-decoration: none;"'.">&laquo;</a>";

	$prevpage = $page - $nextpage;

	while ($prevpage < $page) {

		$prevpage++;

		if($prevpage > 1) $html .= $url_a.($prevpage-1).$url_b.">".($prevpage-1)."</a>";

	}

	$html .= '<span style="	background-color: #ff0000; color: #ffffff; margin: 0; padding: 0.2em 0.5em; border: solid 1px #ff0000; text-decoration: none;">'.$page.'</span>';

	if($page < $pageCount){

		$pageCount = $pageCount - $page;

		if($pageCount > $nextpage) $pageCount=$nextpage;

		$plus=0;

		while ($plus < $pageCount) {

			$nextpage=$page+$plus+1;

			$html .= $url_a.$nextpage.$url_b.">".$nextpage."</a>";

			$plus++;
		
		}
		
	$html .= $url_a.($page+1).$url_b.' style="background-color: #ffffff; color: #ff0000; margin: 0; padding: 0.2em 0.4em; border: solid 1px; text-decoration: none;"'.">&raquo;</a>";
	
	}

return $html;

}

echo '</div>';

echo '</div>';
echo '</div>';

?>