インベントリ。期間限定アイテム
どのように動作するか
期間限定アイテムは、1回限りの購入であるプレミアムボーナスです。したがって、ユーザーは期限切れになったときに再度購入する必要があります。
主な特徴:
- 期間限定アイテムは無限の回数で販売できます。
- ユーザーがアイテムを再度購入しても、インベントリー内のアイテムの数は変化しませんが、アイテムの有効期限が切れるまでの時間が増加します。
- パブリッシャーアカウントでアイテムの有効期限を設定できます。
制限:
- 期間限定アイテムは、ゲームが提供される側からのみ管理できます。
お知らせ
ストア内のアイテムの表示時間を制限する場合は、ストア内のアイテムを表示する時間制限に関する説明を使用します。
使用に適した方
- ショップビルダーを統合し、新しいアイテムタイプ–期間限定アイテムをセットアップしたいパートナー。
Season Pass 、Battle Pass 、または限定期間でユーザーに有益点または追加コンテンツ(ゲーム内アイテムやタスクなど)を提供するさまざまな種類のアイテムを販売したいパートナー。
入手方法
前提条件
エクソーラストアをまだ統合していない場合は、次の手順を実行します:
- エクソーラストアパブリッシャーアカウントを作成します。
- プロジェクトに移動し、プロジェクトを作成するボタンをクリックします。
- プロジェクト名を追加し、作成するをクリックします。
- ストアをプロジェクトに接続します。
- 仮想アイテムモジュールを接続します。
統合フロー
- アイテムのグループを作成します。
- アイテムを作成します:
- 新しいアイテムを作成するには、アイテムプロパティメニューで期間限定アイテムを選択します。
- 有効期限を指定します。
- カタログでカタログでの期間限定アイテムを取得するを実装します。
- サブスクリプションを期間限定アイテムを購入するを実装します。
カタログでの期間限定アイテムを取得する
ストアに追加された仮想アイテムの完全リストを表示するには、仮想アイテムリストを取得 APIメソッドを実装します。
例
Copy
- javascript
1var data = null;
2
3var xhr = new XMLHttpRequest();
4xhr.withCredentials = true;
5
6xhr.addEventListener("readystatechange", function () {
7 if (this.readyState === this.DONE) {
8 console.log(this.responseText);
9 }
10});
11
12xhr.open("GET", "https://store.xsolla.com/api/v2/project/44056/items/virtual_items?locale=en");
13
14xhr.send(data);
15
16//RESPONSE
17
18"items": [
19 {
20 "attributes": [],
21 "description": "Conquer your foes with vindication using the Basic Blaster! ",
22 "groups": [
23 "all",
24 "featured",
25 "Xsolla",
26 "weapons"
27 ],
28 "image_url": "https://cdn.xsolla.net/img/misc/images/0c59a7698d4f66c1008b27ee752089b7.png",
29 "is_free": false,
30 "name": "Xsolla Basic Blaster 1",
31 "order": 1,
32 "price": {
33 "amount": "0.9950000000000000",
34 "amount_without_discount": "1.9900000000000000",
35 "currency": "USD"
36 },
37 "sku": "gun_1",
38 "type": "virtual_good"
期間限定アイテムを購入する
最初の購入後、期間限定アイテムがインベントリに追加されます。
2回目以降と将来の購入:
- 期間限定アイテムがアクティブな場合、アイテムの有効期限は残りの時間と合計されます。
- 期間限定アイテムがアクティブでない場合、アイテムの有効期限がデフォルトです。
期間限定アイテムを購入するには、次のメソッドを実装します。
Get cart
仮想アイテムの購入には、カーIDによるカートを取得するまたは現在のユーザーのカートを取得するAPIメソッドを実装します。カートIDはアイテムの追加/削除に使用されます。
例
Copy
- javascript
1var data = null;
2
3var xhr = new XMLHttpRequest();
4xhr.withCredentials = true;
5
6xhr.addEventListener("readystatechange", function () {
7 if (this.readyState === this.DONE) {
8 console.log(this.responseText);
9 }
10});
11
12xhr.open("GET", "https://store.xsolla.com/api/v2/project/44056/cart/custom_id?locale=en¤cy=USD");
13xhr.setRequestHeader("authorization", "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE5NjIyMzQwNDgsImlzcyI6Imh0dHBzOi8vbG9naW4ueHNvbGxhLmNvbSIsImlhdCI6MTU2MjE0NzY0OCwidXNlcm5hbWUiOiJ4c29sbGEiLCJ4c29sbGFfbG9naW5fYWNjZXNzX2tleSI6IjA2SWF2ZHpDeEVHbm5aMTlpLUc5TmMxVWFfTWFZOXhTR3ZEVEY4OFE3RnMiLCJzdWIiOiJkMzQyZGFkMi05ZDU5LTExZTktYTM4NC00MjAxMGFhODAwM2YiLCJlbWFpbCI6InN1cHBvcnRAeHNvbGxhLmNvbSIsInR5cGUiOiJ4c29sbGFfbG9naW4iLCJ4c29sbGFfbG9naW5fcHJvamVjdF9pZCI6ImU2ZGZhYWM2LTc4YTgtMTFlOS05MjQ0LTQyMDEwYWE4MDAwNCIsInB1Ymxpc2hlcl9pZCI6MTU5MjR9.GCrW42OguZbLZTaoixCZgAeNLGH2xCeJHxl8u8Xn2aI");
14
15xhr.send(data);
16
17//RESPONSE
18
19{
20 "cart_id": "custom_id",
21 "is_free": true,
22 "items": [],
23 "price": null
24}
お知らせ
(カートを作成しないで)クイックアイテム購入を有効にする場合には、指定したアイテムで注文を作成する APIメソッドを使用します。
Create order with all items
- APIメソッドの1つを実装します:
- カートをIDで取得する場合には、特定のカートの全アイテムを対象とした注文を作成する。
- 現在のカートを取得する場合には、現在のカートの全アイテムを対象とした注文を作成する。
作成された注文は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を使用します:
例
Copy
- javascript
1var data = JSON.stringify({
2 "currency": "USD",
3 "locale": "en",
4 "sandbox": false
5});
6
7var xhr = new XMLHttpRequest();
8xhr.withCredentials = true;
9
10xhr.addEventListener("readystatechange", function () {
11 if (this.readyState === this.DONE) {
12 console.log(this.responseText);
13 }
14});
15
16xhr.open("POST", "https://store.xsolla.com/api/v2/project/44056/payment/cart/custom_id");
17xhr.setRequestHeader("content-type", "application/json");
18xhr.setRequestHeader("authorization", "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE5NjIyMzQwNDgsImlzcyI6Imh0dHBzOi8vbG9naW4ueHNvbGxhLmNvbSIsImlhdCI6MTU2MjE0NzY0OCwidXNlcm5hbWUiOiJ4c29sbGEiLCJ4c29sbGFfbG9naW5fYWNjZXNzX2tleSI6IjA2SWF2ZHpDeEVHbm5aMTlpLUc5TmMxVWFfTWFZOXhTR3ZEVEY4OFE3RnMiLCJzdWIiOiJkMzQyZGFkMi05ZDU5LTExZTktYTM4NC00MjAxMGFhODAwM2YiLCJlbWFpbCI6InN1cHBvcnRAeHNvbGxhLmNvbSIsInR5cGUiOiJ4c29sbGFfbG9naW4iLCJ4c29sbGFfbG9naW5fcHJvamVjdF9pZCI6ImU2ZGZhYWM2LTc4YTgtMTFlOS05MjQ0LTQyMDEwYWE4MDAwNCIsInB1Ymxpc2hlcl9pZCI6MTU5MjR9.GCrW42OguZbLZTaoixCZgAeNLGH2xCeJHxl8u8Xn2aI");
19
20xhr.send(data);
21
22//RESPONSE
23
24{
25 "order_id": 641,
26 "token": "f4puMEFFDZcx9nv5HoNHIkPe9qghvBQo"
27}
Get order
購入が既に処理されたかを判断するには注文する APIメソッドを実装します。以下の注文ステータスが利用できます。- New — 注文が作成されたものの、支払いはされていない。
- Paid — 注文に対する支払い済み。
- Cancelled — 注文はキャンセル済み。
- Done — 注文は支払いが完了し、アイテムはインベントリに追加されました。
お知らせ
ステータスの確認は一定の頻度で実行されるべきです。1度だけの確認だと、注文に新しいステータスが付与される前に確認される可能性があるためです。
Copy
- javascript
1var data = null;
2
3var xhr = new XMLHttpRequest();
4xhr.withCredentials = true;
5
6xhr.addEventListener("readystatechange", function () {
7 if (this.readyState === this.DONE) {
8 console.log(this.responseText);
9 }
10});
11
12xhr.open("GET", "https://store.xsolla.com/api/v2/project/44056/order/656");
13xhr.setRequestHeader("authorization", "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE5NjIyMzQwNDgsImlzcyI6Imh0dHBzOi8vbG9naW4ueHNvbGxhLmNvbSIsImlhdCI6MTU2MjE0NzY0OCwidXNlcm5hbWUiOiJ4c29sbGEiLCJ4c29sbGFfbG9naW5fYWNjZXNzX2tleSI6IjA2SWF2ZHpDeEVHbm5aMTlpLUc5TmMxVWFfTWFZOXhTR3ZEVEY4OFE3RnMiLCJzdWIiOiJkMzQyZGFkMi05ZDU5LTExZTktYTM4NC00MjAxMGFhODAwM2YiLCJlbWFpbCI6InN1cHBvcnRAeHNvbGxhLmNvbSIsInR5cGUiOiJ4c29sbGFfbG9naW4iLCJ4c29sbGFfbG9naW5fcHJvamVjdF9pZCI6ImU2ZGZhYWM2LTc4YTgtMTFlOS05MjQ0LTQyMDEwYWE4MDAwNCIsInB1Ymxpc2hlcl9pZCI6MTU5MjR9.GCrW42OguZbLZTaoixCZgAeNLGH2xCeJHxl8u8Xn2aI");
14
15xhr.send(data);
16
17//RESPONSE
18
19{
20 "content": {
21 "is_free": false,
22 "items": [
23 {
24 "is_free": false,
25 "price": {
26 "amount": "0.9950",
27 "amount_without_discount": "1.9900",
28 "currency": "USD"
29 },
30 "quantity": 123,
31 "sku": "gun_1"
32 }
33 ],
34 "price": {
35 "amount": "122.3850",
36 "amount_without_discount": "122.3850",
37 "currency": "USD"
38 }
39 },
40 "order_id": 656,
41 "status": "new"
42}
この記事は役に立ちましたか?
ご意見ありがとうございました!
あなたのメッセージを確認し、体験を向上させるために利用させていただきます。誤字脱字などのテキストエラーを見つけましたか? テキストを選択し、Ctrl+Enterを押します。