プレイヤーインベントリ

エクソラプレイヤーインベントリを使用すると、パートナーは次のことができます:

  • すべてのプラットフォームでユーザーのすべての購入とプレミアム報酬を同期しますエクソラAPIを使用して、
  • ユーザーのインベントリ内のアイテムと通貨を付与および取り消します。

用語集

インベントリ

インベントリは、ユーザーが購入、獲得、または消費できるゲーム内のすべてのアイテムのセットです。

消耗品アイテム

消耗品アイテムとは、インベントリ内のアイテムで、繰り返し発生または購入でき、一度使用するとその数が減少します。アイテムの在庫を補充できます。例:敵を攻撃する手りゅう弾と弾丸、コインなど。

非消耗品アイテム

非消耗品アイテムとは、インベントリ内のアイテムであり、1回のみ発生または購入できます。インベントリから消えることがありません。例:ロケーションへのアクセス、ステータス、サブスクリプション。

ゲーム内ストア

ゲーム内ストアは、ゲーム内購入管理のためのサービスです。仮想商品の広範なカスタマイズ可能なカタログを使用して、開発者に少額取引をゲーム経済に追加する機会を提供します。

仕組み

プレイヤーインベントリは、ユーザーIDによってユーザーのインベントリを管理します。ユーザーIDは、エクソラログインを通じて実装されます。独自の識別システムを構成した場合、クライアントAPIメソッドに決済ステーションアクセストークンを使用できます。

プレイヤーインベントリAPIメソッドを使用するには、認証を構成する必要があります。

ユーザーのインベントリには、消耗品と非消耗品の両方が含まれる場合があります。消耗品は購入してインベントリに数回追加し、ゲームクライアントを通じてインベントリから削除できます。非消耗品のアイテムは、一度だけ購入してインベントリに追加できます。ゲームサーバーを通じて、購入のキャンセルとインベントリからの削除ができます。

上記のスキームは、プレイヤーインベントリで操作する次の原則を示しています。

1-インベントリの取得

  1. ユーザーは、エクソラログインアカウントまたは識別方法によってゲーム内で識別されます。
  2. アプリケーション(クライアント)は、Get user’s inventoryメソッドを呼び出して購入とユーザーの報酬のリストを取得し、Get user’s virtual balanceメソッドを呼び出して仮想通貨の残高を取得します。
  3. エクソラインベントリサーバーは、ユーザーが現在所有している購入、報酬、または残高に関する情報をクライアントに返します。

2-エクソラストアを介したゲーム内購入

  1. ユーザーは、エクソラログインアカウントまたは識別方法によってゲーム内で識別されます。
  2. ユーザーはエクソラストアで購入します。
  3. コンテンツ購入イベントがエクソラインベントリサーバーに送信され、その後、購入したアイテムがユーザーのインベントリに自動的に付与されます。

Note: このアルゴリズムはエクソラ側で完全に実装されており、ゲームサーバー側での操作は必要ありません。

3-サードパーティの公開プラットフォーム(Steam、PlayStationなど)を介したアプリ内購入

  1. ユーザーは、プラットフォームアカウントを使用してゲームにログインします。
  2. ユーザーは、プラットフォームの支払いシステムを通じて購入します。
  3. ゲームサーバーは、Grant items by purchase to usersメソッドを呼び出して、エクソラインベントリサーバーでの購入を許可し、ゲーム内で固有のユーザーIDを送信します。
  4. エクソラインベントリサーバーは、指定されたIDでユーザーのインベントリに購入を追加します。

Note: ゲームのサーバー側では、さまざまな公開プラットフォーム上のユーザーアカウント間の同期を確保する必要があります。

4-ユーザーへの報酬の付与

  1. ユーザーは、エクソラログインアカウントまたは識別方法を使用して、ゲーム内で識別されます。
  2. あなたのサーバーは、Grant items to usersメソッドを呼び出して報酬を付与し、ゲーム内で固有のユーザーIDを送信します。
  3. エクソラインベントリサーバーは、指定されたIDを持つユーザーのインベントリに報酬を追加します。

