Инвентарь игрока

Продукт Инвентарь игрока (Xsolla Player Inventory) позволяет:

  • синхронизировать все покупки и премиальные награды пользователя на всех платформах;
  • использовать API Иксоллы, чтобы начислять и списывать предметы и валюту в инвентаре пользователя.

Глоссарий

Инвентарь

Инвентарь — набор всех предметов в игре, которые пользователь может купить, заработать, потратить.

Расходуемый предмет

Расходуемый предмет — предмет, который можно начислить или купить множество раз. Исчезает из инвентаря в процессе игры. Пример: гранаты и пули для атаки противников, монеты.

Нерасходуемый предмет

Нерасходуемый предмет — предмет, который можно начислить или купить только один раз, не исчезает из инвентаря. Пример: доступ к локации, статус, подписка.

Внутриигровой магазин

Внутриигровой магазин — сервис для управления внутриигровыми покупками. Предоставляет разработчикам широкие возможности добавления микротранзакций в игровую экономику с помощью настраиваемого каталога виртуальных товаров.

Как это работает

Инвентарь игрока управляет инвентарем пользователя, используя ID пользователя. Идентификация пользователей выполняется через Авторизацию Иксолла. Если у вас настроена своя система идентификации, вы можете использовать Pay Station Access Token для клиентских методов API.

Для работы с методами Inventory API необходимо настроить аутентификацию.

Инвентарь пользователя может состоять из расходуемых и нерасходуемых предметов. Расходуемые предметы могут быть приобретены и добавлены в инвентарь несколько раз и списаны из инвентаря через клиент игры. Нерасходуемые предметы могут быть приобретены и добавлены в инвентарь только один раз. Отмена покупки и списание из инвентаря осуществляются через сервер игры.

Схема выше иллюстрирует следующие возможности работы продукта:

1 — Получение инвентаря

  1. Пользователь проходит идентификацию в игре, используя учетную запись Авторизации Иксолла или ваш метод идентификации.
  2. Ваш клиент вызывает методы Get user’s inventory для получения списка покупок и наград пользователя и Get user’s virtual balance для получения баланса виртуальной валюты.
  3. Сервер Xsolla Inventory возвращает вашему клиенту информацию о покупках, наградах или балансе, принадлежащих пользователю в настоящее время.

2 — Внутриигровые покупки через магазин Иксоллы

  1. Пользователь проходит идентификацию в игре, используя учетную запись Авторизации Иксолла или ваш метод идентификации.
  2. Пользователь совершает покупку через Магазин Иксолла.
  3. Событие покупки контента поступает на сервер Xsolla Inventory, и купленные предметы автоматически добавляются в инвентарь пользователя.

Note: Данный алгоритм полностью осуществляется на стороне Иксоллы и не требует участия сервера игры.

3 — Внутриигровые покупки через стороннюю платформу публикации (Steam, PlayStation и др.)

  1. Пользователь авторизуется в игре, используя учетную запись платформы.
  2. Пользователь совершает покупку через систему оплаты платформы.
  3. Сервер игры вызывает метод Grant items by purchase to users для начисления покупки на сервер Xsolla Inventory, передав ему при этом уникальный ID пользователя внутри игры.
  4. Сервер Xsolla Inventory добавляет покупку в инвентарь пользователя с указанным ID.

Note: На стороне сервера игры необходимо обеспечить синхронизацию аккаунтов пользователя на различных платформах публикации.

4 — Начисление награды пользователю

  1. Пользователь проходит идентификацию в игре, используя учетную запись Авторизации Иксолла или ваш метод идентификации.
  2. Сервер игры вызывает метод Grant items to users для начисления награды, передав ему при этом уникальный ID пользователя внутри игры.
  3. Сервер Xsolla Inventory добавляет награду в инвентарь пользователя с указанным ID.

Note: На стороне сервера игры необходимо обеспечить синхронизацию аккаунтов пользователя на различных платформах публикации.

5 — Синхронизация инвентаря

  1. Пользователь проходит идентификацию в игре, используя учетную запись Авторизации Иксолла, ваш метод идентификации или учетную запись сторонней платформы.
  2. Сервер игры синхронизирует аккаунты пользователя, если необходимо.
  3. Клиент игры вызывает метод Get user’s inventory, чтобы проверить, какие внутриигровые покупки доступны для использования, и передает при этом уникальный ID пользователя.
  4. Сервер Xsolla Inventory возвращает по указанному ID список доступных предметов.

