印刷する

ストア

store > get_product

コンテンツまたは一般的な商品情報を取得します。

リクエストの構築

リクエストURLとGET変数

リクエスト固有のGET変数

変数説明
gostoreAPIセクション
doget_productAPIアクション
iqUser IDユーザーID

リクエストURLは以下のようになります。必須情報(key, timestamp, salt, signature)を追加することを忘れないでください。

https://....../api.php?go=store&do=get_product&iq={user_id}&{required information}
POST変数

以下のPOST変数は必須です。

変数説明
type (string) Product Type 利用可能な値:"clip", "channel", "other"
関連商品のみを取得することを目的とした特別なケースの値:"site", "service", "donation"
cpID (int) Content or Product ID コンテンツまたは商品のID
・type="clip"もしくは"channel"の場合:動画/チャンネルID
・type="other"の場合:商品ID
・それ以外の(特別なケース)場合は"-1"を指定してください。

以下のPOST変数はオプションです。

変数説明
get_related (int) 0|1 関連製品を入手するかどうか。
利用可能な値:1(Yes/デフォルト), 0(No)

応答例

リクエストが成功した場合は、以下の内容のレスポンスを受け取ります。
overview:概要情報を含む配列。
概要情報は商品のページへアクセスした際にユーザーに表示される情報です。下部(または他の任意の場所)には関連する製品のリストを表示する必要があります。これはショッピングカートへ追加することができるものです。"type"値が特別なケースの値の時は概要は空になり、応答には関連商品のみが含まれます。
配列には以下が含まれます。

  • title(string):コンテンツまたは商品の名前
  • description(string):コンテンツまたは商品の主な説明
  • description_seo(string):テキスト形式の説明文
  • tags(string):関連タグ
  • img_thumbnail, img_social, img_poster(string):各コンテンツまたは商品の画像
  • max_price(decimal):関連商品の最大価格(複数ある場合)
  • max_price_formatted(string):関連商品の最大価格のフォーマット値
  • min_price(decimal):関連商品の最低価格(複数ある場合)
  • min_price_formatted(string):関連商品の最低価格のフォーマット値

associated_products:リクエストに直接関連付けられた商品のリストを含む配列。
動画とチャンネルには複数の商品が関連付けられている場合があります。

related_products:関連製品のリストを含む配列。
配列には以下が含まれます。

  • id(int):商品ID。カートから商品を追加するために使用するIDです。
  • id_clip(int):コンテンツが動画の場合は動画ID(番号>0)になります。
  • id_channel(int):コンテンツがチャンネルの場合はチャンネルID(番号>0)になります。
  • id_type(int):商品タイプのID
  • ctype(int):商品のコンテンツタイプ
    (-1:その他, 0:サイト, 1:チャンネル, 2:動画, 3:メンバーシップ)
  • sku(string):商品のSKU
  • price(decimal):商品の単価
  • price_formatted(string):商品単価のフォーマット値
  • title(string):商品名
  • description(string):商品の説明文
  • img_thumbnail, img_social, img_poster(string):各商品の画像
  • quantity_options(string/カンマ区切り):「クレジット」や「寄付」などの場合に設定されている数量オプション
{
	"overview": {
		"description": "アカウントにクレジットを追加して、いつでもINTER-STREAMコンテンツアクセスの購入に使用できます。<br />クレジットでの購入は非常に速くて簡単で、注文に関する手続きを経由する事なくクイック購入オプションの使用が可能となります。<br />注:定期支払い(自動支払い)が定期購読で有効な場合、定期購読の更新にクレジットを使用することはできません。",
		"description_seo": "アカウントにクレジットを追加して、いつでもINTER-STREAMコンテンツアクセスの購入に使用できます。クレジットでの購入は非常に速くて簡単で、注文に関する手続きを経由する事なくクイック購入オプションの使用が可能となります。注:定期支払い(自動支払い)が定期購読で有効な場合、定期購読の更新にクレジットを使用することはできません。",
		"img_poster": "http:\/\/www.interstreamdomain.com\/public\/common\/images\/_default_store_product_credit_poster.jpg",
		"img_social": "http:\/\/www.interstreamdomain.com\/public\/common\/images\/_default_store_product_credit_social.jpg",
		"img_thumbnail": "http:\/\/www.interstreamdomain.com\/public\/common\/images\/_default_store_product_credit_thumb.jpg",
		"max_price": 30,
		"max_price_formatted": "30.00\u20ac",
		"min_price": 5,
		"min_price_formatted": "5.00\u20ac",
		"tags": "",
		"title": "クレジットチャージ"
	},
	"associated_products": {
		"1": {
			"id": "1",
			"id_clip": null,
			"id_channel": null,
			"id_type": "1",
			"ctype": "0",
			"sku": "CREDIT",
			"price": "1.00",
			"title": "クレジットチャージ",
			"description": "アカウントにクレジットを追加して、いつでもINTER-STREAMコンテンツアクセスの購入に使用できます。<br />クレジットでの購入は非常に速くて簡単で、注文に関する手続きを経由する事なくクイック購入オプションの使用が可能となります。<br />注:定期支払い(自動支払い)が定期購読で有効な場合、定期購読の更新にクレジットを使用することはできません。",
			"img_thumbnail": "http:\/\/www.interstreamdomain.com\/public\/common\/images\/_default_store_product_credit_thumb.jpg",
			"img_social": "http:\/\/www.interstreamdomain.com\/public\/common\/images\/_default_store_product_credit_social.jpg",
			"img_poster": "http:\/\/www.interstreamdomain.com\/public\/common\/images\/_default_store_product_credit_poster.jpg",
			"quantity_options": "5,10,15,20,25,30",
			"price_formatted": "1.00\u20ac"
		}
	},
	"related_products": {
		"2": {
			"id": "2",
			"id_clip": null,
			"id_channel": null,
			"id_type": "3",
			"ctype": "0",
			"sku": "SITEACCPER",
			"price": "9.99",
			"title": "INTER-STREAMアクセスパス(1日間)",
			"description": "1日間INTER-STREAMの全てのコンテンツにアクセス可能なアクセスパス",
			"img_thumbnail": "http:\/\/www.interstreamdomain.com\/public\/common\/images\/_default_store_product_site_pass_period_thumb.jpg",
			"img_social": "http:\/\/www.interstreamdomain.com\/public\/common\/images\/_default_store_product_site_pass_period_social.jpg",
			"img_poster": "http:\/\/www.interstreamdomain.com\/public\/common\/images\/_default_store_product_site_pass_period_poster.jpg",
			"quantity_options": "1",
			"price_formatted": "9.99\u20ac"
		}
	}
}