Note: ゲームのサーバー側では、さまざまな公開プラットフォーム上のユーザーアカウント間の同期を確保する必要があります。

5-インベントリの同期

  1. ユーザーは、エクソラログインアカウント、識別メソッド、または第三者のプラットフォームアカウントによってゲーム内で識別されます。
  2. 必要に応じて、ゲームサーバーはユーザーアカウントを同期します。
  3. ゲームクライアントは、Get user’s inventoryメソッドを呼び出して、使用可能なゲーム内購入を確認し、固有のユーザーIDを送信します。
  4. エクソラインベントリサーバーは、指定されたIDの使用可能なアイテムのリストを返します。

統合フロー

プレイヤーインベントリを有効にするには:

  1. エクソラパブリッシャーアカウントを新規登録する。
  2. パブリッシャーアカウントでプロジェクトを作成および構成する。
  3. パブリッシャーアカウントで仮想アイテム仮想通貨モジュールを設定します。
  4. APIまたはUnity / Unreal SDKを介してゲーム内ストアに接続します。
  5. 認証を設定します。
  6. インベントリ管理の方法を実装します。

プロジェクトの作成

  1. プロジェクトに移動して、プロジェクトの作成ボタンをクリックします。
  2. プロジェクト名を追加して作成をクリックします。

  1. プロジェクト設定>統合設定に移動し、Store APIメソッドを接続します。

  1. ストアをプロジェクトに接続します。

仮想アイテムのセットアップ

  1. 仮想アイテムモジュールを接続します。

  1. アイテムのグループを作成します(選択可能)。

  1. アイテムを作成します。

仮想通貨のセットアップ

  1. 仮想通貨モジュールを接続します。

  1. 仮想通貨を作成します。

認証設定

セキュリティを提供するために、許可および取り消しメソッドはゲームサーバーによって呼び出されます。上記の方法では、基本的なアクセス認証を実装する必要があります。

ユーザーのインベントリを取得してアイテムを消費するメソッドは、SDKまたはAPIを介してゲームクライアントによって呼び出されます。次は可能な認証オプション:

  1. エクソラログインが接続された場合、エクソラログインJWTを利用してリクエストを認証します。
  2. 独自の識別システムをセットアップしている場合は、決済ステーションアクセストークンを使用してリクエストを認証します。

Note: 独自のユーザー識別方法を使用する場合、user.idをサーバーベースのアイテムの付与および取り消しメソッドに伝送します。決済ステーションアクセストークンに使用するuser.idと同一である必要があります。

エクソラログイン経由の認証

  1. 指示に従ってパブリッシャーアカウントプロジェクトをセットアップします。
  2. JSONウェブトークンまたはOAuth 2.0プロトコルを使用して、承認メソッドの呼び出しを実装します。

ユーザーデータがエクソラデータストレージに保存されている場合には、以下のメソッドの呼び出しを実装します:

ユーザーデータがPlayFabデータストレージに保存されている場合には、PlayFabレシピを使用します。

ユーザーデータが御社に保存されている場合には、カスタムストレージレシピを使用します。

決済ステーションアクセストークンを介した認証

認証フロー:

  1. お使いのアプリケーション(クライアント)は認証リクエストを御社のサーバーに送信します。
  2. サーバーはマーチャントIDとAPIキーをエクソラサーバーに送信し、access_tokenを要求します。
  3. エクソラサーバーは御社のサーバーにaccess_tokenを送信します。
  4. 御社のサーバーはaccess_tokenをクライアントに送信します。

返されたaccess_tokenはStore APIでの認証のための認証トークンとして使用されます。また、ストアインターフェースの構築のためにも使用されます。

基本アクセス認証のセットアップ

エクソラAPIインベントリからアイテムを付与および取り消すためのサーバーコマンドは、基本アクセス認証を使用します。APIへのすべてのリクエストにはAuthorization: Basic <your_authorization_basic_key>ヘッダ、ここで、<your_authorization_basic_key>は、Base64標準に従ってエンコードされたmerchant_id:api_keyペアです。

