In-Game Store / Инвентарь игрока
  На главную

In-Game Store

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

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

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

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

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

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

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

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

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

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

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

    Внутриигровые покупки через магазин Xsolla

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

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

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

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

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

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

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

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

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

  1. Настройте внутриигровой магазин.
  2. Настройте аутентификацию.
  3. Реализуйте методы для работы с инвентарем.

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

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

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

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

Примечание
Если вы используете свой метод идентификации пользователей, передайте user.id в серверные методы начисления и списания предметов. Значение параметра должно совпадать с user.id, который используется в Pay Station access token.

Аутентификация через продукт Login

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

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

Примечание
Для работы с Xsolla API вы можете использовать готовые методы SDK для игровых движков и платформ:

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

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

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

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

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

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

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

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

Значения параметров вы можете найти в Личном кабинете:

  • ID продавца указан:
    • В разделе Настройки проекта > Вебхуки.
    • Разделе Настройки компании > Компания.
    • Aдресной строке браузера на любой странице Личного кабинета. URL-адрес имеет вид `https://publisher.xsolla.com/​ID продавца/раздел Личного кабинета`.

  • Ключ API отображается в Личном кабинете только при создании и должен храниться на вашей стороне. Создать ключ можно в разделах:
    • Настройки компании > Ключи API;
    • Настройки проекта > Ключи API.
Внимание

Подробная информация о работе с ключами API приведена в справочнике API.

Основные рекомендации:

  • Сохраните созданный ключ API на вашей стороне. Вы можете посмотреть ключ API в Личном кабинете только один раз при его создании.
  • Никому не сообщайте ваш ключ API, так как он дает доступ к управлению аккаунтом и проектами в Личном кабинете.
  • Ключ API должен храниться на вашем сервере и никогда — в бинарных файлах или на фронтенде.

Copy
Full screen
Small screen

http

  • 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

$uri = 'https://store.xsolla.com/api/v2/project/{project_id}/inventory/reward';

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

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

$request = curl_init($uri);
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
curl_setopt($request, CURLOPT_POST, true);
curl_setopt($request, CURLOPT_POSTFIELDS, []);
curl_setopt($request, CURLOPT_HTTPHEADER, $headers);

$response = curl_exec($request);
print_r($response);
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, чтобы добавить указанный предмет в инвентарь пользователя или начислить указанную виртуальную валюту на его баланс.

Запрос:

Copy
Full screen
Small screen
<?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);

Ответ:

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

Запрос:

Copy
Full screen
Small screen
<?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);

Ответ:

Copy
Full screen
Small screen
{
    "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, чтобы добавить предмет в инвентарь при покупке на сторонней платформе.

Запрос:

Copy
Full screen
Small screen
<?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);

Ответ:

Copy
Full screen
Small screen

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

Примечание
Для работы с Xsolla API вы можете использовать готовые методы SDK для игровых движков и платформ:

Реализуйте вызов метода Get user’s inventory, чтобы получить список предметов, добавленных в инвентарь после оплаты покупки.

Запрос:

Copy
Full screen
Small screen
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);

Ответ:

Copy
Full screen
Small screen
{
  "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

Примечание
Для работы с Xsolla API вы можете использовать готовые методы SDK для игровых движков и платформ:

Реализуйте вызов метода Get user’s virtual balance, чтобы получить информацию о виртуальном балансе пользователя на текущий момент.

Запрос:

Copy
Full screen
Small screen
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);

Ответ:

Copy
Full screen
Small screen

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

Примечание
Для работы с Xsolla API вы можете использовать готовые методы SDK для игровых движков и платформ:

Реализуйте вызов метода Consume item, чтобы израсходовать предмет из инвентаря пользователя.

Запрос:

Copy
Full screen
Small screen
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.
Ошибки, возникающие при работе с Commerce API:
КодОписаниеДействие
0401-1101Сервис недоступен (некорректный адрес, соединение отклонено или было разорвано).Проверить статус системы на status.xsolla.com; обратиться в службу поддержки Xsolla, к персональному менеджеру проекта или написать на csm@xsolla.com.
0401-1102Некорректные входные данные запроса.Свериться со спецификацией в документации.
0401-1016Неверная кодировка одного из параметров запроса.Проверить содержимое запроса.
0401-1019Метод не поддерживается.Проверить запрос. Доступные методы должны быть в ответе.
0401-1020Ошибка авторизации при использовании хеша ключа мерчанта.Проверить ключ API.
Была ли статья полезна?
Спасибо!
Что может сделать страницу еще лучше? Сообщение
Жаль, что так произошло
Расскажите, почему статья не была полезна. Сообщение
Спасибо за обратную связь!
Ваши мысли и идеи помогут нам улучшить ваш пользовательский опыт.
Оценить страницу
Оценить страницу
Что может сделать страницу еще лучше?

В другой раз

Спасибо за обратную связь!
Последнее обновление: 22 января 2024

Нашли опечатку или ошибку в тексте? Выделите ее и нажмите Ctrl+Enter.

Сообщите о проблеме
Мы постоянно улучшаем качество нашей документации. Ваш отзыв поможет нам в этом.
Укажите email-адрес, чтобы мы могли связаться с вами
Спасибо за обратную связь!