リクエストにハッシュが指定されていない場合など、リクエストが失敗した場合のレスポンス

{
    "error"      : "REQUEST_ERROR",
    "error_long" : "Missing signature"
}

このリクエストは以下のエラーを返す可能性があります。

REQUEST_ERROR | Invalid User ID
ユーザーIDが1未満かもしくは数値ではありません。

REQUEST_ERROR | Invalid product type
"type"値が指定されていないか、許可されているものではありません。

REQUEST_ERROR | Invalid cotnent or product ID
"cpID"値が指定されていないか無効です。

ERROR_PRODUCT_NOT_FOUND | Product not found
商品が見つかりません。

その他のエラー内容に関しては一般的なエラーメッセージを確認してください。

PHPサンプルコード

GETおよびPOSTデータを準備します。

// GET変数
$GET_VARS = array( 
					"go"        => "store",
					"do"        => "get_product",
					"iq"        => "2"
					);

// POST変数
// ID=68の動画の場合
$POST_VARS = array( 
					"type"        => "clip",
					"cpID"        => 68,
					"get_related" => 1
					);
// ...ID=1のクレジットの場合
$POST_VARS = array( 
					"type"        => "other",
					"cpID"        => 1,
					"get_related" => 1
					);
// 「サイト」タイプに関連する商品を取得するための特別なケース(クレジット、グローバルアクセスパス、メンバーシップ)
$POST_VARS = array( 
					"type"        => "site",
					"cpID"        => -1,
					"get_related" => 1
					);
// 「サービス」タイプの商品を取得するための特別なケース
$POST_VARS = array( 
					"type"        => "service",
					"cpID"        => -1,
					"get_related" => 1
					);
// 「寄付」タイプの商品を取得するための特別なケース
$POST_VARS = array( 
					"type"        => "donation",
					"cpID"        => -1,
					"get_related" => 1
					);

salt, timestamp, signatureを生成してリクエストを送信します。

// APIベースURLと認証情報の収集
$API_URL = "https://www.interstreamdomain.tv/api.php";
$API_KEY_ID = "1b323a1cb879fd4e66530fbad07a32ee"; 
$API_SHARED_SECRET = "MWIzMjNhMWNiODc5ZmQ0ZTY2NTMwZmJhZDA3YTMyZWViOTQ3MDJiOGM2ZTU2NjE3"; // 公開しないでください

// salt, timestamp, signatureの生成
$salt = md5(mt_rand());
$timestamp = time();
$signature = base64_encode(hash_hmac('sha256', $salt.$timestamp, $API_SHARED_SECRET, true));

// key, salt, timestamp, signatureをGET変数に追加
$GET_VARS["timestamp"] = $timestamp; 	// UTCタイムスタンプ
$GET_VARS["salt"] = $salt;
$GET_VARS["key"] = $API_KEY_ID ;      // APIキーID:これは公開されており、アプリケーションを識別するためにAPIによって使用されます
$GET_VARS["signature"] = $signature;

// リクエストURLを作成します。HTTPクエリを作成するためにPHPの組み込み関数を使用しない場合は、値をURLエンコードすることを忘れないでください。
$REQUEST_URL = $API_URL."?".http_build_query($GET_VARS); 
// ".../api.php?go=api_subject&do=api_action&etc..."のようにURLを構築

// 新しいcURLリソースを作成して適切なオプションを設定
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $REQUEST_URL); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, $POST_VARS);
// PHPホストに有効なSSL証明書がない場合は、SSL証明書の検証を無効にする必要があります。これは危険であり、有効な証明書がインストールされるまで一時的に行われるべきです。
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // Turns off verification of the SSL certificate.
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Turns off verification of the SSL certificate.

// APIにリクエストを送信
$response = curl_exec($ch);

// レスポンス処理
if (!$response) { 
	echo 'API call failed'; 
} 
else
{
	print_r(json_decode($response,true)); 
}