エクソラパブリッシャーアカウントに移動してproject_idの値とapi_keyパラメーターを見つかります:

  • project_id:プロジェクト設定>ウェブフック
  • api_key:会社の設定>APIキー

Copy
Full screen
  • http
  • curl
  • php
  • C#
  • python
  • ruby
  • java
  • js
POST https://store.xsolla.com/api/v2/project/{project_id}/inventory/reward
Headers:
  Authorization: Basic <your_authorization_basic_key>
curl --request POST \
--url 'https://store.xsolla.com/api/v2/project/{project_id}/inventory/reward' \
--header 'authorization: Basic <your_authorization_basic_key>'
<?php

// if you use Xsolla SDK for PHP
use Xsolla\SDK\API\XsollaClient;
$xsollaClient = XsollaClient::factory(array(
    'project_id' => PROJECT_ID,
    'api_key' => API_KEY
));
$eventsList = $client->ListEvents(array());

// if you don’t use Xsolla SDK for PHP
$client = new http\Client;
$request = new http\Client\Request;

$request->setRequestUrl('https://store.xsolla.com/api/v2/project/{project_id}/inventory/rewards');
$request->setRequestMethod('POST');
$request->setHeaders(array(
  'authorization' => 'Basic <your_authorization_basic_key>'
));

$client->enqueue($request)->send();
$response = $client->getResponse();

echo $response->getBody();
var client = new RestClient("https://store.xsolla.com/api/v2/project/{project_id}/inventory/reward");
var request = new RestRequest(Method.POST);
request.AddHeader("authorization", "Basic <your_authorization_basic_key>");
IRestResponse response = client.Execute(request);
import http.client

conn = http.client.HTTPSConnection("api.xsolla.com")

headers = { 'authorization': "Basic <your_authorization_basic_key>" }