Сценарий интеграции

Чтобы подключить Инвентарь игрока:

  1. Зарегистрируйтесь в Личном кабинете Иксолла.
  2. Создайте и настройте проект в Личном кабинете.
  3. Настройте модуль Виртуальная валюта или Виртуальные предметы в Личном кабинете.
  4. Подключите Внутриигровой магазин через API или Unity/Unreal SDK.
  5. Настройте аутентификацию.
  6. Реализуйте методы для работы с инвентарем.

Создание проекта

  1. Перейдите в Проекты и нажмите Создать проект.
  2. Добавьте Название проекта и нажмите Создать.

  1. Перейдите в Настройки проекта > Настройки интеграции и подключите интеграцию методов Store API.

  1. Подключите Магазин к вашему проекту.

Настройка модуля Виртуальные предметы

  1. Подключите модуль Виртуальные предметы.

  1. Создайте группу предметов (опционально).

  1. Создайте предметы.

Настройка модуля Виртуальная валюта

  1. Подключите модуль Виртуальная валюта.

  1. Создайте виртуальную валюту.

Настройка аутентификации

В целях обеспечения безопасности методы начисления и списания предметов в инвентаре вызываются сервером игры. Для данных методов необходимо реализовать базовую HTTP-аутентификацию.

Методы получения инвентаря и потребления предметов вызываются клиентом игры (через SDK или по API). Возможны следующие варианты аутентификации:

  1. Если у вас подключена Авторизация Иксолла, аутентификация запросов выполняется через Xsolla Login JWT.
  2. Если у вас настроена своя система идентификации, для аутентификации запросов используется Pay Station Access Token.

Note: Если вы используете свой метод идентификации пользователей, в серверные методы начисления и списания предметов необходимо передавать тот же user.id, который используется в Pay Station Access Token.

Аутентификация через Xsolla Login

  1. Настройте проект в Личном кабинете, следуя инструкции.
  2. Реализуйте вызов методов авторизации с помощью JSON Web Token или по протоколу OAuth 2.0.

Если данные пользователей хранятся на стороне Иксоллы, реализуйте методы:

Если данные пользователей хранятся на стороне PlayFab, используйте рецепт для хранилища PlayFab.

Если данные пользователей хранятся на вашей стороне, используйте рецепт для собственного хранилища.

Аутентификация через Pay Station Access Token

Алгоритм аутентификации:

  1. Ваш клиент отправляет запрос на аутентификацию на ваш сервер.
  2. Ваш сервер передает Merchant ID и API key на сервер Иксоллы и запрашивает access_token.
  3. Сервер Иксоллы передает access_token на ваш сервер.
  4. Ваш сервер передает access_token вашему клиенту.

Возвращенный access_token используется как авторизационный токен для аутентификации в Store API и построения интерфейса магазина.

Настройка базовой HTTP-аутентификации

Серверные команды начисления и списания предметов из инвентаря API Иксоллы используюет базовую HTTP-аутентификацию. Все запросы к API должны содержать заголовок Authorization: Basic , где <your_authorization_basic_key> — пара project_id:api_key, закодированная по стандарту Base64.

Значения параметров 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 users, чтобы добавить указанный предмет в инвентарь пользователя или начислить указанную виртуальную валюту на его баланс.

Запрос

<?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 items, чтобы списать указанный предмет из инвентаря пользователя или списать указанную виртуальную валюту с его баланса.

Запрос

<?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 users, чтобы добавить предмет в инвентарь при покупке на сторонней платформе.

Запрос

<?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 inventory, чтобы получить список предметов, добавленных в инвентарь после оплаты покупки.

Запрос

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 balance, чтобы получить информацию о виртуальном балансе пользователя на текущий момент.

Запрос

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 item, чтобы израсходовать предмет из инвентаря пользователя.

Запрос

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 или quantity должен иметь значение null.
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Некорректные входные данные запроса.Свериться со спецификацией в документации.
0401-1016Неверная кодировка одного из параметров запроса.Проверить содержимое запроса.
0401-1019Метод не поддерживается.Проверить запрос. Доступные методы должны быть в ответе.
0401-1020Ошибка авторизации при использовании хеша ключа мерчанта.Проверить ключ API.

Рецепты

Изучите наши рецепты, чтобы попробовать расширенные возможности Инвентаря игрока: