新しいCommerce APIメソッドの使い方
どのように動作するか
主な機能:
- エクソラログインまたは決済ステーションアクセストークン
- 仮想アイテム管理
- ユーザーインベントリ管理
- カートおよび注文管理
使用に適した方
- ストアインターフェースを開発し、サードパーティのソリューションを使用してサーバー側を実装したいパートナー。
- エクソラとのサーバー統合を既に実装済みで新しいストアと新しい
Commerce API メソッドを接続したいパートナー。
入手方法
アプリに
- パブリッシャーアカウントで仮想アイテムモジュールを設定します。
- 認証を設定します。
- ストア管理メソッドを実装します。
統合には、プロジェクト設定 > ウェブフックに表示されているプロジェクトIDが必要です。プロジェクトIDは
パブリッシャーアカウントに仮想アイテムモジュールを設定します
- プロジェクトに移動して、プロジェクトの作成ボタンをクリックします。
- プロジェクト名を追加して作成をクリックします。

- プロジェクト設定>統合設定に移動し、
Commerce API を統合するトグルをオンに設定ことを確認します。 - ストアをプロジェクトに接続します。
- 仮想アイテムモジュールを接続します。

- アイテムのグループを作成します。

- アイテムを作成します。

- アイテムが作成されたら、ストアでグループディスプレイをオンにします。

認証設定
以下のユーザー認証オプションを利用できます:
- エクソラログインを介した認証。エクソラとのサーバー統合を、まだ実装していない場合にはこのオプションを選びます。
- 決済ステーションアクセストークンを介した認証。エクソラとのサーバー統合を実装済みの場合には、このオプションを選びます。
エクソラログイン経由の認証
- 指示に従ってパブリッシャーアカウントプロジェクトをセットアップします。
- JSONウェブトークンまたはOAuth 2.0プロトコルを使用して、承認メソッドの呼び出しを実装します。
ユーザーデータがエクソラデータストレージに保存されている場合には、以下のメソッドの呼び出しを実装します:
- 登録する(JWTまたはOAuth 2.0)
- 認証を登録する(以下のいずれか):
- パスワードをリセットする
ユーザーデータがPlayFabデータストレージに保存されている場合には、PlayFabレシピを使用します。
ユーザーデータが御社に保存されている場合には、カスタムストレージレシピを使用します。
決済ステーションアクセストークンを介した認証
認証フロー:
- お使いのアプリケーション(クライアント)は認証リクエストを御社のサーバーに送信します。
- サーバーはマーチャントIDとAPIキーをエクソラサーバーに送信し、access_tokenを要求します。
- エクソラサーバーは御社のサーバーにaccess_tokenを送信します。
- 御社のサーバーはaccess_tokenをクライアントに送信します。
返されたaccess_tokenは
ストア管理の方法
ストアの管理メソッドには以下のグループのメソッドが含まれます:
- 仮想アイテム管理:
- カートおよび注文管理:
- ユーザーインベントリ管理:
Get virtual items list
ストアに追加された仮想アイテムの完全リストを表示するには、Get virtual items list APIメソッドを実装します。
例
- js
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://store.xsolla.com/api/v2/project/44056/items/virtual_items?locale=en");
xhr.send(data);
//RESPONSE
"items": [
{
"attributes": [],
"description": "Conquer your foes with vindication using the Basic Blaster! ",
"groups": [
"all",
"featured",
"Xsolla",
"weapons"
],
"image_url": "https://cdn.xsolla.net/img/misc/images/0c59a7698d4f66c1008b27ee752089b7.png",
"is_free": false,
"name": "Xsolla Basic Blaster 1",
"order": 1,
"price": {
"amount": "0.9950000000000000",
"amount_without_discount": "1.9900000000000000",
"currency": "USD"
},
"sku": "gun_1",
"type": "virtual_good"
Get item groups list
- ストアに追加された仮想アイテムグループの完全なリストを表示するには、Get item groups list APIメソッドを実装します。
- Get virtual items listメソッドで返されるそれぞれのskuパラメータの値に、所属するグループのexternal_idを指定します。アイテムがパブリッシャーアカウントでグループ化されるのと同じ方法で、skuをexternal_idにマッチします。
例
- js
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://store.xsolla.com/api/v2/project/44056/items/groups");
xhr.send(data);
//RESPONSE
"groups": [
{
"children": [],
"description": "all",
"external_id": "all",
"id": 10,
"image_url": "http://none",
"level": 0,
"name": "all",
"order": null,
"parent_external_id": null
}
Get cart
仮想アイテムの購入には、Get cart by IDまたはGet current user’s cart APIメソッドを実装します。Cart IDはアイテムの追加/削除に使用されます。
例
- js
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://store.xsolla.com/api/v2/project/44056/cart/custom_id?locale=en¤cy=USD");
xhr.setRequestHeader("authorization", "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE5NjIyMzQwNDgsImlzcyI6Imh0dHBzOi8vbG9naW4ueHNvbGxhLmNvbSIsImlhdCI6MTU2MjE0NzY0OCwidXNlcm5hbWUiOiJ4c29sbGEiLCJ4c29sbGFfbG9naW5fYWNjZXNzX2tleSI6IjA2SWF2ZHpDeEVHbm5aMTlpLUc5TmMxVWFfTWFZOXhTR3ZEVEY4OFE3RnMiLCJzdWIiOiJkMzQyZGFkMi05ZDU5LTExZTktYTM4NC00MjAxMGFhODAwM2YiLCJlbWFpbCI6InN1cHBvcnRAeHNvbGxhLmNvbSIsInR5cGUiOiJ4c29sbGFfbG9naW4iLCJ4c29sbGFfbG9naW5fcHJvamVjdF9pZCI6ImU2ZGZhYWM2LTc4YTgtMTFlOS05MjQ0LTQyMDEwYWE4MDAwNCIsInB1Ymxpc2hlcl9pZCI6MTU5MjR9.GCrW42OguZbLZTaoixCZgAeNLGH2xCeJHxl8u8Xn2aI");
xhr.send(data);
//RESPONSE
{
"cart_id": "custom_id",
"is_free": true,
"items": [],
"price": null
}
Create order with all items
- APIメソッドの1つを実装します:
- カートをIDで取得する場合には、Create order with all items from particular cart。
- 現在のカートを取得する場合には、Create order with all items from current cart。
作成された注文はNewオーダーステータスを受取ります。
- 新しいウィンドウで決済UIを開くには、次のリンクを使用してください:
https://secure.xsolla.com/paystation3/?access_token=ACCESS_TOKEN
。ACCESS_TOKEN
は注文が作成されたときに受け取ったトークンです。 - 決済プロセスをテストするには:
- このURLを使用します:
https://sandbox-secure.xsolla.com/paystation3/?access_token=ACCESS_TOKEN
。 - リクエストでサンドボックスパラメータをtrueに設定します。
- テストのための銀行のカードのリストを使います。
- このURLを使用します:
例
- js
var data = JSON.stringify({
"currency": "USD",
"locale": "en",
"sandbox": false
});
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://store.xsolla.com/api/v2/project/44056/payment/cart/custom_id");
xhr.setRequestHeader("content-type", "application/json");
xhr.setRequestHeader("authorization", "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE5NjIyMzQwNDgsImlzcyI6Imh0dHBzOi8vbG9naW4ueHNvbGxhLmNvbSIsImlhdCI6MTU2MjE0NzY0OCwidXNlcm5hbWUiOiJ4c29sbGEiLCJ4c29sbGFfbG9naW5fYWNjZXNzX2tleSI6IjA2SWF2ZHpDeEVHbm5aMTlpLUc5TmMxVWFfTWFZOXhTR3ZEVEY4OFE3RnMiLCJzdWIiOiJkMzQyZGFkMi05ZDU5LTExZTktYTM4NC00MjAxMGFhODAwM2YiLCJlbWFpbCI6InN1cHBvcnRAeHNvbGxhLmNvbSIsInR5cGUiOiJ4c29sbGFfbG9naW4iLCJ4c29sbGFfbG9naW5fcHJvamVjdF9pZCI6ImU2ZGZhYWM2LTc4YTgtMTFlOS05MjQ0LTQyMDEwYWE4MDAwNCIsInB1Ymxpc2hlcl9pZCI6MTU5MjR9.GCrW42OguZbLZTaoixCZgAeNLGH2xCeJHxl8u8Xn2aI");
xhr.send(data);
//RESPONSE
{
"order_id": 641,
"token": "f4puMEFFDZcx9nv5HoNHIkPe9qghvBQo"
}
Get order
購入が既に処理されたかを判断するにはGet order APIメソッドを実装します。以下の注文ステータスが利用できます。
- New — 注文が作成されたものの、支払いはされていない。
- Paid — 注文に対する支払い済み。
- Cancelled — 注文はキャンセル済み。
- Done — 注文は支払いが完了し、アイテムはインベントリに追加されました。
例
- js
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://store.xsolla.com/api/v2/project/44056/order/656");
xhr.setRequestHeader("authorization", "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE5NjIyMzQwNDgsImlzcyI6Imh0dHBzOi8vbG9naW4ueHNvbGxhLmNvbSIsImlhdCI6MTU2MjE0NzY0OCwidXNlcm5hbWUiOiJ4c29sbGEiLCJ4c29sbGFfbG9naW5fYWNjZXNzX2tleSI6IjA2SWF2ZHpDeEVHbm5aMTlpLUc5TmMxVWFfTWFZOXhTR3ZEVEY4OFE3RnMiLCJzdWIiOiJkMzQyZGFkMi05ZDU5LTExZTktYTM4NC00MjAxMGFhODAwM2YiLCJlbWFpbCI6InN1cHBvcnRAeHNvbGxhLmNvbSIsInR5cGUiOiJ4c29sbGFfbG9naW4iLCJ4c29sbGFfbG9naW5fcHJvamVjdF9pZCI6ImU2ZGZhYWM2LTc4YTgtMTFlOS05MjQ0LTQyMDEwYWE4MDAwNCIsInB1Ymxpc2hlcl9pZCI6MTU5MjR9.GCrW42OguZbLZTaoixCZgAeNLGH2xCeJHxl8u8Xn2aI");
xhr.send(data);
//RESPONSE
{
"content": {
"is_free": false,
"items": [
{
"is_free": false,
"price": {
"amount": "0.9950",
"amount_without_discount": "1.9900",
"currency": "USD"
},
"quantity": 123,
"sku": "gun_1"
}
],
"price": {
"amount": "122.3850",
"amount_without_discount": "122.3850",
"currency": "USD"
}
},
"order_id": 656,
"status": "new"
}
Get user’s inventory
購入後にインベントリに追加されたアイテムのリストを取得するには、Get user’s inventory APIメソッドを実装します。
例
- js
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://store.xsolla.com/api/v2/project/44056/user/inventory/items");
xhr.setRequestHeader("authorization", "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE5NjIyMzQwNDgsImlzcyI6Imh0dHBzOi8vbG9naW4ueHNvbGxhLmNvbSIsImlhdCI6MTU2MjE0NzY0OCwidXNlcm5hbWUiOiJ4c29sbGEiLCJ4c29sbGFfbG9naW5fYWNjZXNzX2tleSI6IjA2SWF2ZHpDeEVHbm5aMTlpLUc5TmMxVWFfTWFZOXhTR3ZEVEY4OFE3RnMiLCJzdWIiOiJkMzQyZGFkMi05ZDU5LTExZTktYTM4NC00MjAxMGFhODAwM2YiLCJlbWFpbCI6InN1cHBvcnRAeHNvbGxhLmNvbSIsInR5cGUiOiJ4c29sbGFfbG9naW4iLCJ4c29sbGFfbG9naW5fcHJvamVjdF9pZCI6ImU2ZGZhYWM2LTc4YTgtMTFlOS05MjQ0LTQyMDEwYWE4MDAwNCIsInB1Ymxpc2hlcl9pZCI6MTU5MjR9.GCrW42OguZbLZTaoixCZgAeNLGH2xCeJHxl8u8Xn2aI");
xhr.send(data);
//RESPONSE
{
"items": [
{
"description": "Conquer your foes with vindication using the Basic Blaster! ",
"image_url": "https://cdn.xsolla.net/img/misc/images/0c59a7698d4f66c1008b27ee752089b7.png",
"instance_id": null,
"long_description": "Conquer your foes with vindication using the Basic Blaster! Conquer your foes with vindication using the Basic Blaster! ",
"name": "Xsolla Basic Blaster 1",
"quantity": 22,
"sku": "gun_1",
"type": "virtual_good"
},
{
"description": "Protect your noggin' with style",
"image_url": "https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png",
"instance_id": null,
"long_description": "merchant_virtual_items_virtual_item_long_description_159429",
"name": "Xsolla Helmet",
"quantity": 18,
"sku": "helmet_1",
"type": "virtual_good"
}
]
}
この記事は役に立ちましたか?
このページを評価する
答えたくない
ご意見ありがとうございました!
誤字脱字などのテキストエラーを見つけましたか? テキストを選択し、Ctrl+Enterを押します。