conn.request("POST", "https://store.xsolla.com/api/v2/project/{project_id}/inventory/reward", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
require 'uri'
require 'net/http'

url = URI("https://store.xsolla.com/api/v2/project/{project_id}/inventory/reward
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(url)
request["authorization"] = 'Basic <your_authorization_basic_key>'

response = http.request(request)
puts response.read_body
OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
  .url("https://store.xsolla.com/api/v2/project/{project_id}/inventory/reward")
  .post()
  .addHeader("authorization", "Basic <your_authorization_basic_key>")
  .build();

Response response = client.newCall(request).execute();
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("POST", "https://store.xsolla.com/api/v2/project/{project_id}/inventory/reward");
xhr.setRequestHeader("authorization", "Basic <your_authorization_basic_key>");

xhr.send(data);

インベントリ管理メソッド

インベントリ管理メソッドには、次のメソッドが含まれます:

Grant Items to Users

Grant items to usersAPIメソッドを実装して、指定したアイテムをユーザーのインベントリに追加するか、仮想通貨を残高に追加します。

リクエスト

<?php
$uri = 'https://store.xsolla.com/api/v2/project/44056/inventory/reward';
$body = '
    [
        {
          "user": {
            "id": "0125760a-6810-11e9-84c0-42010aa80029"
          },
          "comment": "Quest completed",
          "platform": "xsolla",
          "items": [
            {
              "sku": "boots_1",
              "quantity": 5
            },
            {
              "sku": "crystal_pack_1",
              "quantity": 3
            }
          ]
        },
        {
          "user": {
            "id": "a7d10a4e-3f68-43cc-a6b2-893d2c68fd14"
          },
          "comment": "Daily reward",
          "platform": "xsolla",
          "items": [
            {
              "sku": "helmet_1",
              "quantity": 2
            },
            {
              "sku": "minigun_1",
              "quantity": 3
            }
          ]
        }
    ]';

$auth = base64_encode('44056:your_merchant_api_key');

$headers = [
    'Authorization: Basic ' . $auth,
    'Content-type: application/json'
];

$request = curl_init($uri);
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
curl_setopt($request, CURLOPT_POSTFIELDS, $body);
curl_setopt($request, CURLOPT_HTTPHEADER, $headers);

$response = curl_exec($request);

レスポンス

{
    "count": 2,
    "operations": [
        {
            "user_id": "0125760a-6810-11e9-84c0-42010aa80029",
            "platform": "xsolla",
            "comment": "Quest completed",
            "items": [
                {
                    "sku": "boots_1",
                    "quantity": 5
                },
                {
                    "sku": "crystal_pack_1",
                    "quantity": 3
                }
            ]
        },
        {
            "user_id": "a7d10a4e-3f68-43cc-a6b2-893d2c68fd14",
            "platform": "xsolla",
            "comment": "Daily reward",
            "items": [
                {
                    "sku": "helmet_1",
                    "quantity": 2
                },
                {
                    "sku": "minigun_1",
                    "quantity": 3
                }
            ]
        }
  ]
}

Revoke Inventory Items

Revoke inventory itemsAPIメソッドを実装して、指定したアイテムをユーザーのインベントリから取り消すか、残高から仮想通貨を取り消します。

リクエスト

<?php
$uri = 'https://store.xsolla.com/api/v2/project/44056/inventory/revoke';
$body = '
    [
        {
          "user": {
            "id": "0125760a-6810-11e9-84c0-42010aa80029"
          },
          "comment": "Remove from inventory",        
          "items": [
            {
              "sku": "boots_1",
              "quantity": 5
            },
            {
              "sku": "crystal_pack_1",
              "quantity": 3
            }
          ]
        },
        {
          "user": {
            "id": "a7d10a4e-3f68-43cc-a6b2-893d2c68fd14"
          },
          "comment": "Cheater",
          "items": [
            {
              "sku": "helmet_1",
              "quantity": 2
            },
            {
              "sku": "minigun_1",
              "quantity": 3
            }
          ]
        }
    ]';

$auth = base64_encode('44056:your_merchant_api_key');

$headers = [
    'Authorization: Basic ' . $auth,
    'Content-type: application/json'
];

$request = curl_init($uri);
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
curl_setopt($request, CURLOPT_POSTFIELDS, $body);
curl_setopt($request, CURLOPT_HTTPHEADER, $headers);

$response = curl_exec($request);
print_r($response);

レスポンス

{
    "count": 2,
    "operations": [
        {
            "user_id": "0125760a-6810-11e9-84c0-42010aa80029",
            "platform": "xsolla",
            "comment": "Remove from inventory",
            "items": [
                {
                    "sku": "boots_1",
                    "quantity": 5
                },
                {
                    "sku": "crystal_pack_1",
                    "quantity": 3
                }
            ]
        },
        {
            "user_id": "a7d10a4e-3f68-43cc-a6b2-893d2c68fd14",
            "platform": "xsolla",
            "comment": "Cheater",
            "items": [
                {
                    "sku": "helmet_1",
                    "quantity": 2
                },
                {
                    "sku": "minigun_1",
                    "quantity": 3
                }
            ]
        }
    ]
}

Grant Items by Purchase to Users

Grant items by purchase to usersAPIメソッドを実装して、サードパーティプラットフォームで購入が行われたときにアイテムをユーザーのインベントリに追加します。

リクエスト

<?php
$uri = 'https://store.xsolla.com/api/v2/project/44056/inventory/purchase';
$body = '
    [
        {
          "user": {
            "id": "0125760a-6810-11e9-84c0-42010aa80029"
          },
          "comment": "Purchase in App Store",
          "platform": "app_store_ios",
          "purchase": {
            "amount": "3.99",
            "currency": "USD",
            "external_purchase_id": "MS6TGW7023",
            "external_purchase_date": "2020-01-25T05:00:00+05:00"
          },        
          "items": [
            {
              "sku": "boots_1",
              "quantity": 5
            },
            {
              "sku": "crystal_pack_1",
              "quantity": 3
            }
          ]
        },
        {
          "user": {
            "id": "a7d10a4e-3f68-43cc-a6b2-893d2c68fd14"
          },
          "comment": "Purchase in Google Play",
          "platform": "google_play",
          "purchase": {
            "amount": "1.99",
            "currency": "EUR",
            "external_purchase_id": "GPA.3357-9348-5932-89841",
            "external_purchase_date": "2020-02-14T05:00:00+05:00"
          },
          "items": [
            {
              "sku": "helmet_1",
              "quantity": 2
            },
            {
              "sku": "minigun_1",
              "quantity": 3
            }
          ]
        }
    ]';

$auth = base64_encode('44056:your_merchant_api_key');

$headers = [
    'Authorization: Basic ' . $auth,
    'Content-type: application/json'
];

$request = curl_init($uri);
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
curl_setopt($request, CURLOPT_POSTFIELDS, $body);
curl_setopt($request, CURLOPT_HTTPHEADER, $headers);

$response = curl_exec($request);
print_r($response);

レスポンス

{
    "count": 2,
  "operations": [
    {
      "user_id": "0125760a-6810-11e9-84c0-42010aa80029",
      "platform": "app_store_ios",
      "comment": "Purchase in App Store",
      "items": [
        {
          "sku": "boots_1",
          "quantity": 5
        },
        {
          "sku": "crystal_pack_1",
          "quantity": 3
        }
      ],
      "order_id": 4125,
      "external_purchase_id": "MS6TGW7023",
      "external_purchase_date": "2020-01-25T05:00:00+05:00",
      "amount": "3.99",
      "currency": "USD"
    },
    {
      "user_id": "a7d10a4e-3f68-43cc-a6b2-893d2c68fd14",
      "platform": "google_play",
      "comment": "Purchase in Google Play",
      "items": [
        {
            "sku": "helmet_1",
          "quantity": 2
        },
        {
            "sku": "minigun_1",
          "quantity": 3
        }
      ],
      "order_id": 4126,
      "external_purchase_id": "GPA.3357-9348-5932-89841",
      "external_purchase_date": "2020-02-14T05:00:00+05:00",
      "amount": "1.99",
      "currency": "EUR"
    }
  ]
}

Get User’s Inventory

Get user’s inventoryAPIメソッドを実装して、購入後にユーザーのインベントリに追加されたアイテムのリストを取得します。

リクエスト

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);

レスポンス

{
  "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"
    }
  ]
}

Get User’s Virtual Balance

Get user’s virtual balanceAPIメソッドを実装して、現在のユーザーの仮想通貨残高に関する情報を取得します。

リクエスト

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/virtual_currency_balance");
xhr.setRequestHeader("authorization", "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE5NjIyMzQwNDgsImlzcyI6Imh0dHBzOi8vbG9naW4ueHNvbGxhLmNvbSIsImlhdCI6MTU2MjE0NzY0OCwidXNlcm5hbWUiOiJ4c29sbGEiLCJ4c29sbGFfbG9naW5fYWNjZXNzX2tleSI6IjA2SWF2ZHpDeEVHbm5aMTlpLUc5TmMxVWFfTWFZOXhTR3ZEVEY4OFE3RnMiLCJzdWIiOiJkMzQyZGFkMi05ZDU5LTExZTktYTM4NC00MjAxMGFhODAwM2YiLCJlbWFpbCI6InN1cHBvcnRAeHNvbGxhLmNvbSIsInR5cGUiOiJ4c29sbGFfbG9naW4iLCJ4c29sbGFfbG9naW5fcHJvamVjdF9pZCI6ImU2ZGZhYWM2LTc4YTgtMTFlOS05MjQ0LTQyMDEwYWE4MDAwNCIsInB1Ymxpc2hlcl9pZCI6MTU5MjR9.GCrW42OguZbLZTaoixCZgAeNLGH2xCeJHxl8u8Xn2aI");
xhr.send(data);

レスポンス

{
  "items": [
    {
      "amount": 683,
      "description": "Main in-game currency",
      "image_url": "https://cdn3.xsolla.com/img/misc/images/91df536af4616519f639664854c13d75.png",
      "name": "Crystals",
      "sku": "crystal",
      "type": "virtual_currency"
    },
    {
      "amount": 450,
      "description": "Money for in-store purchases",
      "image_url": "https://cdn3.xsolla.com/img/misc/images/fda67a3feedaa706b4e4ae05a9edd6ab.png",
      "name": "Gold",
      "sku": "gold",
      "type": "virtual_currency"
    }
  ]
}

Consume Item

Consume itemAPIメソッドを実装して、ユーザーのインベントリからアイテムを消費します。

リクエスト

let data = JSON.stringify({
  "sku": "gun_1",
  "quantity": 1,
  "instance_id": null
});

let 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/user/inventory/item/consume");
xhr.setRequestHeader("content-type", "application/json");
xhr.setRequestHeader("authorization", "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE5NjIyMzQwNDgsImlzcyI6Imh0dHBzOi8vbG9naW4ueHNvbGxhLmNvbSIsImlhdCI6MTU2MjE0NzY0OCwidXNlcm5hbWUiOiJ4c29sbGEiLCJ4c29sbGFfbG9naW5fYWNjZXNzX2tleSI6IjA2SWF2ZHpDeEVHbm5aMTlpLUc5TmMxVWFfTWFZOXhTR3ZEVEY4OFE3RnMiLCJzdWIiOiJkMzQyZGFkMi05ZDU5LTExZTktYTM4NC00MjAxMGFhODAwM2YiLCJlbWFpbCI6InN1cHBvcnRAeHNvbGxhLmNvbSIsInR5cGUiOiJ4c29sbGFfbG9naW4iLCJ4c29sbGFfbG9naW5fcHJvamVjdF9pZCI6ImU2ZGZhYWM2LTc4YTgtMTFlOS05MjQ0LTQyMDEwYWE4MDAwNCIsInB1Ymxpc2hlcl9pZCI6MTU5MjR9.GCrW42OguZbLZTaoixCZgAeNLGH2xCeJHxl8u8Xn2aI");

xhr.send(data);

エラーリスト

ユーザーまたはユーザーのインベントリー管理エラー:

コード説明アクション
0401-5002ユーザーのインベントリにアイテムを追加するための間違ったデータ。item_idを指定する必要があり、instance_idまたはquantitynull値が必要です。
0401-5003ユーザーIDが指定されていません。リクエスト内のユーザーIDの存在をチェックします。
0401-5004ユーザーのインベントリにアイテムがありません。アイテムがインベントリにあることを確認してください。インベントリステータスは、Get user's inventoryメソッドを介して確認されます。
0401-5006購入するための十分な仮想通貨が見つかりません。-
0401-5007非消耗品を消費しようとしています。-
0401-5008ユーザーが見つかりません。-
0401-5009サードパーティプラットフォームの購入を許可するときに、purchaseがパスしませんでした。-

アイテム管理エラー:

コード説明アクション
0401-4001基準でアイテムが見つかりません。Get user's inventoryメソッドを呼び出して、アイテムのリストを確認します。

Store API管理エラー:

コード説明アクション
0401-1101サービスを利用できません(間違ったアドレス、接続の問題)。status.xsolla.comでシステムの状態をチェックします;エクソラ顧客サポートチームまたはアカウントマネージャーと連絡します。
0401-1102不正なリクエストエントリデータ。API仕様をチェックします。
0401-1016リクエストエントパラメーターの1つのエンコードが間違っています。リクエストの内容をチェックします。
0401-1019メソッドはサポートされていません。リクエストをチェックします。サポートされているメソッドは応答にあります。
0401-1020販売者のキーハッシュを使用する際の認証エラー。APIキーをチェックします。

レシピ

私たちのレシピは、プレイヤーインベントリの高度な機能のいくつかを試すのに役立ちます: