The following documentation was deprecated. Current version is available at developers.xsolla.com
CURL
HTTP
PHP
JS

Введение

Xsolla API использует REST-архитектуру. В API мы используем HTTP коды ответов для обозначения ошибок и URL, аналогичных структуре каталогов.

Мы используем встроенные особенности HTTP, такие как HTTP аутентификация и HTTP методы, которые понимаются всеми HTTP клиентами, также мы поддерживаем CORS (Cross-origin resource sharing) для обеспечения безопасной работы с API вашего клиентского приложения.

Ответы API (включая ошибки) возвращаются в виде JSON.

Ресурсы

https://api.xsolla.com - базовый URL для всех ресурсов Xsolla API. Например, URL для ресурса Список проектов будет https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/projects.

Многие ресурсы включают в себя параметр ID мерчанта, который указывает, что приложение работает именно от вашего имени.

API Ресурсы

https://api.xsolla.com
https://api.xsolla.com
https://api.xsolla.com

Запрос и ответ

Запросы к ресурсам Xsolla API должны обязательно включать заголовки: Authorization, Accept

Запросы POST и PUT должны иметь дополнительный заголовок: Content-Type: application/json

По умолчанию все ответы возвращают данные в виде JSON в теле ответа и включают в себя заголовок Content-Type: application/json .

Заголовки

Authorization: Basic AUTHORIZATION_BASE64_ENCODED_STRING
Accept: application/json
Content-Type: application/json
Authorization: Basic AUTHORIZATION_BASE64_ENCODED_STRING
Accept: application/json
Content-Type: application/json
Authorization: Basic AUTHORIZATION_BASE64_ENCODED_STRING
Accept: application/json
Content-Type: application/json

Изменения API

Xsolla может изменять функциональные возможности API:

  • Xsolla может добавлять новые ресурсы API;

  • Xsolla может добавлять необязательные параметры запроса;

  • Xsolla может добавлять новые свойства к существующим ответам API;

  • Xsolla может добавлять новые значения для параметров, имеющих перечисление возможных значений;

  • Xsolla может добавлять новые типы вебхуков и новые параметры в JSON;

  • Xsolla может добавлять необязательные заголовки в HTTP-запросы;

  • Xsolla может отклонить любой запрос, если его параметры принимают недопустимые значения;

  • Ошибочно сформированные запросы могут быть приняты из-за избыточно мягкого анализа синтаксиса. В будущем, если проверка будет более строгой, подобные запросы могут быть отклонены;

  • Xsolla может добавлять, изменять или удалять недокументированные функциональные возможности в лююбое время.

Ваш клиент должен продолжать работать независимо от этих изменений. К примеру, новые параметры JSON, которые не распознаются вашим клиентом, не должны мешать его работе.

Версионирование

Все разделы API Xsolla поддерживают версионирование. Мы будем выпускать новую версию всякий раз, когда будут появляться несовместимые с текущей версией изменения. Версия обозначается идентификатором (v1, v2 и т. п.), который указывается в URL после префикса "/merchant".

Если вы начинаете работу с API, используйте самую последнюю версию. Если вы не указали версию команды, то по умолчанию будет вызвана первая версия. Обратите внимание! Целостность работы API гарантируется в рамках одной версии.

Авторизация

Xsolla использует HTTP Basic Авторизацию. Используйте ваш ID мерчанта в качестве username и ключ API (параметры можно найти в Информации о компании в Личном Кабинете Xsolla) как password.

Все API запросы должны идти через HTTPS. Вызовы по HTTP не сработают.

Все запросы требуют авторизации.

Обратите внимание, для подключения к API вы должны использовать TLS> = 1.2.

Пример

<?php

use Xsolla\SDK\API\XsollaClient;

$xsollaClient = XsollaClient::factory(array(
    'merchant_id' => MERCHANT_ID,
    'api_key' => API_KEY
));
GET /merchant/v2/merchants/{merchant_id}/events/messages HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/events/messages' \
-X GET \
-u merchant_id:merchant_api_key

Команды управления ресурсами

Все команды API указывают на тип данных, который должен быть обработан, и на действие, которое требуется совершить с этими данными. Стандартный список действий:

Метод HTTP Метод Описание
Создание
POST Создание и сохранение новых сущностей.
Список
GET Возвращает данные, подходящие под параметры запроса, которые вы присылаете.
Получение
GET Возвращает данные по конкретному идентификатору, которые вы присылаете в запросе.
Замена
PUT Заменяет все поля для сущности, переданной в запросе.
Изменение
PATCH Изменяет только указанные поля существующего объекта, который соответствует идентификатору из запроса.
Удаление
DELETE Удаляет существующий объект, который соответствует идентификатору из запроса.

Формат даты

Все представления дат передаются в строках согласно ISO 8601.

Вы можете либо передавать дату в UTC (например, 2013-01-15T00:00:00Z), либо смещение от UTC для обозначения часового пояса (например, 2013-01-15T00:00:00-08:00 8 часов от UTC).

Постраничная навигация

Результат запроса должен выводиться постранично. Это означает, что вместо вывода всех результатов выполнения запроса выводится только часть. Для этого необходимо использовать параметры limit и offset.

Типы ошибок

Xsolla использует стандартные HTTP коды для обозначения успешных или неуспешных запросов. В общем случае код в 2xx диапазоне обозначает успех, код диапазона 4хх означает ошибку в результате передачи некорректных параметров (например, обязательный параметр не передан, или авторизация не прошла и т.д.), код 5хх диапазона означает серверную ошибку.

Не все ошибки в точности соответствуют HTTP кодам. Например, если запрос был верным, но не смог завершиться успешно, мы вернем 422 ошибку.

В случае ошибочного ответа мы возвращаем JSON объект со следующими полями:

Название Тип Описание
http_status_code
int HTTP код.
message
string Понятное сообщение с описанием ошибки. Текст всегда на английском языке. Вы не должны использовать это поле в случае какой-либо ошибки, так как значение может измениться в будущем.
extended_message
string Расширенное описание ошибки.
request_id
string Уникальный ID запроса, используется, чтобы помочь нам диагностировать проблему.

Список поддерживаемых HTTP ответов:

  • 200, 201, 204 - Успешный ответ.
  • 400 Bad Request - Отсутствует обязательный параметр. Полное описание можно найти в теле ответа.
  • 401 Unauthorized - Недействительный ключ API.
  • 402 Request Failed - Параметры верны, но запрос не прошел.
  • 403 Forbidden - Нет прав доступа. Полное описание можно найти в теле ответа.
  • 404 Not Found - Соответствующего ресурса нет по данному URI.
  • 409, 422 - Параметры не верны.
  • 412 Precondition failed - Ошибка происходит, когда проект не активирован (используется в методе получения токена).
  • 415 Unsupported media type - Content-Type: application/json HTTP заголовок не был отправлен.
  • 500, 502, 503, 504 Server errors - что-то пошло не так.

Пример ответа с ошибкой:

  • {
  • "http_status_code": 500,
  • "message": "Internal Server Error",
  • "extended_message": null,
  • "request_id": "6445b85"
  • }

Токен

Для обеспечения безопасности проведения платежа Xsolla API использует токен, который содержит внутри себя платежные параметры, вместо прямого получения данных через HTTP GET запрос на страницу оплаты. Перед открытием страницы оплаты вы должны получить новый токен. Время жизни токена - 24 часа.

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

Параметр Тип Описание
user
object Объект с данными о пользователе.
user.id
object Объект с данными об ID пользователя. Обязательный.
user.id.value
string ID пользователя.
user.id.hidden
boolean Должен ли этот элемент быть видимым в интерфейсе оплаты. 'True' по умолчанию.
user.id.allow_modify
boolean Должна ли быть возможность менять этот параметр в интерфейсе оплаты. 'False' по умолчанию.
user.name
object Объект с информацией о нике пользователя.
user.name.value
string Ник пользователя.
user.name.hidden
boolean Должен ли этот элемент быть видимым в интерфейсе оплаты. 'True' по умолчанию.
user.name.allow_modify
boolean Должна ли быть возможность менять этот параметр в интерфейсе оплаты. 'False' по умолчанию.
user.email
object Объект с информацией об email пользователя.
user.email.value
string Email пользователя.
user.email.hidden
boolean Должен ли этот элемент быть видимым в интерфейсе оплаты. 'True' по умолчанию.
user.email.allow_modify
boolean Должна ли быть возможность менять этот параметр в интерфейсе оплаты. 'False' по умолчанию.
user.phone
object Объект с информацией о телефоне пользователя.
user.phone.value
string Номер телефона пользователя.
user.phone.hidden
boolean Должен ли этот элемент быть видимым в интерфейсе оплаты. 'True' по умолчанию.
user.phone.allow_modify
boolean Должна ли быть возможность менять этот параметр в интерфейсе оплаты. 'False' по умолчанию.
user.country
object Объект с информацией о стране пользователя.
user.country.value
string Страна пользователя. Используется двухбуквенное обозначение (в верхнем регистре) страны согласно стандарту ISO 3166-1 alpha-2.
user.country.allow_modify
boolean Может ли пользователь изменить страну на странице оплаты. 'False' по умолчанию.
user.attributes
object Объект с данными об атрибутах пользователя, необходимых для фильтрации списка товаров. Параметры передаются в json хэше парами ключ-значение.
user.steam_id
object Объект с данными о Steam ID пользователя.
user.steam_id.value
string Steam ID пользователя.
user.tracking_id
object Объект с данными о Tracking ID пользователя.
user.tracking_id.value
string Уникальный tracking ID (используется для проведения рекламных кампаний).
user.public_id.value
string Параметр позволяет однозначно идентифицировать пользователя, а также, в отличие от user ID, известен пользователю (адрес электронной почты, никнейм, и т.д.). Параметр может использоваться при оплате покупки вне игрового магазина (например, кнопка игры в терминалах оплаты).
user.utm
object Объект с данными о характеристиках трафика.
user.utm.utm_source
string Источник трафика
user.utm.utm_medium
string Канал трафика (контекстная реклама, медийная реклама, email-рассылка).
user.utm.utm_campaign
string Название кампании. В данный параметр следует указывать транслитерированное или переведенное на английский язык название кампании.
user.utm.utm_term
string Ключевое слово кампании. При использовании этого параметра в статистике будут собираться данные по тем ключевым словам, которые спользуеются для таргетинга вашей рекламной кампании (а не по поисковым запросам). В Google Ananlytics содержимое метки utm_term попадает в единый отчет с поисковыми запросами.
user.utm.utm_content
string Содержание кампании.
settings
object Объект, содержащий настройки проекта.
settings.external_id
string External ID транзакции.
settings.project_id
int ID игры в системе Xsolla. Вы можете найти этот параметр в Личном Кабинете. Обязательный.
settings.language
string Язык интерфейса. Используется двухбуквенное обозначение (в нижнем регистре) согласно стандарту ISO 639-1.
settings.return_url
string Пользователь будет перенаправлен на данную страницу после совершения платежа. Параметры "user_id", "foreinginvoice", "invoice_id" и "status" будут автоматически добавлены к ссылке.
settings.currency
string Предпочтительная валюта платежа. Используется трехбуквенное обозначение валюты согласно стандарту ISO 4217.
settings.mode
string Передайте значение "sandbox", чтобы провести тестовые платежи. Обратите внимание, что URL для страницы оплаты будет https://sandbox-secure.xsolla.com
settings.payment_method
int ID способа оплаты в системе Xsolla.
settings.payment_widget
string Виджет оплаты. Принимает значения 'paybycash' или 'giftcard'. При передаче этого параметра пользователь перенаправляется на виджет Pay by Cash или Gift Cards.
settings.ui
object Объект с настройками интерфейса.
settings.ui.size
string Размер платежного интерфейса. В зависимости от требуемых размеров платежного интерфейса, параметр может принимать следующие значения:
  • small: Наименьший размер платежного интерфейса. Используется в случаях, когда размеры окна строго ограничены (размер: 620 x 630)
  • medium: Рекомендуемый размер платежного интерфейса. Оптимален при открытии в lightbox (размер: 740 x 760)
  • large: желательно открывать в новом окне/вкладке (размер: 820 x 840)
settings.ui.theme
string Внешний вид интерфейса оплаты. Может принимать значения 'default' (по умолчанию) или 'dark'.
settings.ui.version
string Тип устройства. Может принимать значения 'desktop' (по умолчанию) или 'mobile'.
settings.ui.desktop
object Объект с данными настроек дл desktop версии.
settings.ui.desktop.header
object Объект с данными о настройках header-а.
settings.ui.desktop.header.is_visible
boolean Должен ли header отображаться на странице оплаты.
settings.ui.desktop.header.visible_logo boolean Если значение true, то логотип будет отображаться в header (необходимо сначала прислать файл с логотипом вашему менеджеру).
settings.ui.desktop.header.visible_name
boolean Должно ли название игры отображаться в header.
settings.ui.desktop.header.type
string Внешний вид header. Может принимать значения 'compact' (название игры и ID пользователя не будут показываться в header) или 'normal'.
settings.ui.desktop.subscription_list
object Объект с данными настройки списка подписок.
settings.ui.desktop.subscription_list.layout
string Шаблон списка подписок. Принимает значения 'list' (по умолчанию) или 'grid'.
settings.ui.desktop.subscription_list.description
string Здесь вы можете передать текст про подписки. Текст появится перед списком рекуррентных планов в интерфейсе оплаты.
settings.ui.desktop.subscription_list.display_local_price
boolean Если значение true и если локальная валюта пользователя отличается от базовой валюты плана, пользователь будет видеть две цены: цену в локальной валюте и цену в базовой валюте плана.
settings.ui.desktop.virtual_item_list
object Объект с данными настройки списка товаров.
settings.ui.desktop.virtual_item_list.layout
string Шаблон списка товаров. Принимает значения 'list' (по умолчанию) или 'grid'.
settings.ui.desktop.virtual_item_list.button_with_price
boolean Если значение true, то цена за товар будет показана внутри кнопки. Если false, то цена будет слева от кнопки. False по умолчанию.
settings.ui.desktop.virtual_items_list.view
string Вывод списка групп виртуальных товаров либо в виде вертикально меню, либо над окном в виде горизонтального меню. Принимает значения 'horizontal_navigation' или 'vertical' (по умолчанию).
settings.ui.desktop.virtual_currency_list
object Объект с данными настройки списка пакетов виртуальной валюты.
settings.ui.desktop.virtual_currency_list.description
string Здесь вы можете передать текст про виртуальную валюту. Текст появится перед списком пакетов виртуальной валюты в интерфейсе оплаты.
settings.ui.desktop.virtual_currency_list.button_with_price
boolean Если значение true, то цена за пакет будет показана внутри кнопки. Если false, то цена будет слева от кнопки. False по умолчанию.
settings.ui.header.visible_virtual_currency_balance
boolean Должен ли этот элемент быть видимым в интерфейсе оплаты. ‘True’ по умолчанию.
settings.ui.mobile.mode
string Пользователь может совершить платеж только через сохраненные способы оплаты. Принимает значение 'saved_accounts'.
settings.ui.mobile.header.close_button
boolean Показывать ли кнопку Закрыть в мобильной версии Pay Station. Нажатие на кнопку закрывает платежный интерфейс и перенаправляет пользователя на адрес, указанный в параметре "settings.return_url". False по умолчанию.
settings.ui.desktop.header.close_button
boolean Показывать ли кнопку Закрыть в настольной версии Pay Station. Нажатие на кнопку закрывает платежный интерфейс и перенаправляет пользователя на адрес, указанный в параметре "settings.return_url". False по умолчанию.
settings.ui.mobile.footer.is_visible
boolean Скрывать или нет footer в мобильной версии платежного интерфейса.
settings.ui.license_url
string Ссылка на лицензионное соглашение.
settings.ui.components
object Объект с данными настройки пунктов меню.
settings.ui.components.virtual_items
object Объект с данными настройки меню товаров.
settings.ui.components.virtual_items.order
int Место вкладки 'Товары' в меню.
settings.ui.components.virtual_items.hidden
boolean Должна ли вкладка 'Товары' отображаться в меню.
settings.ui.components.virtual_items.selected_group
string Группа, которая будет выбрана при открытии вкладки 'Товары'.
settings.ui.components.virtual_items.selected_item
string Товар, который будет выбран при открытии вкладки 'Товары'. Должен быть передан SKU товара.
settings.ui.components.virtual_currency
object Объект с данными настройки меню виртуальной валюты.
settings.ui.components.virtual_currency.custom_amount
boolean Возможность ввода произвольного количества виртуальной валюты в интерфейсе оплаты.
settings.ui.components.virtual_currency.order
int Место вкладки 'Виртуальная валюта' в меню.
settings.ui.components.virtual_currency.hidden
boolean Должна ли вкладка 'Виртуальная валюта' отображаться в меню.
settings.ui.components.subscriptions
object Объект с данными настройки меню подписок.
settings.ui.components.subscriptions.order
int Место вкладки 'Подписки' в меню.
settings.ui.components.subscriptions.hidden
boolean Должна ли вкладка 'Подписки' отображаться в меню.
settings.ui.mode
string Платежный интерфейс в режиме Личного Кабинета. Принимает значение 'user_account'. Header содержит только навигационное меню Личного Кабинета; исключается возможность выбора товара и оплата покупки; режим Личного Кабинета доступен только в desktop-режиме.
settings.ui.user_account
object Объект с данными об аккаунте пользователя.
settings.ui.user_account.info
object Страница 'Мой аккаунт'.
settings.ui.user_account.info.order
int Идентификатор позиции страницы 'Мой аккаунт' в меню
settings.ui.user_account.info.enable
boolean Должна ли страница 'Мой аккаунт' отображаться в меню.
settings.ui.user_account.history
object Страница 'История' пользователя.
settings.ui.user_account.history.order
int Идентификатор позиции страницы 'История' в меню.
settings.ui.user_account.history.enable
boolean Должна ли страница 'История' отображаться в меню.
settings.ui.user_account.payment_accounts
object Страница 'Мои платежные аккаунты'.
settings.ui.user_account.payment_accounts.order
int Идентификатор позиции страницы 'Мои платежные аккаунты' в меню.
settings.ui.user_account.payment_accounts.enable
boolean Должна ли страница 'Мои платежные аккаунты' отображаться в меню.
settings.ui.user_account.subscriptions
object Страница 'Управление подписками'.
settings.ui.user_account.subscriptions.order
int Идентификатор позиции страницы 'Управление подписками' в меню.
settings.ui.user_account.subscriptions.enable
boolean Должна ли страница 'Управление подписками' отображаться в меню.
settings.shipping_enabled
boolean Флаг отображения страницы ввода адреса заставки. ‘False’ по умолчанию.
purchase
object Объект с информацией о заказе.
purchase.virtual_currency
object Объект с данными о виртуальной валюте.
purchase.virtual_currency.quantity
float Количество виртуальной валюты в заказе.
purchase.virtual_currency.currency
string Валюта пакета виртуальной валюты, на основе которой будут сделаны все расчеты.
purchase.virtual_items
object Объект с данными о товарах.
purchase.virtual_items.currency
string Валюта товара в заказе, на основе которой будут сделаны все расчеты.
purchase.virtual_items.items
array Массив с данными о товаре.
purchase.virtual_items.items.sku
string ID товара (SKU).
purchase.virtual_items.items.amount
int Количество этого товара в заказе.
purchase.virtual_items.available_groups
array Массив с данными о группах товаров. Только товары из указанных групп будут показаны в интерфейсе оплаты.
purchase.subscription
object Объект с данными о подписке.
purchase.subscription.plan_id
string ID рекуррентного плана.
purchase.subscription.product_id
string ID рекуррентного продукта.
purchase.subscription.currency
string Валюта рекуррентного плана в заказе, на основе которой будут сделаны все расчеты.
purchase.subscription.available_plans
string Массив с данными о планах подписок. Только планы из этого списка будут показаны в платежном интерфейсе.
purchase.subscription.trial_days
int Количество дней триального периода. Параметр используется только при создании подписки и только для планов без триального периода.
purchase.pin_codes
object Объект с данными о пин-коде.
purchase.pin_codes.currency
string Валюта пин-кода в заказе, на основе которой будут сделаны все расчеты.
purchase.pin_codes.codes
array Массив с данными о пин-коде.
purchase.pin_codes.codes.digital_content
string SKU игры, настраивается в Личном Кабинете.
purchase.pin_codes.codes.drm
string Система DRM, на кототорой игра будет доступна. Может принимать значения 'steam', 'playstation', 'xbox', 'uplay', 'origin' или 'drmfree'. Пожалуйста убедитесь, что нужная система DRM настроена в Личном Кабинете.
purchase.checkout
object Объект с данными о реальной валюте.
purchase.checkout.currency
string Валюта заказа. Используется трехбуквенное обозначение валюты согласно стандарту ISO 4217.
purchase.checkout.amount
float Сумма заказа.
purchase.description
object Объект с описанием товара.
purchase.description.value
string Описание товара. Будет отображаться в интерфейсе оплаты и в email чеке.
purchase.gift
object Объект с данными о подарке другу.
purchase.gift.giver_id
string ID дарителя.
purchase.gift.message
string Сообщение дарителя.
purchase.gift.hide_giver_from_receiver
string Флаг, скрывать ли дарителя от получателя подарка. ‘True’ по умолчанию.
purchase.gift.friends
array Массив с данными о друзьях.
purchase.gift.friends.id
string ID друга.
purchase.gift.friends.name
string Никнейм друга.
purchase.gift.friends.email
string email друга.
custom_parameters
object Ваши дополнительные параметры. Параметры передаются в json хэше парами ключ-значение.

Если какой-либо параметр был передан в некорректном формате, токен не может быть выдан. Мы вернем 422 HTTP код, в JSON объекте в теле ответа будет содержаться информация об ошибке. В параметре "extended_message" мы указываем, какие именно параметры были переданы неверно. { "extended_message": { "global_errors": [], "property_errors": { "settings.project_id": [ "string value found, but an integer is required" ] } } }

Запрос

<?php

use Xsolla\SDK\API\XsollaClient;
use Xsolla\SDK\API\PaymentUI\TokenRequest;

$tokenRequest = new TokenRequest($projectId, $userId);
$tokenRequest->setUserEmail('email@example.com')
    ->setExternalPaymentId('12345')
    ->setSandboxMode(true)
    ->setUserName('USER_NAME')
    ->setCustomParameters(array('key1' => 'value1', 'key2' => 'value2'));

$xsollaClient = XsollaClient::factory(array(
    'merchant_id' => MERCHANT_ID,
    'api_key' => API_KEY
));
$token = $xsollaClient->createPaymentUITokenFromRequest($tokenRequest);
POST /merchant/v2/merchants/{merchant_id}/token HTTP/1.1
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json

{
  "user": {
          "id": {
              "value": "1234567",
              "hidden": true
          },
          "email": {
              "value": "email@example.com",
              "allow_modify": true,
              "hidden": false
          },
          "country": {
              "value": "US"
          }
      },
      "settings": {
          "project_id": 14004,
          "language":"en",
          "currency":"USD",
          "ui": {
              "size":"medium"
          }
      },
      "purchase": {
          "virtual_currency": {
              "quantity": 100
          },
          "virtual_items": {
              "items": [{
                  "sku":"SKU01",
                  "amount":1
              }]
          },
          "description": {
              "value": "Test Purchase"
          }
      },
      "custom_parameters": {
          "parameter1": "value1"
      }
}
$ curl -v 'https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/token' \
-X POST \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
  "user": {
      "id": {
          "value": "1234567",
          "hidden": true
      },
      "email": {
          "value": "email@example.com",
          "allow_modify": true,
          "hidden": false
      },
      "country": {
          "value": "US"
      }
  },
  "settings": {
      "project_id": 14004,
      "language":"en",
      "currency":"USD",
      "ui": {
          "size":"medium"
      }
  },
  "purchase": {
      "virtual_currency": {
          "quantity": 100
      },
      "virtual_items": {
          "items": [{
              "sku":"SKU01",
              "amount":1
          }]
      },
      "description": {
          "value": "Test Purchase"
      }
  },
  "custom_parameters": {
      "parameter1": "value1"
  }
    }'

Ответ

<?php

// example response
$token = 'uV0iCEvWkUGVqWerTgbrndWePOMiLAfO';
HTTP/1.1 200 OK
Content-Type: application/json

{
    "token": "uV0iCEvWkUGVqWerTgbrndWePOMiLAfO"
}
{
    "token": "uV0iCEvWkUGVqWerTgbrndWePOMiLAfO"
}

Список дополнительных параметров

Вы можете передавать в токене дополнительные параметры, которые могут использоваться для настройки антифрод фильтров. Рекомендуемые параметры приведены в таблице ниже, при необходимости данный список можно расширить.

Название Тип Описание
registration_date
string Дата регистрации аккаунта согласно стандарту ISO 8601.
total_hours
int Общее количество часов, проведенных в игре.
total_characters
int Количество персонажей игрока.
social_networks_added
boolean Подключил ли игрок профили в социальных сетях.
profile_image_added
boolean Загрузил ли игрок изображение профиля.
last_active_date
string Дата последнего посещения согласно стандарту ISO 8601.
total_friends
int Количество друзей игрока.
additional_verification
boolean Использует ли игрок дополнительные способы защиты аккаунта.
win_rate
int Рейтинг побед игрока.
last_change_password_date
string Дата последней смены пароля согласно стандарту ISO 8601.
chat_activity
boolean Пишет ли игрок в чате.
forum_activity
boolean Загрузил ли игрок изображение профиля.
total_bans
int Количество банов игрока в чате/на форуме.
profile_completed
boolean Добавил ли игрок дополнительную информацию в профиль.
notifications_enabled
boolean Подписался ли игрок на рассылку уведомлений.
user_level
int Уровень игрока, репутация или ранг.
karma_points
int Карма игрока.
total_sum
float Общая сумма платежей.
non_premium_currency
float Сумма непремиальной валюты игрока.
total_game_events
int Количество внутриигровых событий, в которых участвовал игрок.
total_gifts
int Количество подарков, отправленных или полученных игроком.
tutorial_completed
boolean Завершил ли игрок обучение в игре.
completed_tasks
int Количество выполненных заданий.
items_used
boolean Использует ли игрок купленные в игре предметы.
pvp_activity
boolean Участвует ли игрок в PvP.
total_clans
int Количество кланов, в которых состоит игрок.
unlocked_achievements
int Количество разблокированных умений.
total_inventory_value
float Суммарная стоимость инвентаря во внутриигровой валюте.
character_customized
boolean Настраивал ли игрок персонажа.
session_time
string Период времени, который пользователь проводит в игре, согласно стандарту ISO 8601.

Интеграция Pay Station

Команда Xsolla создала скрипт для упрощения интеграции платежного интерфейса на вашем сайте. Скрипт доступен по ссылке. Используйте этот URL для загрузки скрипта на вашу страницу. Более подробная информация доступна в нашем проекте на Github.

Список параметров для инициализации скрипта:

Параметр Тип Описание
access_token
string Токен, полученный по api. Обязательный.
sandbox
boolean Передайте true для тестирования, Будет использоваться URL sandbox-secure.xsolla.com вместо secure.xsolla.com.
lightbox
object Объект со списком настроек, доступных в случае открытия в lightbox (для полноэкранной версии).
lightbox.width
string Ширина lightbox-а. Если значение null, то ширина зависит от ширины Pay Station. По умолчанию null.
lightbox.height
string Высота lightbox-а. Если значение null, то ширина зависит от высоты Pay Station. По умолчанию '100%'.
lightbox.zIndex
int Свойство, отвечающее за положение объекта, по умолчанию 1000.
lightbox.overlayOpacity
int Непрозрачность верхнего слоя (от 0 до 1), по умолчанию '.6'.
lightbox.overlayBackground
string Фон для верхнего слоя, по умолчанию '#000000'.
lightbox.modal
boolean Можно ли закрыть lightbox, по умолчанию 'false'.
lightbox.closeByClick
boolean Должен ли закрываться lightbox при клике на верхний слой, по умолчанию 'true'.
lightbox.closeByKeyboard
boolean Должен ли закрываться lightbox при нажатии ESC, по умолчанию 'true'.
lightbox.contentBackground
string Фон фрейма, по умолчанию '#ffffff'.
lightbox.contentMargin
string Отступ вокруг фрейма, по умолчанию '10px'.
lightbox.spinner
string Тип прелоадера, может принимать значение 'xsolla' или 'round', по умолчанию 'xsolla'.
lightbox.spinnerColor
string Цвет прелоадера.
childWindow
object Настройки дочернего окна, в котором открывается Pay Station. Работает для мобильной версии.
childWindow.target
string Свойство, определяющее, где должно быть открыто дочернее окно, может принимать значения '_blank', '_self', '_parent', по умолчанию '_blank'.

Скрипт позволяет вам отслеживать события, происходящие в платежном интерфейсе. В зависимости от типа события вы можете выполнять различные действия на вашей странице.

Список событий:

Параметр Описание
init
Инициализация виджета.
open
Открытие виджета.
load
Событие после загрузки платежного интерфейса (Pay Station).
close
Событие после закрытия платежного интерфейса (Pay Station).
status
Событие, когда пользователь попадает на страницу статуса.
status-invoice
Событие, когда пользователь попадает на страницу статуса, но платеж еще не завершен.
status-delivering
Событие, когда пользователь попадает на страницу статуса, платеж завершен, мы прислали оповещение о платеже.
status-done
Событие, когда пользователь попадает на страницу статуса, платеж успешно зачислен.
status-troubled
Событие, когда пользователь попадает на страницу статуса, но платеж не прошел.

Если вы хотите самостоятельно открывать платежный интерфейс, используйте ссылку https://secure.xsolla.com/paystation2/?access_token=ACCESS_TOKEN, где ACCESS_TOKEN - токен, полученный на предыдущем шаге.

Пример асинхронной загрузки скрипта с callback

<html>
<head lang="en">
    <meta charset="UTF-8">
</head>
<body>
    <button data-xpaystation-widget-open>Buy Credits</button>

    <?php \Xsolla\SDK\API\PaymentUI\PaymentUIScriptRenderer::send($paymentUIToken, $isSandbox = true); ?>
</body>
</html>
<script>
    var options = {
        access_token: 'abcdef1234567890abcdef1234567890'
    };
    var s = document.createElement('script');
    s.type = "text/javascript";
    s.async = true;
    s.src = "https://static.xsolla.com/embed/paystation/1.0.7/widget.min.js";
    s.addEventListener('load', function (e) {
        XPayStationWidget.init(options);
    }, false);
    var head = document.getElementsByTagName('head')[0];
    head.appendChild(s);
</script>

<button data-xpaystation-widget-open>Buy Credits</button>

Список тестовых карт

В Sandbox режиме вы можете использовать следующие карты для тестирования успешных платежей:

Card Number Срок действия CVV2 3D-Secure Тип карты
4111111111111111
12/20 123 Нет VISA
5555555555554444
11/19 321 Нет MasterCard
4000000000000010
12/20 123 Да VISA
5200000000000114
11/19 321 Да MasterCard
6759649826438453
12/25 321 Да Maestro

Также вы можете использовать указанный ниже список карт для тестирования отклоненных транзакций:

Номер карты Срок действия CVV2 3D-Secure Тип карты Описание
4000000000000002
12/20 123 Нет VISA Недостаточно средств
5200000000000007
11/19 321 Нет MasterCard Недостаточно средств
4000000000000036
12/20 123 Да VISA Отклонено
5200000000000031
11/19 321 Да MasterCard Отклонено

Pay2Play Виджет

Xsolla создала виджет продажи игр для упрощения интеграции платежного интерфейса на сайте игры. Виджет легко встраивается на страницу вашей игры и будет давать пользователю подробную информацию об игре, список доступных платформ и DRM, выбор способов оплаты.

Скрипт доступен по ссылке. Используйте этот URL для загрузки скрипта на вашу страницу.

Более подробная информация доступна в нашем проекте на Github.

Есть два варианта взаимодействия с Xsolla для продажи игр:

  1. Простая интеграция
  2. Расширенная интеграция

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

Простая интеграция

Список параметров для инициализации скрипта:

Параметр Тип Описание
access_data
string Объект с данными о платеже и пользователе. Обязательный.
theme
object Цветовое решение виджета
theme.foreground
string Цвет кнопки на виджете
theme.background
string Цвет заднего фона виджета
target_element
boolean Элемент страницы, где должен отображаться виджет (необходимо использовать jQuery селектор, например, '#widget-example'). Обязательный.

Параметры и структура JSON внутри объекта access_data повторяют параметры и структуру JSON для получения токена.

Расширенная интеграция

Список параметров для инициализации скрипта:

Параметр Тип Описание
access_token
string Токен для виджета, полученный по api. Обязательный.
theme
object Цветовое решение виджета
theme.foreground
string Цвет кнопки на виджете
theme.background
string Цвет заднего фона виджета
sandbox
boolean Передайте true для тестирования, Будет использоваться URL sandbox-secure.xsolla.com вместо secure.xsolla.com.
target_element
boolean Элемент страницы, где должен отображаться виджет (необходимо использовать jQuery селектор, например, '#widget-example'). Обязательный.

Следующий список параметров определяет работу платежного интерфейса, и совпадает с параметрами Xsolla Pay Station Widget.

Параметр Тип Описание
lightbox
object Объект со списком настроек, доступных в случае открытия в lightbox (для полноэкранной версии).
lightbox.width
string Ширина lightbox-а. Если значение null, то ширина зависит от ширины Pay Station. По умолчанию null.
lightbox.height
string Высота lightbox-а. Если значение null, то ширина зависит от высоты Pay Station. По умолчанию '100%'.
lightbox.zIndex
int Свойство, отвечающее за положение объекта, по умолчанию 1000.
lightbox.overlayOpacity
int Непрозрачность верхнего слоя (от 0 до 1), по умолчанию '.6'.
lightbox.overlayBackground
string Фон для верхнего слоя, по умолчанию '#000000'.
lightbox.modal
boolean Можно ли закрыть lightbox, по умолчанию 'false'.
lightbox.closeByClick
boolean Должен ли закрываться lightbox при клике на верхний слой, по умолчанию 'true'.
lightbox.closeByKeyboard
boolean Должен ли закрываться lightbox при нажатии ESC, по умолчанию 'true'.
lightbox.contentBackground
string Фон фрейма, по умолчанию '#ffffff'.
lightbox.contentMargin
string Отступ вокруг фрейма, по умолчанию '10px'.
lightbox.spinner
string Тип прелоадера, может принимать значение 'xsolla' или 'round', по умолчанию 'xsolla'.
lightbox.spinnerColor
string Цвет прелоадера.
childWindow
object Настройки дочернего окна, в котором открывается Pay Station. Работает для мобильной версии.
childWindow.target
string Свойство, определяющее, где должно быть открыто дочернее окно, может принимать значения '_blank', '_self', '_parent', по умолчанию '_blank'.

Необходимо выполнять XPay2PlayWidget.create() после полной загрузки DOM. Вы можете отслеживать соответствующее событие или добавить скрипт после элемента, в котором должен отображаться виджет.

Пример асинхронной загрузки скрипта с callback в случае простой интеграции

<script>
    var accessData = {"settings":{"project_id":14004},"purchase":{"pin_codes":{"codes":[{"digital_content":"game_sku"}]}}};
    var options = {
        access_data: accessData,
        theme : {
            foreground: 'green',
            background: 'light'
        },
        target_element: '#widget-example-element'
    };
    var s = document.createElement('script');
    s.type = "text/javascript";
    s.async = true;
    s.src = "//static.xsolla.com/embed/pay2play/2.1.0/widget.min.js";
    s.addEventListener('load', function (e) {
        var widgetInstance = XPay2PlayWidget.create(options);
    }, false);
    var head = document.getElementsByTagName('head')[0];
    head.appendChild(s);
</script>
<script>
    var accessData = {"settings":{"project_id":14004},"purchase":{"pin_codes":{"codes":[{"digital_content":"game_sku"}]}}};
    var options = {
        access_data: accessData,
        theme : {
            foreground: 'green',
            background: 'light'
        },
        target_element: '#widget-example-element'
    };
    var s = document.createElement('script');
    s.type = "text/javascript";
    s.async = true;
    s.src = "//static.xsolla.com/embed/pay2play/2.1.0/widget.min.js";
    s.addEventListener('load', function (e) {
        var widgetInstance = XPay2PlayWidget.create(options);
    }, false);
    var head = document.getElementsByTagName('head')[0];
    head.appendChild(s);
</script>

Пример асинхронной загрузки скрипта с callback в случае расширенной интеграции

<script>
    var options = {
        access_token: 'abcdef1234567890abcdef1234567890',
        theme : {
            foreground: 'green',
            background: 'light'
        },
        target_element: '#widget-example-element'
    };
    var s = document.createElement('script');
    s.type = "text/javascript";
    s.async = true;
    s.src = "//static.xsolla.com/embed/pay2play/2.1.0/widget.min.js";
    s.addEventListener('load', function (e) {
        var widgetInstance = XPay2PlayWidget.create(options);
    }, false);
    var head = document.getElementsByTagName('head')[0];
    head.appendChild(s);
</script>
<script>
    var options = {
        access_token: 'abcdef1234567890abcdef1234567890',
        theme : {
            foreground: 'green',
            background: 'light'
        },
        target_element: '#widget-example-element'
    };
    var s = document.createElement('script');
    s.type = "text/javascript";
    s.async = true;
    s.src = "//static.xsolla.com/embed/pay2play/2.1.0/widget.min.js";
    s.addEventListener('load', function (e) {
        var widgetInstance = XPay2PlayWidget.create(options);
    }, false);
    var head = document.getElementsByTagName('head')[0];
    head.appendChild(s);
</script>

Список ошибок

Code Description
0004-0001
Токен истек либо некорректный
0004-0008
Интерфейс открыт по неверному URL (sandbox-режим открыт на secure.xsolla.com либо боевой на sandbox-secure.xsolla.com)
0002-0004
Не заключен договор
0004-0010
Запрещена бессерверная интеграция
0010-0001
Не найден переданный digital content
0010-0003
У digital content не настроен drm
1000-0003
Нет включенных модулей продажи у проекта

Список пакетов виртуальной валюты

Список всех пакетов виртуальной валюты.

HTTP ЗАПРОС

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/storefront/virtual_currency

Параметры запроса:

Параметр Тип Описание
project_id
int ID проекта. Обязательный.
user_id
string ID пользователя. Обязательный.
currency
string Валюта стоимости пакета виртуальной валюты. Используется трехбуквенное обозначение валюты согласно стандарту ISO 4217. Обязательный.
language
string Язык интерфейса. Используется двухбуквенное обозначение (в нижнем регистре) согласно стандарту ISO 639-1.Обязательный.

Параметры ответа:

Параметр Тип Описание
packages
array Массив объектов с данными о пакетах виртуальной валюты.
packages.id
int ID пакета виртуальной валюты в системе Xsolla.
packages.quantity
float Количество виртуальной валюты.
packages.quantity_without_discount
float Количество виртуальной валюты без скидки (если проводится акция).
packages.bonus_quantity
float Количество виртуальной валюты в виде бонуса (если проводится акция).
packages.amount
float Стоимость пакета виртуальной валюты (в валюте из параметров запроса).
packages.amount_without_discount
float Стоимость пакета виртуальной валюты без скидки (если проводится акция).
packages.currency
string Валюта пакета. Используется трехбуквенное обозначение валюты согласно стандарту ISO 4217.
packages.image
string URL изображения пакета виртуальной валюты.
packages.description
string Локализованное описание пакета виртуальной валюты.
packages.bonus_items
array Массив с информацией о товарах в виде бонуса (если проводится акция).
packages.bonus_items.name
string Название бонусного товара.
packages.bonus_items.quantity
int Количество бонусного товара.
packages.advertisement_label
object Объект с информацией о лэйбле пакета виртуальной валюты.
packages.advertisement_label.type
string Тип лэйбла. Принимает значения "recommended", "best_deal", "special_offer" или null.
packages.advertisement_label.name
string Локализованное название лэйбла, в зависимости от параметра packages.advertisement_label.type.
packages.offer_label
string Лэйбл акции.

Запрос

<?php

$response = $xsollaClient->GetStorefrontVirtualCurrency(array(
    'project_id' => PROJECT_ID,
    'language' => LANGUAGE_ISO,
    'currency' => CURRENCY_ISO,
    'user_id' => USER_ID
));
GET /merchant/v2/projects/{project_id}/storefront/virtual_currency HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/storefront/virtual_currency' \
-X GET \
-u merchant_id:merchant_api_key

Ответ

<?php

// example response
$response = array (
    'packages' =>
        array (
            array (
                'id' => 16913,
                'quantity' => 500,
                'quantity_without_discount' => 500,
                'bonus_quantity' => 10,
                'amount' => 4,
                'amount_without_discount' => 4.99,
                'currency' => 'USD',
                'image' => '//cdn2.xsolla.com/img/misc/images/5df58528dee219c2ab48e003f8f1a8f1.jpg',
                'description' => '500 Gold',
                'bonus_items' =>
                    array (
                        array (
                            'name' => 'Rabbit',
                            'quantity' => 1,
                        ),
                    ),
                'advertisement_label' =>
                    array (
                        'type' => 'recommended',
                        'name' => 'Most Popular',
                    ),
                'offer_label' => '',
            ),
        ),
);
HTTP/1.1 200 OK
Content-Type: application/json

{
    "packages": [
        {
            "id": 16913,
            "quantity": 500,
            "quantity_without_discount": 500,
            "bonus_quantity": 10,
            "amount": 4,
            "amount_without_discount": 4.99,
            "currency": "USD",
            "image": "\/\/cdn2.xsolla.com\/img\/misc\/images\/5df58528dee219c2ab48e003f8f1a8f1.jpg",
            "description": "500 Gold",
            "bonus_items": [
                {
                    "name": "Rabbit",
                    "quantity": 1
                }
            ],
            "advertisement_label": {
                "type": "recommended",
                "name": "Most Popular"
            },
            "offer_label": ""
         }
    ]
}
{
    "packages": [
        {
            "id": 16913,
            "quantity": 500,
            "quantity_without_discount": 500,
            "bonus_quantity": 10,
            "amount": 4,
            "amount_without_discount": 4.99,
            "currency": "USD",
            "image": "\/\/cdn2.xsolla.com\/img\/misc\/images\/5df58528dee219c2ab48e003f8f1a8f1.jpg",
            "description": "500 Gold",
            "bonus_items": [
                {
                    "name": "Rabbit",
                    "quantity": 1
                }
            ],
            "advertisement_label": {
                "type": "recommended",
                "name": "Most Popular"
            },
            "offer_label": ""
         }
    ]
}

Список групп товаров

Список групп виртуальных товаров.

HTTP ЗАПРОС

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/storefront/virtual_items/groups

Параметры запроса:

Параметр Тип Описание
project_id
int ID проекта. Обязательный.
user_id
string ID пользователя. Обязательный.
currency
string Валюта пользователя. Используется трехбуквенное обозначение валюты согласно стандарту ISO 4217. Обязательный.
language
string Язык интерфейса. Используется двухбуквенное обозначение (в нижнем регистре) согласно стандарту ISO 639-1. Обязательный.

Параметры ответа:

Параметр Тип Описание
groups
array Массив объектов с информацией о группах виртуальных товаров.
groups.id
int ID группы в системе Xsolla.
groups.external_id
string ID группы в системе игры.
groups.name
string Локализованное название группы.
groups.description
string Локализованное описание группы.
groups.level
int Уровень группы.
groups.children
array Массив с информацией о дочерних группах. Структура данных внутри каждой дочерней группы совпадает со структурой в родительской группе.

Запрос

<?php

$response = $xsollaClient->GetStorefrontVirtualGroups(array(
    'project_id' => PROJECT_ID,
    'language' => LANGUAGE_ISO,
    'currency' => CURRENCY_ISO,
    'user_id' => USER_ID
));
GET /merchant/v2/projects/{project_id}/storefront/virtual_items/groups HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/storefront/virtual_items/groups' \
-X GET \
-u merchant_id:merchant_api_key

Ответ

<?php

// example response
$response = array (
    'groups' =>
        array (
            array (
                'id' => 1,
                'external_id' => '21',
                'name' => 'Group name 21',
                'description' => 'Group description 21',
                'children' =>
                    array (),
                'level' => 0,
            ),
            array (
                'id' => 2,
                'external_id' => '22',
                'name' => 'Group name 22',
                'description' => 'Group description 22',
                'children' =>
                    array (
                        array (
                            'id' => 3,
                            'external_id' => NULL,
                            'name' => 'Child group 1',
                            'description' => 'Child group 1',
                            'children' =>
                                array (),
                            'level' => 1,
                        ),
                        array (
                            'id' => 8,
                            'external_id' => NULL,
                            'name' => 'Child group 2',
                            'description' => 'Child group 2',
                            'children' =>
                                array (),
                            'level' => 1,
                        ),
                    ),
                'level' => 0,
            ),
        ),
);
HTTP/1.1 200 OK
Content-Type: application/json

{
    "groups": [
        {
            "id": 1,
            "external_id": "21",
            "name": "Group name 21",
            "description": "Group description 21",
            "children": [],
            "level": 0
        },
        {
            "id": 2,
            "external_id": "22",
            "name": "Group name 22",
            "description": "Group description 22",
            "children": [
                {
                    "id": 3,
                    "external_id": null,
                    "name": "Child group 1",
                    "description": "Child group 1",
                    "children": [],
                    "level": 1
                },
                {
                    "id": 8,
                    "external_id": null,
                    "name": "Child group 2",
                    "description": "Child group 2",
                    "children": [],
                    "level": 1
                }
            ],
            "level": 0
        }
    ]
}
{
    "groups": [
        {
            "id": 1,
            "external_id": "21",
            "name": "Group name 21",
            "description": "Group description 21",
            "children": [],
            "level": 0
        },
        {
            "id": 2,
            "external_id": "22",
            "name": "Group name 22",
            "description": "Group description 22",
            "children": [
                {
                    "id": 3,
                    "external_id": null,
                    "name": "Child group 1",
                    "description": "Child group 1",
                    "children": [],
                    "level": 1
                },
                {
                    "id": 8,
                    "external_id": null,
                    "name": "Child group 2",
                    "description": "Child group 2",
                    "children": [],
                    "level": 1
                }
            ],
            "level": 0
        }
    ]
}

Список товаров

Список виртуальных товаров.

HTTP ЗАПРОС

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/storefront/virtual_items/items

Параметры запроса:

Параметр Тип Описание
project_id
int ID проекта. Обязательный.
user_id
string ID пользователя. Обязательный.
group_id
int ID of virtual item group. Обязательный.
currency
string Валюта стоимости пакета виртуальной валюты. Используется трехбуквенное обозначение валюты согласно стандарту ISO 4217. Обязательный.
language
string Язык интерфейса. Используется двухбуквенное обозначение (в нижнем регистре) согласно стандарту ISO 639-1. Обязательный.

Параметры ответа:

Параметр Тип Описание
items
array Массив объектов с данными о виртуальных товарах.
items.id
int ID виртуального товара в системе Xsolla.
items.sku
string SKU товара.
items.name
string Локализованное название виртуального товара.
items.image_url
string URL изображения виртуального товара.
items.description
string Локализованное описание виртуального товара.
items.long_description
string Полное локализованное описание виртуального товара.
items.currency
string Валюта товара. Используется трехбуквенное обозначение валюты согласно стандарту ISO 4217.
items.amount
float Стоимость виртуального товара (в валюте из параметров запроса).
items.amount_without_discount
float Стоимость виртуального товара без скидки (если проводится акция).
items.vc_amount
float Стоимость товара в виртуальной валюте.
items.vc_amount_without_discount
float Стоимость товара в виртуальной валюте без скидки (если проводится акция).
items.bonus_virtual_currency
object Объект с данными о виртуальной валюте в виде бонуса (если проводится акция).
items.bonus_virtual_currency.vc_amount
float Количество виртуальной валюты в виде бонуса.
items.bonus_virtual_items
array Массив с информацией о товарах в виде бонуса (если проводится акция).
items.bonus_virtual_items.name
string Локализованное название виртуального товара.
items.bonus_virtual_items.quantity
int Количество виртуальных товаров.
items.advertisement_label
object Объект с информацией о лэйбле на товаре.
items.advertisement_label.type
string Тип лэйбла. Принимает значения "recommended", "best_deal", "special_offer" или null.
items.advertisement_label.name
string Локализованное название лэйбла, в зависимости от параметра items.advertisement_label.type.
items.offer_label
string Лэйбл акции.

Запрос

<?php

$response = $xsollaClient->GetStorefrontVirtualItems(array(
    'project_id' => PROJECT_ID,
    'language' => LANGUAGE_ISO,
    'currency' => CURRENCY_ISO,
    'user_id' => USER_ID,
    'group_id' => GROUP_ID
));
GET /merchant/v2/projects/{project_id}/storefront/virtual_items/items HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/storefront/virtual_items/items' \
-X GET \
-u merchant_id:merchant_api_key

Ответ

<?php

// example response
$response = array (
    'items' =>
        array (
            array (
                'id' => 1678,
                'sku' => '1468',
                'name' => 'Rabbit',
                'image_url' => 'https://cdn3.xsolla.com/img/misc/merchant-digital-goods/4376c004fa33dc74483906561d617cb3.png',
                'description' => 'Rabbits are small mammals in the family Leporidae',
                'long_description' => NULL,
                'currency' => 'USD',
                'amount' => 0,
                'amount_without_discount' => 0,
                'vc_amount' => 2,
                'vc_amount_without_discount' => 2,
                'bonus_virtual_currency' => NULL,
                'bonus_virtual_items' =>
                    array (),
                'advertisement_label' => NULL,
                'offer_label' => '',
            ),
        ),
);
HTTP/1.1 200 OK
Content-Type: application/json

{
    "items": [
        {
            "id": 1678,
            "sku": "1468",
            "name": "Rabbit",
            "image_url": "https:\/\/cdn3.xsolla.com\/img\/misc\/merchant-digital-goods\/4376c004fa33dc74483906561d617cb3.png",
            "description": "Rabbits are small mammals in the family Leporidae",
            "long_description": null,
            "currency": "USD",
            "amount": 0,
            "amount_without_discount": 0,
            "vc_amount": 2,
            "vc_amount_without_discount": 2,
            "bonus_virtual_currency": null,
            "bonus_virtual_items": [],
            "advertisement_label": null,
            "offer_label": ""
        }
    ]
}
{
    "items": [
        {
            "id": 1678,
            "sku": "1468",
            "name": "Rabbit",
            "image_url": "https:\/\/cdn3.xsolla.com\/img\/misc\/merchant-digital-goods\/4376c004fa33dc74483906561d617cb3.png",
            "description": "Rabbits are small mammals in the family Leporidae",
            "long_description": null,
            "currency": "USD",
            "amount": 0,
            "amount_without_discount": 0,
            "vc_amount": 2,
            "vc_amount_without_discount": 2,
            "bonus_virtual_currency": null,
            "bonus_virtual_items": [],
            "advertisement_label": null,
            "offer_label": ""
        }
    ]
}

Список рекуррентных планов

Список рекуррентых планов.

HTTP ЗАПРОС

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/storefront/subscriptions

Параметры запроса:

Параметр Тип Описание
project_id
int ID проекта. Обязательный.
user_id
string ID пользователя. Обязательный.
currency
string Валюта пользователя. Используется трехбуквенное обозначение валюты согласно стандарту ISO 4217. Обязательный.
language
string Язык интерфейса. Используется двухбуквенное обозначение (в нижнем регистре) согласно стандарту ISO 639-1. Обязательный.

Параметры ответа:

Параметр Тип Описание
packages
array Массив объектов с данными о рекуррентных планах.
packages.id
int ID рекуррентного плана в системе Xsolla.
packages.is_active
boolean Флаг активности плана.
packages.charge_amount
float Стоимость подписки на рекуррентный план.
packages.charge_amount_without_discount
float Стоимость подписки на рекуррентный план без скидки (если проводится акция).
packages.charge_currency
string Валюта рекуррентного плана. Используется трехбуквенное обозначение валюты согласно стандарту ISO 4217.
packages.period
int Платежный цикл.
packages.period_unit
string Тип платежного цикла (в днях или месяцах).
packages.name
string Локализованное название рекуррентного плана.
packages.description
string Локализованное описание рекуррентного плана.
packages.bonus_virtual_currency
object Объект с информацией о виртуальной валюте в виде бонуса (если проводится акция).
packages.bonus_virtual_currency.vc_amount
float Количество виртуальной валюты в виде бонуса.
packages.bonus_virtual_items
array Массив с данными о виртуальных товарах в виде бонуса (если проводится акция).
packages.bonus_virtual_items.name
string Локализованное название виртуальное товара.
packages.bonus_virtual_items.quantity
int Количество виртуальных товаров.
packages.offer_label
string Лэйбл акции.
packages.is_trial
boolean Существует ли триальный период для данного рекуррентого плана.
packages.period_trial
int Триальный период в днях.
active_user_package
object Объект с данными об активной подписке пользователя.
active_user_package.date_next_charge
string Дата следующего списания по активной подписке. Дата и время согласно стандарту ISO 8601.
active_user_package.id
string ID плана активной подписки.

Запрос

<?php

$response = $xsollaClient->GetStorefrontSubscriptions(array(
    'project_id' => PROJECT_ID,
    'language' => LANGUAGE_ISO,
    'currency' => CURRENCY_ISO,
    'user_id' => USER_ID
));
GET /merchant/v2/projects/{project_id}/storefront/subscriptions HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/storefront/subscriptions' \
-X GET \
-u merchant_id:merchant_api_key

Ответ

<?php

// example response
$response = array (
    'packages' =>
        array (
            array (
                'id' => '2.99_1_months',
                'is_active' => true,
                'charge_amount' => 2.99,
                'charge_amount_without_discount' => 2.99,
                'charge_currency' => 'USD',
                'period' => 1,
                'period_unit' => 'month',
                'name' => 'Silver Status',
                'description' => NULL,
                'bonus_virtual_currency' => NULL,
                'bonus_virtual_items' =>
                    array (),
                'offer_label' => '',
                'is_trial' => false,
                'period_trial' => 0,
            ),
            array (
                'id' => '4.99_1_months',
                'is_active' => true,
                'charge_amount' => 4.99,
                'charge_amount_without_discount' => 4.99,
                'charge_currency' => 'USD',
                'period' => 1,
                'period_unit' => 'month',
                'name' => 'Gold Status',
                'description' => NULL,
                'bonus_virtual_currency' => NULL,
                'bonus_virtual_items' =>
                    array (),
                'offer_label' => '',
                'is_trial' => false,
                'period_trial' => 0,
            ),
        ),
    'active_user_package' =>
        array (
            'date_next_charge' => '2016-06-28T06:35:02+00:00',
            'id' => '2.99_1_months'
        )
);
HTTP/1.1 200 OK
Content-Type: application/json

{
    "packages": [
        {
            "id": "2.99_1_months",
            "is_active": true,
            "charge_amount": 2.99,
            "charge_amount_without_discount": 2.99,
            "charge_currency": "USD",
            "period": 1,
            "period_unit": "month",
            "name": "Silver Status",
            "description": null,
            "bonus_virtual_currency": null,
            "bonus_virtual_items": [],
            "offer_label": "",
            "is_trial": false,
            "period_trial": 0
        },
        {
            "id": "4.99_1_months",
            "is_active": true,
            "charge_amount": 4.99,
            "charge_amount_without_discount": 4.99,
            "charge_currency": "USD",
            "period": 1,
            "period_unit": "month",
            "name": "Gold Status",
            "description": null,
            "bonus_virtual_currency": null,
            "bonus_virtual_items": [],
            "offer_label": "",
            "is_trial": false,
            "period_trial": 0
        }
    ],
    "active_user_package": {
            "date_next_charge": "2016-06-28T06:35:02+00:00",
            "id": "2.99_1_months"
        }
}
{
    "packages": [
        {
            "id": "2.99_1_months",
            "is_active": true,
            "charge_amount": 2.99,
            "charge_amount_without_discount": 2.99,
            "charge_currency": "USD",
            "period": 1,
            "period_unit": "month",
            "name": "Silver Status",
            "description": null,
            "bonus_virtual_currency": null,
            "bonus_virtual_items": [],
            "offer_label": "",
            "is_trial": false,
            "period_trial": 0
        },
        {
            "id": "4.99_1_months",
            "is_active": true,
            "charge_amount": 4.99,
            "charge_amount_without_discount": 4.99,
            "charge_currency": "USD",
            "period": 1,
            "period_unit": "month",
            "name": "Gold Status",
            "description": null,
            "bonus_virtual_currency": null,
            "bonus_virtual_items": [],
            "offer_label": "",
            "is_trial": false,
            "period_trial": 0
        }
    ],
    "active_user_package": {
            "date_next_charge": "2016-06-28T06:35:02+00:00",
            "id": "2.99_1_months"
        }
}

Информация об акции

Информация о действующей акции.

HTTP ЗАПРОС

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/storefront/bonus

Параметры запроса:

Параметр Тип Описание
project_id
int ID проекта. Обязательный.
user_id
string ID пользователя. Обязательный.
currency
string Валюта пользователя. Используется трехбуквенное обозначение валюты согласно стандарту ISO 4217. Обязательный.
language
string Язык интерфейса. Используется двухбуквенное обозначение (в нижнем регистре) согласно стандарту ISO 639-1. Обязательный.

Параметры ответа:

Параметр Тип Описание
seconds
int Сколько времени осталось до конца действия акции (в секундах).
name
string Локализованное название акции.
description
string Локализованное описание акции.

Запрос

<?php

$response = $xsollaClient->GetStorefrontBonus(array(
    'project_id' => PROJECT_ID,
    'language' => LANGUAGE_ISO,
    'currency' => CURRENCY_ISO,
    'user_id' => USER_ID
));
GET /merchant/v2/projects/{project_id}/storefront/bonus HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/storefront/bonus' \
-X GET \
-u merchant_id:merchant_api_key

Ответ

<?php

// example response
$response = array (
    'seconds' => 619513283,
    'name' => 'Promotion name',
    'description' => 'Promotion description',
);
HTTP/1.1 200 OK
Content-Type: application/json

{
    "seconds": 619513283,
    "name": "Promotion name",
    "description": "Promotion description"
}
{
    "seconds": 619513283,
    "name": "Promotion name",
    "description": "Promotion description"
}

Список сохраненных платежных аккаунтов

Список сохраненных платежных аккаунтов пользователя.

HTTP ЗАПРОС

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/payment_accounts

Parameter Type Description
project_id
int ID игры.
user_id
string ID пользователя.

Запрос

<?php

$response = $xsollaClient->ListPaymentAccounts(array(
    'project_id' => PROJECT_ID,
    'user_id' => USER_ID
));
GET /merchant/v2/projects/{project_id}/users/{user_id}/payment_accounts HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/payment_accounts' \
-X GET \
-u merchant_id:merchant_api_key

Ответ

<?php

// example response
$response = array (
    array (
        'type' => 'card',
        'id' => 1,
        'name' => '411111******1111',
        'payment_system' =>
            array (
                'id' => 1380,
                'name' => 'Credit/Debit Cards',
            ),
    ),
);
HTTP/1.1 200 OK
Content-Type: application/json

[
    {
        "type": "card",
        "id": 1,
        "name": "411111******1111",
        "payment_system": {
            "id": 1380,
            "name": "Credit/Debit Cards"
        }
    }
]
[
    {
        "type": "card",
        "id": 1,
        "name": "411111******1111",
        "payment_system": {
            "id": 1380,
            "name": "Credit/Debit Cards"
        }
    }
]

Оплата по сохраненному платежному аккаунту

Оплата по сохраненному платежному аккаунту.

HTTP ЗАПРОС

POST https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/payments/{type}/{account_id}

Parameter Type Description
project_id
int ID игры. Обязательный.
user_id
int ID пользователя. Обязательный.
type
string Тип платежного аккаунта: card / paypal. Обязательный.
account_id
int Идентификатор сохраненного платежного аккаунта в системе Xsolla. Обязательный.
user
object Объект с данными о пользователе.
user.ip
string IP пользователя. Обязательный.
user.name
string Имя пользователя.
purchase
object Объект с данными о заказе. Обязательный.
purchase.virtual_currency
object Объект с данными о виртуальной валюте.
purchase.virtual_currency.quantity
float Количество виртуальной валюты в заказе.
purchase.checkout
object Объект с данными о реальной валюте.
purchase.checkout.currency
string Валюта заказа. Используется трехбуквенное обозначение валюты согласно стандарту ISO 4217.
purchase.checkout.amount
float Сумма заказа.
settings
object Объект с данными о настройках.
settings.mode
string Передайте значение "sandbox", чтобы провести тестовые платежи. Для проведения реальных платежей этот параметр необходимо убрать.

Запрос

<?php

$response = $xsollaClient->ChargePaymentAccount(array(
    'project_id' => PROJECT_ID,
    'user_id' => USER_ID,
    'type' => TYPE,
    'account_id' => ACCOUNT_ID,
    'request' => array (
         'user' =>
             array (
                 'ip' => '127.0.0.1',
                 'name' => 'John Smith',
             ),
         'purchase' =>
             array (
                 'virtual_currency' =>
                     array (
                         'quantity' => 100,
                     ),
                 'description' =>
                     array (
                         'value' => 'Test Purchase',
                     ),
             ),
         'settings' =>
             array (
                 'mode' => 'sandbox',
             ),
    )
));
POST /merchant/v2/projects/{project_id}/users/{user_id}/payments/{type}/{account_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json

{
    "user": {
        "ip": "127.0.0.1",
        "name": "John Smith"
    },
    "purchase": {
        "virtual_currency": {
            "quantity": 100
        },
        "description": {
            "value": "Test Purchase"
        }
    },
    "settings": {
        "mode": "sandbox"
    }
}
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/payments/{type}/{account_id}' \
-X POST \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
    "user": {
        "ip": "127.0.0.1",
        "name": "John Smith"
    },
    "purchase": {
        "virtual_currency": {
            "quantity": 100
        },
        "description": {
            "value": "Test Purchase"
        }
    },
    "settings": {
        "mode": "sandbox"
    }
}'

Ответ

<?php

// example response
$response = array (
    'transaction_id' => 119478390
);
HTTP/1.1 201 Created
Content-Type: application/json

{
    "transaction_id": 119478390
}
{
    "transaction_id": 119478390
}

Удаление сохраненного платежного аккаунта

Удаление сохраненного платежного аккаунта.

HTTP ЗАПРОС

DELETE https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/payment_accounts/{type}/{account_id}

Parameter Type Description
project_id
int ID игры.
user_id
string ID пользователя.
type
string Тип платежного аккаунта: card / paypal.
account_id
int Идентификатор сохраненного платежного аккаунта в системе Xsolla.

Запрос

<?php

$response = $xsollaClient->DeletePaymentAccount(array(
    'project_id' => PROJECT_ID,
    'user_id' => USER_ID,
    'type' => TYPE,
    'account_id' => ACCOUNT_ID
));
DELETE /merchant/v2/projects/{project_id}/users/{user_id}/payment_accounts/{type}/{account_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/payment_accounts/{type}/{account_id}' \
-X DELETE \
-u merchant_id:merchant_api_key

Ответ

<?php

// example response
$response = null;
HTTP/1.1 204 No Content

Создание плана

Создание рекуррентного плана.

HTTP ЗАПРОС

POST https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/plans

Параметр Тип Описание
project_id
int ID игры.
external_id
string(32 char) Внешний идентификатор плана. Необязательный.
name
array of strings Название плана. Значение состоит из пар <локализация>:<название плана>.
description
array of strings Описание плана. Значение состоит из пар <локализация>:<описание плана>. Необязательный.
group_id
string ID группы планов. Необязательный.
charge
object Объект с данными о рекуррентном списании.
charge.period
object Объект с данными о периоде подписки.
charge.period.value
int Платежный цикл.
charge.period.type
string Тип платежного цикла: день / месяц.
charge.amount
float Сумма рекуррентного списания.
charge.currency
string Валюта рекуррентного списания. Используется трехбуквенное обозначение валюты согласно стандарту ISO 4217.
expiration
object Объект с информацией об окончании подписки. Необязательный.
expiration.value
int Время до окончания срока подписки.
expiration.type
string Тип расчета для окончания срока: день / месяц.
trial
object Объект с данными о триальном периоде. Необязательный.
trial.value
int Время триального периода.
trial.type
string Тип расчета триального периода: день.
grace_period
object Объект с данными о периоде отсрочки. Необязательный.
grace_period.value
int Время периода отсрочки.
grace_period.type
string Тип расчета периода отсрочки: день.

Запрос

<?php

$response = $xsollaClient->CreateSubscriptionPlan(array(
    'project_id' => PROJECT_ID,
    'request' => array (
         'external_id' => 'sample_plan',
         'name' =>
             array (
                 'en' => 'Sample Plan',
             ),
         'description' =>
             array (
                 'en' => 'Basic options plan',
             ),
         'group_id' => 'USA Products',
         'charge' =>
             array (
                 'period' =>
                     array (
                         'value' => 1,
                         'type' => 'month',
                     ),
                 'amount' => 10,
                 'currency' => 'USD',
             ),
         'expiration' =>
             array (
                 'value' => '',
                 'type' => '',
             ),
     )

));
POST /merchant/v2/projects/{project_id}/subscriptions/plans HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json

{
    "external_id": "sample_plan",
    "name": {
        "en": "Sample Plan"
    },
    "description": {
        "en": "Basic options plan"
    },
    "group_id": "USA Products",
    "charge": {
        "period": {
            "value": 1,
            "type": "month"
        },
        "amount": 10,
        "currency": "USD"
    },
    "expiration": {
        "value": "",
        "type": ""
    }
}
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/plans' \
-X POST \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
    "external_id": "sample_plan",
    "name": {
        "en": "Sample Plan"
    },
    "description": {
        "en": "Basic options plan"
    },
    "group_id": "USA Products",
    "charge": {
        "period": {
            "value": 1,
            "type": "month"
        },
        "amount": 10,
        "currency": "USD",
    },
    "expiration": {
        "value": "",
        "type": ""
    }
}'

Ответ

<?php

// example response
$response = array (
    'plan_id' => 54
);
HTTP/1.1 201 Created
Content-Type: application/json

{
    "plan_id": 54
}
{
    "plan_id": 54
}

Изменение плана

Изменение рекуррентного плана.

HTTP ЗАПРОС

PUT https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/plans/{plan_id}

Параметр Тип Описание
project_id
int ID игры.
plan_id
int ID плана.
external_id
string(32 char) Внешний идентификатор плана. Необязательный.
name
array of strings Название плана. Значение состоит из пар <локализация>:<название плана>.
description
array of strings Описание плана. Значение состоит из пар <локализация>:<описание плана>. Необязательный.
group_id
string ID группы планов. Необязательный.
charge
object Объект с данными о рекуррентном списании.
charge.period
object Объект с данными о периоде подписки.
charge.period.value
int Платежный цикл.
charge.period.type
string Тип платежного цикла: день / месяц.
charge.amount
float Сумма рекуррентного списания.
charge.currency
string Валюта рекуррентного списания. Используется трехбуквенное обозначение валюты согласно стандарту ISO 4217.
expiration
object Объект с информацией об окончании подписки. Необязательный.
expiration.value
int Время до окончания срока подписки.
expiration.type
string Тип расчета для окончания срока: день / месяц.
trial
object Объект с данными о триальном периоде. Необязательный.
trial.value
int Время триального периода.
trial.type
string Тип расчета триального периода: день.
grace_period
object Объект с данными о периоде отсрочки. Необязательный.
grace_period.value
int Время периода отсрочки.
grace_period.type
string Тип расчета периода отсрочки: день.

Запрос

<?php

$response = $xsollaClient->UpdateSubscriptionPlan(array(
    'project_id' => PROJECT_ID,
    'plan_id' => PLAN_ID,
    'request' => array (
         'external_id' => 'sample_plan',
         'name' =>
             array (
                 'en' => 'Sample Plan',
             ),
         'description' =>
             array (
                 'en' => 'Basic options plan',
             ),
         'charge' =>
             array (
                 'period' =>
                     array (
                         'value' => 1,
                         'type' => 'month',
                     ),
                 'amount' => 10,
                 'currency' => 'USD',
             ),
         'expiration' =>
             array (
                 'value' => '',
                 'type' => '',
             ),
     )
));
PUT /merchant/v2/projects/{project_id}/subscriptions/plans/{plan_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json

{
    "external_id": "sample_plan",
    "name": {
        "en": "Sample Plan"
    },
    "description": {
        "en": "Basic options plan"
    },
    "charge": {
        "period": {
            "value": 1,
            "type": "month"
        },
        "amount": 10,
        "currency": "USD"
    },
    "expiration": {
        "value": "",
        "type": ""
    }
}
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/plans/{plan_id}' \
-X PUT \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
    "external_id": "sample_plan",
    "name": {
        "en": "Sample Plan"
    },
    "description": {
        "en": "Basic options plan"
    },
    "charge": {
        "period": {
            "value": 1,
            "type": "month"
        },
        "amount": 10,
        "currency": "USD"
    },
    "expiration": {
        "value": "",
        "type": ""
    }
}'

Ответ

<?php

// example response
$response = array (
    'id' => '54',
    'external_id' => 'sample_plan',
    'name' =>
        array (
            'en' => 'Sample Plan'
        ),
    'description' =>
        array (
            'en' => 'Basic options plan'
        ),
    'charge' =>
        array (
            'period' =>
                array (
                    'value' => 1,
                    'type' => 'month'
                ),
            'amount' => 10,
            'currency' => 'USD'
        ),
    'expiration' =>
        array (
            'value' => '',
            'type' => ''
        ),
    'trial' =>
        array (
            'value' => 14,
            'type' => 'day'
        ),
    'status' =>
        array (
            'value' => 'disabled',
            'counters' =>
                array (
                    'active' => 0,
                    'canceled' => 0,
                    'expired' => 0
                )
        )
);
HTTP/1.1 200 OK
Content-Type: application/json

{
    "id": "54",
    "external_id": "sample_plan",
    "name": {
        "en": "Sample Plan"
    },
    "description": {
        "en": "Basic options plan"
    },
    "charge": {
        "period": {
            "value": 1,
            "type": "month"
        },
        "amount": 10,
        "currency": "USD"
    },
    "expiration": {
        "value": "",
        "type": ""
    },
    "trial": {
        "value": 14,
        "type": "day"
    },
    "status": {
        "value": "disabled",
        "counters": {
            "active": 0,
            "canceled": 0,
            "expired": 0
        }
    }
}
{
    "id": "54",
    "external_id": "sample_plan",
    "name": {
        "en": "Sample Plan"
    },
    "description": {
        "en": "Basic options plan"
    },
    "charge": {
        "period": {
            "value": 1,
            "type": "month"
        },
        "amount": 10,
        "currency": "USD"
    },
    "expiration": {
        "value": "",
        "type": ""
    },
    "trial": {
        "value": 14,
        "type": "day"
    },
    "status": {
        "value": "disabled",
        "counters": {
            "active": 0,
            "canceled": 0,
            "expired": 0
        }
    },
    "type":
}

Удаление плана

Удаление рекуррентного плана.

HTTP ЗАПРОС

DELETE https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/plans/{plan_id}/delete

Параметр Тип Описание
project_id
int ID игры.
plan_id
int ID plan.

Запрос


<?php

$response = $xsollaClient->DeleteSubscriptionPlan(array(
    'project_id' => PROJECT_ID,
    'plan_id' => PLAN_ID
));
DELETE /merchant/v2/projects/{project_id}/subscriptions/plans/{plan_id}/delete HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/plans/{plan_id}/delete' \
-X DELETE \
-u merchant_id:merchant_api_key

Ответ

<?php

$response = null;
HTTP/1.1 204 No Content

Отключение плана

Отключение рекуррентного плана.

HTTP ЗАПРОС

DELETE https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/plans/{plan_id}

Параметр Тип Описание
project_id
int ID игры.
plan_id
int ID plan.

Запрос


<?php

$response = $xsollaClient->DisableSubscriptionPlan(array(
    'project_id' => PROJECT_ID,
    'plan_id' => PLAN_ID
));
DELETE /merchant/v2/projects/{project_id}/subscriptions/plans/{plan_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/plans/{plan_id}' \
-X DELETE \
-u merchant_id:merchant_api_key

Ответ

<?php

$response = null;
HTTP/1.1 204 No Content

Включение плана

Включить рекуррентный план.

HTTP ЗАПРОС

PATCH https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/plans/{plan_id}

Параметр Тип Описание
project_id
int ID игры.
plan_id
int ID plan.

Запрос


<?php

$response = $xsollaClient->EnableSubscriptionPlan(array(
    'project_id' => PROJECT_ID,
    'plan_id' => PLAN_ID
));
PATCH /merchant/v2/projects/{project_id}/subscriptions/plans/{plan_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/plans/{plan_id}' \
-X PATCH \
-u merchant_id:merchant_api_key

Ответ

<?php

$response = null;
HTTP/1.1 204 No Content

Список планов

Список рекуррентных планов.

HTTP ЗАПРОС

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/plans

Параметр Тип Описание
project_id
int ID игры.
external_id
string Внешний идентификатор плана.
limit
int Лимит количества списка планов.
offset
int Стартовая страница списка планов.
group_id
string ID группы, к которой привязаны планы.
product_id
int ID продукта, к которому привязаны планы.

Запрос


<?php

$response = $xsollaClient->ListSubscriptionPlans(array(
    'project_id' => PROJECT_ID
));
GET /merchant/v2/projects/{project_id}/subscriptions/plans?external_id=1&limit=1&offset=1 HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/plans?external_id=1&limit=1&offset=1' \
-X GET \
-u merchant_id:merchant_api_key

Ответ

<?php

// example response
$response = array (
    array (
        'id' => '54',
        'external_id' => 'sample_plan',
        'name' =>
            array (
                'en' => 'Sample Plan'
            ),
        'description' =>
            array (
                'en' => 'Basic options plan'
            ),
        'group_id' => 'USA Products',
        'charge' =>
            array (
                'period' =>
                    array (
                        'value' => 1,
                        'type' => 'month'
                    ),
                'amount' => 10,
                'currency' => 'USD'
            ),
        'expiration' =>
            array (
                'value' => 90,
                'type' => 'day'
            ),
        'trial' =>
            array (
                'value' => 14,
                'type' => 'day'
            ),
        'status' =>
            array (
                'value' => 'disabled',
                'counters' =>
                    array (
                        'active' => 0,
                        'canceled' => 0,
                        'expired' => 0
                    )
            )
    )
);
HTTP/1.1 200 OK
Content-Type: application/json

[
    {
        "id": "54",
        "external_id": "sample_plan",
        "name": {
            "en": "Sample Plan"
        },
        "description": {
            "en": "Basic options plan"
        },
        "group_id": "USA Products",
        "charge": {
            "period": {
                "value": 1,
                "type": "month"
            },
            "amount": 10,
            "currency": "USD"
        },
        "expiration": {
            "value": 90,
            "type": "day"
        },
        "trial": {
            "value": 14,
            "type": "day"
        },
        "status": {
            "value": "disabled",
            "counters": {
                "active": 0,
                "canceled": 0,
                "expired": 0
            }
        }
    }
]
[
    {
        "id": "54",
        "external_id": "sample_plan",
        "name": {
            "en": "Sample Plan"
        },
        "description": {
            "en": "Basic options plan"
        },
        "group_id": "USA Products",
        "charge": {
            "period": {
                "value": 1,
                "type": "month"
            },
            "amount": 10,
            "currency": "USD",
        },
        "expiration": {
            "value": 90,
            "type": "day",
        },
        "trial": {
            "value": 14,
            "type": "day"
        },
        "status": {
            "value": "disabled",
            "counters": {
                "active": 0,
                "canceled": 0,
                "expired": 0
            }
        }
    }
]

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

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

HTTP ЗАПРОС

POST https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/products

Параметр Тип Описание
project_id
int ID игры.
name
string Название продукта.
group_id
string ID группы.

Запрос

<?php

$response = $xsollaClient->CreateSubscriptionProduct(array(
    'project_id' => PROJECT_ID,
    'request' => array(
        'name' => 'Demo Product',
        'group_id' => 'USA Products'
    ),
));
POST /merchant/v2/projects/{project_id}/subscriptions/products HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json

{
    "name": "Demo Product",
    "group_id": "USA Products"
}
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/products' \
-X POST \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
        "name": "Demo Product",
        "group_id": "USA Products"
    }'

Ответ

<?php

// example response
$response = array (
    'product_id' => '64'
);
HTTP/1.1 201 Created
Content-Type: application/json

{
    "product_id": "64"
}
{
    "product_id": "64"
}

Изменение продукта

Изменение продукта.

HTTP ЗАПРОС

PUT https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/products/{product_id}

Параметр Тип Описание
project_id
int ID игры.
product_id
int ID продукта.
name
string Название продукта.
group_id
string ID группы.

Запрос

<?php

$response = $xsollaClient->UpdateSubscriptionProduct(array(
    'project_id' => PROJECT_ID,
    'request' => array(
        'name' => 'Demo Product',
        'group_id' => 'USA Products'
    ),
));
PUT /merchant/v2/projects/{project_id}/subscriptions/products/{product_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json

{
        "name": "Demo Product",
        "group_id": "USA Products"
}
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/products/{product_id}' \
-X PUT \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
            "name": "Demo Product",
            "group_id": "USA Products"
    }'

Ответ

<?php

// example response
$response = array (
    'id' => '64',
    'name' => 'Demo Product',
    'group_id' => 'USA Products'
);
HTTP/1.1 200 OK
Content-Type: application/json

{
    "id": "64",
    "name": "Demo Product",
    "group_id": "USA Products"
}
{
    "id": "64",
    "name": "Demo Product",
    "group_id": "USA Products"
}

Удаление продукта

Удаление продукта.

HTTP ЗАПРОС

DELETE https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/products/{product_id}

Параметр Тип Описание
project_id
int ID игры.
product_id
int ID продукта.

Запрос


<?php

$response = $xsollaClient->DeleteSubscriptionProduct(array(
    'project_id' => PROJECT_ID,
    'product_id' => PRODUCT_ID
));
DELETE /merchant/v2/projects/{project_id}/subscriptions/products/{product_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/products/{product_id}' \
-X DELETE \
-u merchant_id:merchant_api_key

Ответ

<?php

$response = null;
HTTP/1.1 204 No Content

Список продуктов

Список продуктов.

HTTP ЗАПРОС

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/products

Параметр Тип Описание
project_id
int ID игры.
group_id
string Id группы, к которой привязаны продукты.
product_id
int Id продукта.
limit
int Лимит количества продуктов в списке.
offset
int Стартовая страница списка продуктов.

Запрос


<?php

$response = $xsollaClient->DeleteSubscriptionProduct(array(
    'project_id' => PROJECT_ID
));
GET /merchant/v2/projects/{project_id}/subscriptions/products?group_id=USA%20Products&limit=1&offset=1 HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/products?group_id=USA%20Products&limit=1&offset=1' \
-X GET \
-u merchant_id:merchant_api_key

Ответ

<?php

// example response
$response = array (
    array (
        'id' => 3,
        'group_id' => 'USA Products',
        'name' => 'Demo Product'
    )
);
HTTP/1.1 200 OK
Content-Type: application/json

[
    {
        "id": 3,
        "group_id": "USA Products",
        "name": "Demo Product"
    }
]
[
    {
        "id": 3,
        "group_id": "USA Products",
        "name": "Demo Product"
    }
]

Изменение подписки

Изменение рекуррентной подписки. Можно изменить статус подписки (active, canceled или non_renewing) и отложить дату следующего списания для данной подписки.

HTTP ЗАПРОС

PUT https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/subscriptions/{subscription_id}

Параметр Тип Описание
project_id
int ID игры.
subscription_id
int ID подписки.
user_id
string ID пользователя.
status
string Статус подписки: active / canceled / non_renewing.
cancel_subscription_payment
boolean Если передано значение true, то происходит отмена последнего платежа, сделанного по подписке. Данный параметр работает, только если статус платежа изменен на canceled.
timeshift
object Объект с информацией об отложенном сроке следующего списания.
timeshift.value
string Время, на которое следующее списание должно быть отложено (значение может быть отрицательным).
timeshift.type
string Тип отложенного периода: day / month.

Запрос

<?php

$response = $xsollaClient->UpdateSubscription(array(
    'project_id' => PROJECT_ID,
    'user_id' => USER_ID,
    'subscription_id' => SUBSCRIPTION_ID,
    'request' => array (
         'status' => 'canceled',
         'timeshift' =>
             array (
                 'value' => '30',
                 'type' => 'day',
             )
    )
));
PUT /merchant/v2/projects/{project_id}/users/{user_id}/subscriptions/{subscription_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json

{
    "status": "canceled",
    "timeshift": {
         "value": "30",
         "type": "day"
    }
}
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/subscriptions/{subscription_id}' \
-X PUT \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
    "status": "canceled",
    "timeshift": {
         "value": "30",
         "type": "day"
    }
}'

Ответ

<?php

// example response
$response = array (
    'id' => 45,
    'plan' =>
        array (
            'id' => '54',
            'external_id' => 'sample_plan',
            'group_id' => 'USA Products',
            'project_id' => 14004,
            'name' =>
                array (
                    'en' => 'Sample Plan'
                ),
            'description' =>
                array (
                    'en' => 'Basic options plan'
                ),
            'localized_name' => 'Basic Plan',
            'charge' =>
                array (
                    'period' =>
                        array (
                            'value' => 1,
                            'type' => 'month'
                        ),
                    'amount' => 10,
                    'currency' => 'USD'
                ),
            'expiration' =>
                array (
                    'value' => 90,
                    'type' => 'day'
                ),
            'trial' =>
                array (
                    'value' => 14,
                    'type' => 'day'
                ),
            'status' =>
                array (
                    'value' => 'active',
                    'counters' =>
                        array (
                            'active' => 0,
                            'canceled' => 1,
                            'expired' => 0
                        )
                )
        ),
    'user' =>
        array (
            'id' => '20',
        ),
    'product' => null,
    'charge_amount' => 10,
    'currency' => 'USD',
    'date_create' => '2014-09-30T15:34:17+06:00',
    'date_end' => '2014-10-07T15:34:17+06:00',
    'date_last_charge' => '2014-10-01T15:34:17+06:00',
    'date_next_charge' => '2014-11-01T15:34:17+06:00',
    'status' => 'canceled'
);
HTTP/1.1 200 OK
Content-Type: application/json

{
    "id": 45,
    "plan": {
        "id": "54",
        "external_id": "sample_plan",
        "group_id": "USA Products",
        "project_id": 14004,
        "name": {
                "en": "Sample Plan"
        },
        "description": {
            "en": "Basic options plan"
        },
        "localized_name": "Basic Plan",
        "charge": {
            "period": {
                "value": 1,
                "type": "month"
            },
            "amount": 10,
            "currency": "USD"
        },
        "expiration": {
            "value": 90,
            "type": "day"
        },
        "trial": {
            "value": 14,
            "type": "day"
        },
        "status": {
            "value": "active",
            "counters": {
                "active": 0,
                "canceled": 1,
                "expired": 0
            }
        }
    },
    "user": {
        "id": "20"
    },
    "product": null,
    "charge_amount": 10,
    "currency": "USD",
    "date_create": "2014-09-30T15:34:17+06:00",
    "date_end": "2014-10-07T15:34:17+06:00",
    "date_last_charge": "2014-10-01T15:34:17+06:00",
    "date_next_charge": "2014-11-01T15:34:17+06:00",
    "status": "canceled"
}
{
    "id": 45,
    "plan": {
        "id": "54",
        "external_id": "sample_plan",
        "group_id": "USA Products",
        "project_id": 14004,
        "name": {
            "en": "Sample Plan"
        },
        "description": {
            "en": "Basic options plan"
        },
        "localized_name": "Basic Plan",
        "charge": {
            "period": {
                "value": 1,
                "type": "month"
            },
            "amount": 10,
            "currency": "USD"
        },
        "expiration": {
            "value": 90,
            "type": "day"
        },
        "trial": {
            "value": 14,
            "type": "day"
        },
        "status": {
            "value": "active",
            "counters": {
                "active": 0,
                "canceled": 1,
                "expired": 0
            }
        }
    },
    "user": {
        "id": "20"
    },
    "product": null,
    "charge_amount": 10,
    "currency": "USD",
    "date_create": "2014-09-30T15:34:17+06:00",
    "date_end": "2014-10-07T15:34:17+06:00",
    "date_last_charge": "2014-10-01T15:34:17+06:00",
    "date_next_charge": "2014-11-01T15:34:17+06:00",
    "status": "canceled"
}

Список подписок

Список рекуррентных подписок.

HTTP ЗАПРОС

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/subscriptions

Параметр Тип Описание
project_id
int ID игры. Обязательный.
user_id
string ID пользователя в игре. Обязательный.
status
string Статус: active / canceled / non_renewing / new.
limit
int Лимит количества подписок.
offset
int Стартовая страница списка подписок.
datetime_from
datetime Начало периода.
datetime_to
datetime Конец периода.
plan_id
string ID плана.
product_id
string ID продукта.

Запрос


<?php

$response = $xsollaClient->ListSubscriptions(array(
    'project_id' => PROJECT_ID,
    'user_id' => USER_ID
));
GET /merchant/v2/projects/{project_id}/users/{user_id}/subscriptions?status=active&limit=1&offset=1&datetime_from=2014-10-01T00%3A00%3A00Z&datetime_to=2014-10-02T00%3A00%3A00Z HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/subscriptions?status=active&limit=1&offset=1&datetime_from=2014-10-01T00%3A00%3A00Z&datetime_to=2014-10-02T00%3A00%3A00Z' \
-X GET \
-u merchant_id:merchant_api_key

Ответ

<?php

// example response
$response = array (
    array (
        'id' => 45,
        'plan' =>
            array (
                'id' => '54',
                'external_id' => 'sample_plan',
                'group_id' => 'USA Products',
                'project_id' => 14004,
                'name' =>
                    array (
                        'en' => 'Sample Plan'
                    ),
                'description' =>
                    array (
                        'en' => 'Basic options plan'
                    ),
                'localized_name' => 'Basic Plan',
                'charge' =>
                    array (
                        'period' =>
                            array (
                                'value' => 1,
                                'type' => 'month'
                            ),
                        'amount' => 10,
                        'currency' => 'USD'
                    ),
                'expiration' =>
                    array (
                        'value' => 90,
                        'type' => 'day'
                    ),
                'trial' =>
                    array (
                        'value' => 14,
                        'type' => 'day'
                    ),
                'status' =>
                    array (
                        'value' => 'disabled',
                        'counters' =>
                            array (
                                'active' => 0,
                                'canceled' => 0,
                                'expired' => 0
                            )
                    )
            ),
        'user' =>
            array (
                'id' => '20'
            ),
        'product' => null,
        'charge_amount' => 10,
        'currency' => 'USD',
        'date_create' => '2014-09-30T15:34:17+04:00',
        'date_end' => '2014-10-07T15:34:17+04:00',
        'date_last_charge' => '2014-10-01T15:34:17+04:00',
        'date_next_charge' => null,
        'status' => 'active'
    )
);
HTTP/1.1 200 OK
Content-Type: application/json

[
    {
        "id": 45,
        "plan": {
            "id": "54",
            "external_id": "sample_plan",
            "group_id": "USA Products",
            "project_id": 14004,
            "name": {
                "en": "Sample Plan"
            },
            "description": {
                "en": "Basic options plan"
            },
            "localized_name": "Basic Plan",
            "charge": {
                "period": {
                    "value": 1,
                    "type": "month"
                },
                "amount": 10,
                "currency": "USD"
            },
            "expiration": {
                "value": 90,
                "type": "day"
            },
            "trial": {
                "value": 14,
                "type": "day"
            },
            "status": {
                "value": "disabled",
                "counters": {
                    "active": 0,
                    "canceled": 0,
                    "expired": 0
                }
            }
        },
        "user": {
            "id": "20"
        },
        "product": null,
        "charge_amount": 10,
        "currency": "USD",
        "date_create": "2014-09-30T15:34:17+04:00",
        "date_end": "2014-10-07T15:34:17+04:00",
        "date_last_charge": "2014-10-01T15:34:17+04:00",
        "date_next_charge": null,
        "status": "active"
    }
]
[
    {
        "id": 45,
        "plan": {
            "id": "54",
            "external_id": "sample_plan",
            "group_id": "USA Products",
            "project_id": 14004,
            "name": {
                "en": "Sample Plan"
            },
            "description": {
                "en": "Basic options plan"
            },
            "localized_name": "Basic Plan",
            "charge": {
                "period": {
                    "value": 1,
                    "type": "month"
                },
                "amount": 10,
                "currency": "USD"
            },
            "expiration": {
                "value": 90,
                "type": "day"
            },
            "trial": {
                "value": 14,
                "type": "day"
            },
            "status": {
                "value": "disabled",
                "counters": {
                    "active": 0,
                    "canceled": 0,
                    "expired": 0
                }
            }
        },
        "user": {
            "id": "20"
        },
        "product": null,
        "charge_amount": 10,
        "currency": "USD",
        "date_create": "2014-09-30T15:34:17+04:00",
        "date_end": "2014-10-07T15:34:17+04:00",
        "date_last_charge": "2014-10-01T15:34:17+04:00",
        "date_next_charge": null,
        "status": "active"
    }
]

Список платежей

Список рекуррентных платежей.

HTTP ЗАПРОС

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/payments

Параметр Тип Описание
project_id
int ID игры.
user_id
string ID пользователя в игре.
status
string Статус: processing / canceled / done.
limit
int Лимит количества платежей.
offset
int Стартовая страница списка платежей.
datetime_from
datetime Начало периода.
datetime_to
datetime Конец периода.
subscription_id
int ID подписки.

Запрос


<?php

$response = $xsollaClient->ListSubscriptionPayments(array(
    'project_id' => PROJECT_ID
));
GET /merchant/v2/projects/{project_id}/subscriptions/payments?status=done&limit=1&offset=1&datetime_from=2014-10-01T00%3A00%3A00Z&datetime_to=2014-10-02T00%3A00%3A00Z HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/payments?status=done&limit=1&offset=1&datetime_from=2014-10-01T00%3A00%3A00Z&datetime_to=2014-10-02T00%3A00%3A00Z' \
-X GET \
-u merchant_id:merchant_api_key

Ответ

<?php

// example response
$response = array (
    array (
        'id' => 35,
        'id_payment' => 118441192,
        'date_payment' => '2014-09-30T15:34:17+04:00',
        'status' => 'done',
        'subscription' =>
            array (
                'id' => 45,
                'plan' =>
                    array (
                        'id' => '54',
                        'external_id' => 'sample_plan',
                        'group_id' => 'USA Products',
                        'name' =>
                            array (
                                'en' => 'Sample Plan'
                            ),
                        'description' =>
                            array (
                                'en' => 'Basic options plan'
                            ),
                        'localized_name' => 'Basic Plan',
                        'charge' =>
                            array (
                                'period' =>
                                    array (
                                        'value' => 1,
                                        'type' => 'month'
                                    ),
                                'amount' => 10,
                                'currency' => 'USD'
                            ),
                        'expiration' =>
                            array (
                                'value' => 90,
                                'type' => 'day'
                            ),
                        'trial' =>
                            array (
                                'value' => 14,
                                'type' => 'day'
                            ),
                        'status' =>
                            array (
                                'value' => 'disabled',
                                'counters' =>
                                    array (
                                        'active' => 0,
                                        'closed' => 0,
                                        'expired' => 0
                                    )
                            )
                    ),
                'user' =>
                    array (
                        'id' => 20,
                        'name' => 'John Smith'
                    ),
                'product' => null,
                'charge_amount' => 10,
                'currency' => 'USD',
                'date_create' => '2014-09-30T15:34:17+04:00',
                'date_end' => '2014-10-07T15:34:17+04:00',
                'date_last_charge' => '2014-10-01T15:34:17+04:00',
                'date_next_charge' => '2014-11-01T15:34:17+04:00',
                'status' => 'done'
            )
    )
);
HTTP/1.1 200 OK
Content-Type: application/json

[
    {
        "id": 35,
        "id_payment": 118441192,
        "date_payment": "2014-09-30T15:34:17+04:00",
        "status": "done",
        "subscription": {
            "id": 45,
            "plan": {
                "id": "54",
                "external_id": "sample_plan",
                "group_id": "USA Products",
                "name": {
                    "en": "Sample Plan"
                },
                "description": {
                    "en": "Basic options plan"
                },
                "localized_name": "Basic Plan",
                "charge": {
                    "period": {
                        "value": 1,
                        "type": "month"
                    },
                    "amount": 10,
                    "currency": "USD"
                },
                "expiration": {
                    "value": 90,
                    "type": "day"
                },
                "trial": {
                    "value": 14,
                    "type": "day"
                },
                "status": {
                    "value": "disabled",
                    "counters": {
                        "active": 0,
                        "closed": 0,
                        "expired": 0
                    }
                }
            },
            "user": {
                "id": 20,
                "name": "John Smith"
            },
            "product": null,
            "charge_amount": 10,
            "currency": "USD",
            "date_create": "2014-09-30T15:34:17+04:00",
            "date_end": "2014-10-07T15:34:17+04:00",
            "date_last_charge": "2014-10-01T15:34:17+04:00",
            "date_next_charge": "2014-11-01T15:34:17+04:00",
            "status": "done"
        }
    }
]
[
    {
        "id": 35,
        "id_payment": 118441192,
        "date_payment": "2014-09-30T15:34:17+04:00",
        "status": "done",
        "subscription": {
            "id": 45,
            "plan": {
                "id": "54",
                "external_id": "sample_plan",
                "group_id": "USA Products",
                "name": {
                    "en": "Sample Plan"
                },
                "description": {
                    "en": "Basic options plan"
                },
                "localized_name": "Basic Plan",
                "charge": {
                    "period": {
                        "value": 1,
                        "type": "month"
                    },
                    "amount": 10,
                    "currency": "USD"
                },
                "expiration": {
                    "value": 90,
                    "type": "day"
                },
                "trial": {
                    "value": 14,
                    "type": "day"
                },
                "status": {
                    "value": "disabled",
                    "counters": {
                        "active": 0,
                        "closed": 0,
                        "expired": 0
                    }
                }
            },
            "user": {
                "id": 20,
                "name": "John Smith"
            },
            "product": null,
            "charge_amount": 10,
            "currency": "USD",
            "date_create": "2014-09-30T15:34:17+04:00",
            "date_end": "2014-10-07T15:34:17+04:00",
            "date_last_charge": "2014-10-01T15:34:17+04:00",
            "date_next_charge": "2014-11-01T15:34:17+04:00",
            "status": "done"
        }
    }
]

Список платежей пользователя

Список рекуррентных платежей пользователя.

HTTP ЗАПРОС

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/subscriptions/payments

Параметр Тип Описание
project_id
int ID игры.
user_id
string ID пользователя в игре.
status
string Статус: processing / canceled / done.
limit
int Лимит количества платежей.
offset
int Стартовая страница списка платежей.
datetime_from
datetime Начало периода.
datetime_to
datetime Конец периода.
subscription_id
int ID подписки.

Запрос


<?php

$response = $xsollaClient->ListUserSubscriptionPayments(array(
    'project_id' => PROJECT_ID,
    'user_id' => USER_ID
));
GET /merchant/v2/projects/{project_id}/users/{user_id}/subscriptions/payments?status=done&limit=1&offset=1&datetime_from=2014-10-01T00%3A00%3A00Z&datetime_to=2014-10-02T00%3A00%3A00Z HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/subscriptions/payments?status=done&limit=1&offset=1&datetime_from=2014-10-01T00%3A00%3A00Z&datetime_to=2014-10-02T00%3A00%3A00Z' \
-X GET \
-u merchant_id:merchant_api_key

Ответ

<?php

// example response
$response = array (
    array (
        'id' => 35,
        'id_payment' => 118441192,
        'date_payment' => '2014-09-30T15:34:17+04:00',
        'status' => 'done',
        'subscription' =>
            array (
                'id' => 45,
                'plan' =>
                    array (
                        'id' => '54',
                        'external_id' => 'sample_plan',
                        'group_id' => 'USA Products',
                        'project_id' => 14004,
                        'name' =>
                            array (
                                'en' => 'Sample Plan'
                            ),
                        'description' =>
                            array (
                                'en' => 'Basic options plan'
                            ),
                        'localized_name' => 'Basic Plan',
                        'charge' =>
                            array (
                                'period' =>
                                    array (
                                        'value' => 1,
                                        'type' => 'month'
                                    ),
                                'amount' => 10,
                                'currency' => 'USD'
                            ),
                        'expiration' =>
                            array (
                                'value' => 90,
                                'type' => 'day'
                            ),
                        'trial' =>
                            array (
                                'value' => 14,
                                'type' => 'day'
                            ),
                        'status' =>
                            array (
                                'value' => 'disabled',
                                'counters' =>
                                    array (
                                        'active' => 0,
                                        'closed' => 0,
                                        'expired' => 0
                                    )
                            )
                    ),
                'user' =>
                    array (
                        'id' => 20,
                        'name' => 'John Smith'
                    ),
                'product' => null,
                'charge_amount' => 10,
                'currency' => 'USD',
                'date_create' => '2014-09-30T15:34:17+04:00',
                'date_end' => '2014-10-07T15:34:17+04:00',
                'date_last_charge' => '2014-10-01T15:34:17+04:00',
                'date_next_charge' => '2014-11-01T15:34:17+04:00',
                'status' => 'done'
            )
    )
);
HTTP/1.1 200 OK
Content-Type: application/json

[
    {
        "id": 35,
        "id_payment": 118441192,
        "date_payment": "2014-09-30T15:34:17+04:00",
        "status": "done",
        "subscription": {
            "id": 45,
            "plan": {
                "id": "54",
                "external_id": "sample_plan",
                "group_id": "USA Products",
                "project_id": 14004,
                "name": {
                    "en": "Sample Plan"
                },
                "description": {
                    "en": "Basic options plan"
                },
                "localized_name": "Basic Plan",
                "charge": {
                    "period": {
                        "value": 1,
                        "type": "month"
                    },
                    "amount": 10,
                    "currency": "USD"
                },
                "expiration": {
                    "value": 90,
                    "type": "day"
                },
                "trial": {
                    "value": 14,
                    "type": "day"
                },
                "status": {
                    "value": "disabled",
                    "counters": {
                        "active": 0,
                        "closed": 0,
                        "expired": 0
                    }
                }
            },
            "user": {
                "id": 20,
                "name": "John Smith"
            },
            "product": null,
            "charge_amount": 10,
            "currency": "USD",
            "date_create": "2014-09-30T15:34:17+04:00",
            "date_end": "2014-10-07T15:34:17+04:00",
            "date_last_charge": "2014-10-01T15:34:17+04:00",
            "date_next_charge": "2014-11-01T15:34:17+04:00",
            "status": "done"
        }
    }
]
[
    {
        "id": 35,
        "id_payment": 118441192,
        "date_payment": "2014-09-30T15:34:17+04:00",
        "status": "done",
        "subscription": {
            "id": 45,
            "plan": {
                "id": "54",
                "external_id": "sample_plan",
                "group_id": "USA Products",
                "project_id": 14004,
                "name": {
                    "en": "Sample Plan"
                },
                "description": {
                    "en": "Basic options plan"
                },
                "localized_name": "Basic Plan",
                "charge": {
                    "period": {
                        "value": 1,
                        "type": "month"
                    },
                    "amount": 10,
                    "currency": "USD"
                },
                "expiration": {
                    "value": 90,
                    "type": "day"
                },
                "trial": {
                    "value": 14,
                    "type": "day"
                },
                "status": {
                    "value": "disabled",
                    "counters": {
                        "active": 0,
                        "closed": 0,
                        "expired": 0
                    }
                }
            },
            "user": {
                "id": 20,
                "name": "John Smith"
            },
            "product": null,
            "charge_amount": 10,
            "currency": "USD",
            "date_create": "2014-09-30T15:34:17+04:00",
            "date_end": "2014-10-07T15:34:17+04:00",
            "date_last_charge": "2014-10-01T15:34:17+04:00",
            "date_next_charge": "2014-11-01T15:34:17+04:00",
            "status": "done"
        }
    }
]

Список валют

Список валют.

HTTP ЗАПРОС

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/currencies

Параметр Тип Описание
project_id
int ID игры.

Запрос


<?php

$response = $xsollaClient->ListSubscriptionCurrencies(array(
    'project_id' => PROJECT_ID
));
GET /merchant/v2/projects/{project_id}/subscriptions/currencies HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/currencies' \
-X GET \
-u merchant_id:merchant_api_key

Ответ

<?php

// example response
$response = array(
    "AED",
    "ALL",
    "AMD",
    "ARS",
    "AUD",
    "AZN",
    "BGN",
    "BRL",
    "BYR",
    "CAD",
    "CHF",
    "CLP",
    "CNY",
    "COP",
    "CZK",
    "DKK",
    "DZD",
    "EGP",
    "EUR",
    "GBP",
    "GEL",
    "HKD",
    "HRK",
    "HUF",
    "IDR",
    "ILS",
    "INR",
    "JPY",
    "KES",
    "KGS",
    "KRW",
    "KZT",
    "MAD",
    "MDL",
    "MKD",
    "MNT",
    "MXN",
    "MYR",
    "NGN",
    "NOK",
    "NZD",
    "PEN",
    "PHP",
    "PKR",
    "PLN",
    "RON",
    "RSD",
    "RUB",
    "SAR",
    "SEK",
    "SGD",
    "THB",
    "TRY",
    "UAH",
    "USD",
    "UYU",
    "UZS",
    "VND",
    "ZAR"
);
HTTP/1.1 200 OK
Content-Type: application/json

[
    "AED",
    "ALL",
    "AMD",
    "ARS",
    "AUD",
    "AZN",
    "BGN",
    "BRL",
    "BYR",
    "CAD",
    "CHF",
    "CLP",
    "CNY",
    "COP",
    "CZK",
    "DKK",
    "DZD",
    "EGP",
    "EUR",
    "GBP",
    "GEL",
    "HKD",
    "HRK",
    "HUF",
    "IDR",
    "ILS",
    "INR",
    "JPY",
    "KES",
    "KGS",
    "KRW",
    "KZT",
    "MAD",
    "MDL",
    "MKD",
    "MNT",
    "MXN",
    "MYR",
    "NGN",
    "NOK",
    "NZD",
    "PEN",
    "PHP",
    "PKR",
    "PLN",
    "RON",
    "RSD",
    "RUB",
    "SAR",
    "SEK",
    "SGD",
    "THB",
    "TRY",
    "UAH",
    "USD",
    "UYU",
    "UZS",
    "VND",
    "ZAR"
]
[
    "AED",
    "ALL",
    "AMD",
    "ARS",
    "AUD",
    "AZN",
    "BGN",
    "BRL",
    "BYR",
    "CAD",
    "CHF",
    "CLP",
    "CNY",
    "COP",
    "CZK",
    "DKK",
    "DZD",
    "EGP",
    "EUR",
    "GBP",
    "GEL",
    "HKD",
    "HRK",
    "HUF",
    "IDR",
    "ILS",
    "INR",
    "JPY",
    "KES",
    "KGS",
    "KRW",
    "KZT",
    "MAD",
    "MDL",
    "MKD",
    "MNT",
    "MXN",
    "MYR",
    "NGN",
    "NOK",
    "NZD",
    "PEN",
    "PHP",
    "PKR",
    "PLN",
    "RON",
    "RSD",
    "RUB",
    "SAR",
    "SEK",
    "SGD",
    "THB",
    "TRY",
    "UAH",
    "USD",
    "UYU",
    "UZS",
    "VND",
    "ZAR"
]

Список атрибутов

Список атрибутов пользователя.

HTTP ЗАПРОС

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/user_attributes

Параметр Тип Описание
project_id
int ID игры.

Запрос


<?php

$response = $xsollaClient->ListUserAttributes(array(
    'project_id' => PROJECT_ID
));
GET /merchant/v2/projects/{project_id}/user_attributes HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/user_attributes' \
-X GET \
-u merchant_id:merchant_api_key

Ответ

<?php

// example response
$response = array (
    array (
        'id' => 2,
        'key' => 'level',
        'localized_name' =>
            array (
                'en' => 'Level'
            ),
        'name' => 'Level',
        'type' => 'int',
        'list_of_values' =>
            array (
            ),
        'visible' => true,
        'skip_condition_on_nonexistent_key' => false
    ),
    array (
        'id' => 3,
        'key' => 'class',
        'localized_name' =>
            array (
            )
        'name' => null,
        'type' => 'string',
        'list_of_values' =>
            array (
            ),
        'visible' => true,
        'skip_condition_on_nonexistent_key' => false
    ),
    array (
        'id' => 4,
        'key' => 'type',
        'localized_name' =>
            array (
            )
        'name' => null,
        'type' => 'enum',
        'list_of_values' =>
            array (
                0 => 'class1',
                1 => 'class2',
                2 => 'class3'
            ),
        'visible' => true,
        'skip_condition_on_nonexistent_key' => false
    ),
    array (
        'id' => 5,
        'key' => 'date',
        'localized_name' =>
            array (
                'en' => 'Date'
            ),
        'name' => 'Date',
        'type' => 'date',
        'list_of_values' =>
            array (
            ),
        'visible' => true,
        'skip_condition_on_nonexistent_key' => false
    )
);
HTTP/1.1 200 OK
Content-Type: application/json
[
    {
        "id": 2,
        "key": "level",
        "localized_name": {
            "en": "Level"
        },
        "name": "Level",
        "type": "int",
        "list_of_values": [],
        "visible":true,
        "skip_condition_on_nonexistent_key": false
    },
    {
        "id": 3,
        "key": "class",
        "localized_name": [],
        "name": null,
        "type": "string",
        "list_of_values": [],
        "visible":true
    },
    {
        "id": 4,
        "key": "type",
        "localized_name": [],
        "name": null,
        "type": "enum",
        "list_of_values": [
            "class1",
            "class2",
            "class3"
        ],
        "visible":true,
        "skip_condition_on_nonexistent_key": false
    },
    {
        "id": 5,
        "key": "date",
        "localized_name": {
            "en": "Date"
        },
        "name": "Date",
        "type": "date",
        "list_of_values": [],
        "visible":true,
        "skip_condition_on_nonexistent_key": false
    }
]
[
    {
        "id": 2,
        "key": "level",
        "localized_name": {
            "en": "Level"
        },
        "name": "Level",
        "type": "int",
        "list_of_values": [],
        "visible":true,
        "skip_condition_on_nonexistent_key": false
    },
    {
        "id": 3,
        "key": "class",
        "localized_name": [],
        "name": null,
        "type": "string",
        "list_of_values": [],
        "visible":true,
        "skip_condition_on_nonexistent_key": false
    },
    {
        "id": 4,
        "key": "type",
        "localized_name": [],
        "name": null,
        "type": "enum",
        "list_of_values": [
            "class1",
            "class2",
            "class3"
        ],
        "visible":true,
        "skip_condition_on_nonexistent_key": false
    },
    {
        "id": 5,
        "key": "date",
        "localized_name": {
            "en": "Date"
        },
        "name": "Date",
        "type": "date",
        "list_of_values": [],
        "visible":true,
        "skip_condition_on_nonexistent_key": false
    }
]

Информация об атрибуте

Информация об атрибуте пользователя.

HTTP ЗАПРОС

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/user_attributes/{user_attribute_id}

Параметр Тип Описание
project_id
int ID игры.
user_attribute_id
int ID атрибута.

Запрос


<?php

$response = $xsollaClient->GetUserAttribute(array(
    'project_id' => PROJECT_ID,
    'user_attribute_id' => USER_ATTRIBUTE_ID
));
GET /merchant/v2/projects/{project_id}/user_attributes/{user_attribute_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/user_attributes/{user_attribute_id}' \
-X GET \
-u merchant_id:merchant_api_key

Ответ

<?php

// example response
$response = array (
    'id' => 2,
    'key' => 'level',
    'localized_name' =>
        array (
            'en' => 'level',
            'de' => 'niveau'
        ),
    'name' => 'Level',
    'type' => 'int',
    'list_of_values' =>
        array (),
    'visible' => true,
    'skip_condition_on_nonexistent_key' => false
);
HTTP/1.1 200 OK
Content-Type: application/json
{
    "id": 2,
    "key": "level",
    "localized_name": {
        "en": "level",
        "de": "niveau"
    },
    "name": "Level",
    "type": "int",
    "list_of_values": [],
    "visible":true,
    "skip_condition_on_nonexistent_key": false
}
{
    "id": 2,
    "key": "level",
    "localized_name": {
        "en": "level",
        "de": "niveau"
    },
    "name": "Level",
    "type": "int",
    "list_of_values": [],
    "visible":true,
    "skip_condition_on_nonexistent_key": false
}

Создание атрибута

Создание атрибута пользователя.

HTTP ЗАПРОС

POST https://api.xsolla.com/merchant/v2/projects/{project_id}/user_attributes

Параметр Тип Описание
project_id
int ID игры. Обязательный.
key
string Ключ атрибута пользователя. Обязательный.
name
array of strings Массив локализованных названий атрибутов пользователя. Обязательный.
type
string Тип ключа. Может принимать значения 'int', 'string', 'enum' или 'date'. Обязательный.
list_of_values
array Массив возможных значений атрибута типа enum. Обязательный.
skip_condition_on_nonexistent_key
boolean Должно ли условие пропускаться, если ключа не существует.

Запрос

<?php

$response = $xsollaClient->CreateUserAttribute(array(
    'project_id' => PROJECT_ID,
    'request' => array (
         'key' => 'class',
         'name' =>
             array (
                 'en' => 'Сlass',
                 'de' => 'Classe',
             ),
         'type' => 'enum',
         'list_of_values' =>
             array (
                 'Warrior',
                 'magic',
             ),
     )
));
POST /merchant/v2/projects/{project_id}/user_attributes HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
{
    "key": "class",
    "name": {
        "en": "Сlass",
        "de": "Classe"
    },
    "type": "enum",
    "list_of_values": ["Warrior", "magic"],
    "visible":true
}
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/user_attributes' \
-X POST \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
    "key": "class",
    "name": {
        "en": "Сlass",
        "de": "Classe"
    },
    "type": "enum",
    "list_of_values": ["Warrior", "magic"],
    "visible":true
}'

Ответ

<?php

// example response
$response = array (
    'id' => 77
);
HTTP/1.1 201 Created
Content-Type: application/json

{
    "id": 77
}
{
    "id": 77
}

Изменение атрибута

Изменение атрибута пользователя.

HTTP ЗАПРОС

PUT https://api.xsolla.com/merchant/v2/projects/{project_id}/user_attributes/{user_attribute_id}

Параметр Тип Описание
project_id
int ID игры.
user_attribute_id
int ID атрибута.
key
string Ключ атрибута пользователя. Обязательный.
name
array of strings Массив локализованных названий атрибутов пользователя.
type
string Тип ключа. Может принимать значения 'int', 'string', 'enum' или 'date'.
list_of_values
array Массив возможных значений атрибута типа enum.
skip_condition_on_nonexistent_key
boolean Должно ли условие пропускаться, если ключа не существует.

Запрос

<?php

$response = $xsollaClient->UpdateUserAttribute(array(
    'project_id' => PROJECT_ID,
    'user_attribute_id' => USER_ATTRIBUTE_ID,
    'request' => array(
         'key' => 'class',
         'name' =>
             array (
                 'en' => 'Сlass',
                 'de' => 'Classe',
             ),
         'type' => 'enum',
         'list_of_values' =>
             array (
                 'Warrior',
                 'magic',
             ),
         'skip_condition_on_nonexistent_key' => false
     )
));
PUT /merchant/v2/projects/{project_id}/user_attributes/{user_attribute_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
{
    "key": "class",
    "localized_name": {
        "en": "Сlass",
        "de": "Classe"
    },
    "type": "enum",
    "list_of_values": ["Warrior", "magic"],
    "visible":true,
    "skip_condition_on_nonexistent_key": false
}
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/user_attributes/{user_attribute_id}' \
-X PUT \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
    "key": "class",
    "localized_name": {
        "en": "Сlass",
        "de": "Classe"
    },
    "type": "enum",
    "list_of_values": ["Warrior", "magic"],
    "visible":true,
    "skip_condition_on_nonexistent_key": false
}'

Ответ

<?php

$response = null;
HTTP/1.1 204 No Content

Удаление атрибута

Удаление атрибута пользователя.

HTTP ЗАПРОС

DELETE https://api.xsolla.com/merchant/v2/projects/{project_id}/user_attributes/{user_attribute_id}

Параметр Тип Описание
project_id
int ID игры.
user_attribute_id
int ID атрибута.

Запрос


<?php

$response = $xsollaClient->DeleteUserAttribute(array(
    'project_id' => PROJECT_ID,
    'user_attribute_id' => USER_ATTRIBUTE_ID
));
DELETE /merchant/v2/projects/{project_id}/user_attributes/{user_attribute_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/user_attributes/{user_attribute_id}' \
-X DELETE \
-u merchant_id:merchant_api_key

Ответ

<?php

$response = null;
HTTP/1.1 204 No Content

Создание товара

Создание товара.

HTTP ЗАПРОС

POST https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items

Параметр Тип Описание
project_id
int ID игры.
sku
string Уникальный ID товара. SKU может содержать только строчные латинские буквы, цифры, тире и подчеркивания.
item_code
string Дополнительный код товара. Optional.
name
array of strings Массив локализованных названий товара.
description
array of strings Массив локализованных описаний товара.
long_description
array of strings Массив локализованных развернутых описаний товара.
prices
array Массив цен на товар.
default_currency
string Валюта заказа по умолчанию. Используется трехбуквенное обозначение валюты согласно стандарту ISO 4217.
enabled
boolean Включен ли товар.
permanent
boolean Если значение true, то товар можно приобрести только один раз.
image_url
string URL изображения товара.
item_type
string Тип товара: Consumable / Expiration / Permanent / Lootboxes / Physical
expiration
int Срок действия товара в секундах. Используется только для товаров типа "Expiration".
groups
array of integers Список групп товара.
deleted
boolean Был ли товар удален.
user_attribute_conditions
array of objects Список условий на атрибуты пользователя.
user_attribute_conditions.right_operand
array of values Значения для сравнения со значением атрибута пользователя.
user_attribute_conditions.user_attribute_key
string Ключ условия атрибута.
user_attribute_conditions.operation
string Тип операции. Может принимать значения 'greater', 'greaterOrEqual', 'equal', 'notEqual', 'less', 'lessOrEqual', 'between', 'in', 'notIn'.
user_attribute_conditions.action
string Тип действия. Может принимать значения 'hide', 'block' или 'warning'.
advertisement_type
string Для данного товара появится ярлык в платежном интерфейсе. Может принимать значения 'recommended', 'best_deal', 'special_offer' или null.
virtual_currency_price
int Цена в игровой валюте. Передайте 'null', если товар можно купить только за реальную валюту.
purchase_limit
int Сколько раз можно приобрести данный товар. Передайте 'null', если количество раз не ограничено.
keywords
array Ключевые слова, по которым товар можно найти в интерфейсе оплаты.

Запрос

<?php

$response = $xsollaClient->CreateVirtualItem(array(
    'project_id' => PROJECT_ID,
    'request' => array (
         'sku' => 'T-43-3-unique-id',
         'item_code' => 'chinese-medium-tank',
         'name' =>
             array (
                 'en' => 'T-34-3',
             ),
         'description' =>
             array (
                 'en' => 'Chinese Tier VIII medium tank.',
             ),
         'long_description' =>
             array (
                 'en' => 'This Chinese Tier VIII medium tank is a real beast in its class.',
             ),
         'prices' =>
             array (
                 'USD' => 40.09,
             ),
         'default_currency' => 'USD',
         'enabled' => true,
         'permanent' => false,
         'image_url' => 'http://livedemo.xsolla.com/airplanes/tank5.jpg',
         'item_type' => 'Expiration',
         'expiration' => 1296000,
         'groups' =>
             array (
                 24,
                 25,
             ),
         'user_attribute_conditions' =>
             array (
             array (
                     'right_operand' =>
                         array (
                             'magic',
                         ),
                     'id' => 2015,
                     'user_attribute_key' => 'type',
                     'operation' => 'equal',
                     'action' => 'hide',
                     'name' => null,
                 ),
             ),
         'virtual_currency_price' => null,
         'purchase_limit' => null,
         'keywords' =>
             array (
                 'de' =>
                     array (
                         'Inhalt',
                         'Aufgaben',
                         'Region',
                         'Landschaft',
                     ),
                 'en' =>
                     array (
                         'content',
                         'quests',
                         'region',
                         'landscape',
                     ),
             ),
         'advertisement_type' => 'recommended',
         'deleted' => false,
    )
));
POST /merchant/v2/projects/{project_id}/virtual_items/items HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json

{
    "sku": "T-43-3-unique-id",
    "item_code": "chinese-medium-tank",
    "name": {
        "en": "T-34-3"
    },
    "description": {
        "en": "Chinese Tier VIII medium tank."
    },
    "long_description": {
            "en": "This Chinese Tier VIII medium tank is a real beast in its class."
    },
    "prices": {
        "USD": 40.09
    },
    "default_currency": "USD",
    "enabled": true,
    "permanent": false,
    "image_url": "http:\/\/livedemo.xsolla.com\/airplanes\/tank5.jpg",
    "item_type": "Expiration",
    "expiration": 1296000,
    "groups": [
        24,
        25
    ],
    "user_attribute_conditions": [
         {
             "right_operand": [
                 "magic"
             ],
             "id": 2015,
             "user_attribute_key": "type",
             "operation": "equal",
             "action": "hide",
             "name":null
         }
    ],
    "virtual_currency_price": null,
    "purchase_limit": null,
    "keywords": {
        "de":[
            "Inhalt","Aufgaben","Region","Landschaft"
        ],
        "en":[
            "content","quests","region","landscape"
        ]
    },
    "advertisement_type": "recommended",
    "deleted": false
}
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items' \
-X POST \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
    "sku": "T-43-3-unique-id",
    "item_code": "chinese-medium-tank",
    "name": {
        "en": "T-34-3"
    },
    "description": {
        "en": "Chinese Tier VIII medium tank."
    },
    "long_description": {
            "en": "This Chinese Tier VIII medium tank is a real beast in its class."
    },
    "prices": {
        "USD": 40.09
    },
    "default_currency": "USD",
    "enabled": true,
    "permanent": false,
    "image_url": "http:\/\/livedemo.xsolla.com\/airplanes\/tank5.jpg",
    "item_type": "Expiration",
    "expiration": 1296000,
    "groups": [
        24,
        25
    ],
    "user_attribute_conditions": [
         {
             "right_operand": [
                 "magic"
             ],
             "id": 2015,
             "user_attribute_key": "type",
             "operation": "equal",
             "action": "hide",
             "name":null
         }
    ],
    "virtual_currency_price": null,
    "purchase_limit": null,
    "keywords": {
        "de":[
            "Inhalt","Aufgaben","Region","Landschaft"
        ],
        "en":[
            "content","quests","region","landscape"
        ]
    },
    "advertisement_type": "recommended",
    "deleted": false
}'

Ответ

<?php

// example response
$response = array (
    'item_id' => 77
);
HTTP/1.1 201 Created
Content-Type: application/json

{
    "item_id": 77
}
{
    "item_id": 77
}

Информация о товаре

Информация о товаре.

HTTP ЗАПРОС

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items/{item_id}

Параметр Тип Описание
item_id
int ID товара.

Запрос


<?php

$response = $xsollaClient->GetVirtualItem(array(
    'project_id' => PROJECT_ID,
    'item_id' => ITEM_ID
));
GET /merchant/v2/projects/{project_id}/virtual_items/items/{item_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items/{item_id}' \
-X GET \
-u merchant_id:merchant_api_key

Ответ

<?php

// example response
$response = array (
    'id' => 77,
    'sku' => 'T-43-3-unique-id',
    'item_code' => 'chinese-medium-tank',
    'name' =>
        array (
            'en' => 'T-34-3'
        ),
    'description' =>
        array (
            'en' => 'Chinese Tier VIII medium tank.'
        ),
    'long_description' =>
        array (
            'en' => 'This Chinese Tier VIII medium tank is a real beast in its class.'
        ),
    'prices' =>
        array (
            'USD' => 40.09
        ),
    'default_currency' => 'USD',
    'enabled' => true,
    'permanent' => false,
    'image_url' => 'http://livedemo.xsolla.com/airplanes/tank5.jpg',
    'item_type' => 'Expiration',
    'expiration' => 1296000,
    'groups' =>
        array (
            24,
            25
        ),
    'user_attribute_conditions' =>
        array (
        array (
                'right_operand' =>
                     array (
                        'magic',
                    ),
                'id' => 2015,
                'user_attribute_key' => 'type',
                'operation' => 'equal',
                'action' => 'hide',
                'name' => null,
            ),
        ),
    'virtual_currency_price' => null,
    'purchase_limit' => null,
    'keywords' =>
        array (
            'de' =>
                array (
                    'Inhalt',
                    'Aufgaben',
                    'Region',
                    'Landschaft',
                ),
            'en' =>
                array (
                    'content',
                    'quests',
                    'region',
                    'landscape',
                ),
        ),
    'advertisement_type' => 'recommended',
    'deleted' => false,
);
HTTP/1.1 200 OK
Content-Type: application/json

{
    "id": 77,
    "sku": "T-43-3-unique-id",
    "item_code": "chinese-medium-tank",
    "name": {
        "en": "T-34-3"
    },
    "description": {
        "en": "Chinese Tier VIII medium tank."
    },
    "long_description": {
            "en": "This Chinese Tier VIII medium tank is a real beast in its class."
    },
    "prices": {
        "USD": 40.09
    },
    "default_currency": "USD",
    "enabled": true,
    "permanent": false,
    "image_url": "http:\/\/livedemo.xsolla.com\/airplanes\/tank5.jpg",
    "item_type": "Expiration",
    "expiration": 1296000,
    "groups": [
        24,
        25
    ],
    "user_attribute_conditions": [
         {
             "right_operand": [
                 "magic"
             ],
             "id": 2015,
             "user_attribute_key": "type",
             "operation": "equal",
             "action": "hide",
             "name":null
         }
    ],
    "virtual_currency_price": null,
    "purchase_limit": null,
    "keywords": {
        "de":[
            "Inhalt","Aufgaben","Region","Landschaft"
        ],
        "en":[
            "content","quests","region","landscape"
        ]
    },
    "advertisement_type": "recommended",
    "deleted": false
}
{
    "id": 77,
    "sku": "T-43-3-unique-id",
    "item_code": "chinese-medium-tank",
    "name": {
        "en": "T-34-3"
    },
    "description": {
        "en": "Chinese Tier VIII medium tank."
    },
    "long_description": {
            "en": "This Chinese Tier VIII medium tank is a real beast in its class."
    },
    "prices": {
        "USD": 40.09
    },
    "default_currency": "USD",
    "enabled": true,
    "permanent": false,
    "image_url": "http:\/\/livedemo.xsolla.com\/airplanes\/tank5.jpg",
    "item_type": "Expiration",
    "expiration": 1296000,
    "groups": [
        24,
        25
    ],
    "user_attribute_conditions": [
         {
             "right_operand": [
                 "magic"
             ],
             "id": 2015,
             "user_attribute_key": "type",
             "operation": "equal",
             "action": "hide",
             "name":null
         }
    ],
    "virtual_currency_price": null,
    "purchase_limit": null,
    "keywords": {
        "de":[
            "Inhalt","Aufgaben","Region","Landschaft"
        ],
        "en":[
            "content","quests","region","landscape"
        ]
    },
    "advertisement_type": "recommended",
    "deleted": false
}

Изменение товара

Изменение товара.

HTTP ЗАПРОС

PUT https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items/{item_id}

Параметр Тип Описание
item_id
int ID товара.
sku
string Уникальный ID товара. SKU может содержать только строчные латинские буквы, цифры, тире и подчеркивания.
item_code
string Дополнительный код товара. Optional.
name
array of strings Массив локализованных названий товара.
description
array of strings Массив локализованных описаний товара.
long_description
array of strings Массив локализованных развернутых описаний товара.
prices
array Массив цен на товар.
default_currency
string Валюта заказа по умолчанию. Используется трехбуквенное обозначение валюты согласно стандарту ISO 4217.
enabled
boolean Включен ли товар.
permanent
boolean Может ли пользователь приобрести товар более одного раза.
image_url
string URL изображения товара.
item_type
string Тип товара: Consumable / Expiration / Permanent / Lootboxes / Physical
expiration
int Срок действия товара в секундах. Используется только для товаров типа "Expiration".
groups
array of integers Список групп товара.
deleted
boolean Был ли товар удален.
user_attribute_conditions
array of objects Список условий на атрибуты пользователя.
user_attribute_conditions.right_operand
array of values Значения для сравнения со значением атрибута пользователя.
user_attribute_conditions.user_attribute_key
string Ключ условия атрибута.
user_attribute_conditions.operation
string Тип операции. Может принимать значения 'greater', 'greaterOrEqual', 'equal', 'notEqual', 'less', 'lessOrEqual', 'between', 'in', 'notIn'.
user_attribute_conditions.action
string Тип действия. Может принимать значения 'hide', 'block' или 'warning'.
advertisement_type
string Для данного товара появится ярлык в платежном интерфейсе. Может принимать значения 'recommended', 'best_deal', 'special_offer' или null.
virtual_currency_price
int Цена в игровой валюте. Передайте 'null', если товар можно купить только за реальную валюту.
purchase_limit
int Сколько раз можно приобрести данный товар. Передайте 'null', если количество раз не ограничено.
keywords
array Ключевые слова, по которым товар можно найти в интерфейсе оплаты.

Запрос

<?php

$response = $xsollaClient->UpdateVirtualItem(array(
    'project_id' => PROJECT_ID,
    'request' => array (
         'sku' => 'T-43-3-unique-id',
         'item_code' => 'chinese-medium-tank',
         'name' =>
             array (
                 'en' => 'T-34-3',
             ),
         'description' =>
             array (
                 'en' => 'Chinese Tier VIII medium tank.',
             ),
         'long_description' =>
             array (
                 'en' => 'This Chinese Tier VIII medium tank is a real beast in its class.',
             ),
         'prices' =>
             array (
                 'USD' => 40.09,
             ),
         'default_currency' => 'USD',
         'enabled' => true,
         'permanent' => false,
         'image_url' => 'http://livedemo.xsolla.com/airplanes/tank5.jpg',
         'item_type' => 'Expiration',
         'expiration' => 1296000,
         'groups' =>
             array (
                 24,
                 25,
             ),
         'user_attribute_conditions' =>
             array (
             array (
                     'right_operand' =>
                         array (
                             'magic',
                         ),
                     'id' => 2015,
                     'user_attribute_key' => 'type',
                     'operation' => 'equal',
                     'action' => 'hide',
                     'name' => null,
                 ),
             ),
         'virtual_currency_price' => null,
         'purchase_limit' => null,
         'keywords' =>
             array (
                 'de' =>
                     array (
                         'Inhalt',
                         'Aufgaben',
                         'Region',
                         'Landschaft',
                     ),
                 'en' =>
                     array (
                         'content',
                         'quests',
                         'region',
                         'landscape',
                     ),
             ),
         'advertisement_type' => 'recommended',
         'deleted' => false,
    )
));
PUT /merchant/v2/projects/{project_id}/virtual_items/items/{item_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
{
    "sku": "T-43-3-unique-id",
    "item_code": "chinese-medium-tank",
    "name": {
        "en": "T-34-3"
    },
    "description": {
        "en": "Chinese Tier VIII medium tank."
    },
    "long_description": {
            "en": "This Chinese Tier VIII medium tank is a real beast in its class."
    },
    "prices": {
        "USD": 40.09
    },
    "default_currency": "USD",
    "enabled": true,
    "permanent": false,
    "image_url": "http:\/\/livedemo.xsolla.com\/airplanes\/tank5.jpg",
    "item_type": "Expiration",
    "expiration": 1296000,
    "groups": [
        24,
        25
    ],
    "user_attribute_conditions": [
         {
             "right_operand": [
                 "magic"
             ],
             "id": 2015,
             "user_attribute_key": "type",
             "operation": "equal",
             "action": "hide",
             "name":null
         }
    ],
    "virtual_currency_price": null,
    "purchase_limit": null,
    "keywords": {
        "de":[
            "Inhalt","Aufgaben","Region","Landschaft"
        ],
        "en":[
            "content","quests","region","landscape"
        ]
    },
    "advertisement_type": "recommended",
    "deleted": false
}
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items/{item_id}' \
-X PUT \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
    "sku": "T-43-3-unique-id",
    "item_code": "chinese-medium-tank",
    "name": {
        "en": "T-34-3"
    },
    "description": {
        "en": "Chinese Tier VIII medium tank."
    },
    "long_description": {
            "en": "This Chinese Tier VIII medium tank is a real beast in its class."
    },
    "prices": {
        "USD": 40.09
    },
    "default_currency": "USD",
    "enabled": true,
    "permanent": false,
    "image_url": "http:\/\/livedemo.xsolla.com\/airplanes\/tank5.jpg",
    "item_type": "Expiration",
    "expiration": 1296000,
    "groups": [
        24,
        25
    ],
    "user_attribute_conditions": [
         {
             "right_operand": [
                 "magic"
             ],
             "id": 2015,
             "user_attribute_key": "type",
             "operation": "equal",
             "action": "hide",
             "name":null
         }
    ],
    "virtual_currency_price": null,
    "purchase_limit": null,
    "keywords": {
        "de":[
            "Inhalt","Aufgaben","Region","Landschaft"
        ],
        "en":[
            "content","quests","region","landscape"
        ]
    },
    "advertisement_type": "recommended",
    "deleted": false
}'

Ответ

<?php

$response = null;
HTTP/1.1 204 No Content

Удаление товара

Удаление товара.

HTTP ЗАПРОС

DELETE https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items/{item_id}

Параметр Тип Описание
item_id
int ID товара.

Запрос


<?php

$response = $xsollaClient->DeleteVirtualItem(array(
    'project_id' => PROJECT_ID,
    'item_id' => ITEM_ID
));
DELETE /merchant/v2/projects/{project_id}/virtual_items/items/{item_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items/{item_id}' \
-X DELETE \
-u merchant_id:merchant_api_key

Ответ

<?php

$response = null;
HTTP/1.1 204 No Content

Список товаров

Список товаров.

HTTP ЗАПРОС

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items

Параметр Тип Описание
project_id
int ID игры.
offset
int Стартовая страница списка товаров.
limit
int Лимит списка товаров.
has_price
string Тип продажи товара. Может принимать значение 'virtual_currency' (если товар можно купить за виртуальную валюту) или 'real_currency' (если товар можно купить за реальную валюту).

Запрос


<?php

$response = $xsollaClient->ListVirtualItems(array(
    'project_id' => PROJECT_ID
));
GET /merchant/v2/projects/{project_id}/virtual_items/items HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items' \
-X GET \
-u merchant_id:merchant_api_key

Ответ

<?php

// example response
$response = array (
    array (
            'id' => 46,
            'sku' => 'T-43-3-unique-id',
            'localized_name' => 'T-34-3',
            'prices' =>
                array (
                    'USD' => 40.09
                ),
            'default_currency' => 'USD',
            'enabled' => true,
            'permanent' => false,
            'groups' =>
                array (
                    25
                ),
            'advertisement_type' => null,
            'virtual_currency_price' => null
        )
);
HTTP/1.1 200 OK
Content-Type: application/json

[
    {
        "id": 46,
        "sku": "T-43-3-unique-id",
        "localized_name": "T-34-3",
        "prices": {
            "USD": 40.09
        },
        "default_currency": "USD",
        "enabled": true,
        "permanent": false,
        "groups": [
            25
        ],
        "advertisement_type": null,
        "virtual_currency_price": null
    }
]
[
    {
        "id": 46,
        "sku": "T-43-3-unique-id",
        "localized_name": "T-34-3",
        "prices": {
            "USD": 40.09
        },
        "default_currency": "USD",
        "enabled": true,
        "permanent": false,
        "groups": [
            25
        ],
        "advertisement_type": null,
        "virtual_currency_price": null
    }
]

Создание группы

Создание группы товаров.

HTTP ЗАПРОС

POST https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/groups

Параметр Тип Описание
project_id
int ID игры.
name
array of strings Массив локализованных названий групп товаров.
description
array of strings Массив локализованных описаний групп товаров.
enabled
boolean Включена ли группа.
parent_id
int ID родительской группы.
code
int Уникальный код группы.

Запрос

<?php

$response = $xsollaClient->CreateVirtualItemsGroup(array(
    'project_id' => PROJECT_ID,
    'request' => array (
         'name' =>
             array (
                 'en' => 'Tanks',
             ),
         'description' =>
             array (
                 'en' => 'Tanks Group',
             ),
         'enabled' => true,
         'parent_id' => null,
         'code' => null
     )
));
POST /merchant/v2/projects/{project_id}/virtual_items/groups HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json

{
    "name": {
        "en": "Tanks"
    },
    "description": {
        "en": "Tanks Group"
    },
    "enabled": true,
    "parent_id": null,
    "code": null
}
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/groups' \
-X POST \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
    "name": {
        "en": "Tanks"
    },
    "description": {
        "en": "Tanks Group"
    },
    "enabled": true,
    "parent_id": null,
    "code": null
}'

Ответ

<?php

// example response
$response = array (
    'group_id' => 7
);
HTTP/1.1 201 Created
Content-Type: application/json

{
    "group_id": 7
}
{
    "group_id": 7
}

Информация о группе

Информация о группе товаров.

HTTP ЗАПРОС

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/groups/{group_id}

Параметр Тип Описание
group_id
int ID группы товаров.

Запрос


<?php

$response = $xsollaClient->GetVirtualItemsGroup(array(
    'project_id' => PROJECT_ID,
    'group_id' => GROUP_ID
));
GET /merchant/v2/projects/{project_id}/virtual_items/groups/{group_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/groups/{group_id}' \
-X GET \
-u merchant_id:merchant_api_key

Ответ

<?php

// example response
$response = array (
    'id' => 25,
    'name' =>
        array (
            'en' => 'Tanks'
        ),
    'description' =>
        array (
            'en' => 'Tanks Group'
        ),
    'enabled' => true,
    'parent_id' => null,
    'code' => null
);
HTTP/1.1 200 OK
Content-Type: application/json

{
    "id": 25,
    "name": {
        "en": "Tanks"
    },
    "description": {
        "en": "Tanks Group"
    },
    "enabled": true,
    "parent_id": null,
    "code": null
}
{
    "id": 25,
    "name": {
        "en": "Tanks"
    },
    "description": {
        "en": "Tanks Group"
    },
    "enabled": true,
    "parent_id": null,
    "code": null
}

Изменение группы

Изменение группы товаров.

HTTP ЗАПРОС

PUT https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/groups/{group_id}

Параметр Тип Описание
group_id
int ID группы товаров.
name
array of strings Массив локализованных названий групп товаров.
description
array of strings Массив локализованных описаний групп товаров.
enabled
boolean Включена ли группа.
parent_id
int ID родительской группы.
code
int Уникальный код группы.

Запрос

<?php

$response = $xsollaClient->UpdateVirtualItemsGroup(array(
    'project_id' => PROJECT_ID,
    'group_id' => GROUP_ID,
    'request' => array (
         'name' =>
             array (
                 'en' => 'Tanks',
             ),
         'description' =>
             array (
                 'en' => 'Tanks Group',
             ),
         'enabled' => true,
         'parent_id' => null,
         'code' => null
     )
));
PUT /merchant/v2/projects/{project_id}/virtual_items/groups/{group_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json

{
    "name": {
        "en": "Tanks"
    },
    "description": {
        "en": "Tanks Group"
    },
    "enabled": true,
    "parent_id": null,
    "code": null
}
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/groups/{group_id}' \
-X PUT \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
    "name": {
        "en": "Tanks"
    },
    "description": {
        "en": "Tanks Group"
    },
    "enabled": true,
    "parent_id": null,
    "code": null
}'

Ответ

<?php

$response = null;
HTTP/1.1 204 No Content

Удаление группы

Удаление группы товаров.

HTTP ЗАПРОС

DELETE https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/groups/{group_id}

Параметр Тип Описание
group_id
int ID группы товаров.

Запрос


<?php

$response = $xsollaClient->DeleteVirtualItemsGroup(array(
    'project_id' => PROJECT_ID,
    'group_id' => GROUP_ID
));
DELETE /merchant/v2/projects/{project_id}/virtual_items/groups/{group_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/groups/{group_id}' \
-X DELETE \
-u merchant_id:merchant_api_key

Ответ

<?php

$response = null;
HTTP/1.1 204 No Content

Список групп

Список всех групп товаров.

HTTP ЗАПРОС

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/groups

Параметр Тип Описание
project_id
int ID игры.

Запрос


<?php

$response = $xsollaClient->ListVirtualItemsGroups(array(
    'project_id' => PROJECT_ID
));
GET /merchant/v2/projects/{project_id}/virtual_items/groups HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/groups' \
-X GET \
-u merchant_id:merchant_api_key

Ответ

<?php

// example response
$response = array (
    array (
        'id' => 25,
        'localized_name' => 'Tanks',
        'enabled' => true,
        'parent_id' => null,
        'has_groups' => false,
        'has_virtual_items' => true,
        'virtual_items_count' => 6,
        'code' => null
    )
);
HTTP/1.1 200 OK
Content-Type: application/json

[
    {
        "id": 25,
        "localized_name": "Tanks",
        "enabled": true,
        "parent_id": null,
        "has_groups": false,
        "has_virtual_items": true,
        "virtual_items_count": 6,
        "code": null
    }
]
[
    {
        "id": 25,
        "localized_name": "Tanks",
        "enabled": true,
        "parent_id": null,
        "has_groups": false,
        "has_virtual_items": true,
        "virtual_items_count": 6,
        "code": null
    }
]

Лутбоксы (BETA)

Создание лутбокса

Создание лутбокса.

HTTP ЗАПРОС

POST https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items

Параметр Тип Описание
project_id
int ID игры.
sku
string Уникальный ID товара. SKU может содержать только строчные латинские буквы, цифры, тире и подчеркивания.
item_code
string Дополнительный код товара. Optional.
name
array of strings Массив локализованных названий товара.
description
array of strings Массив локализованных описаний товара.
long_description
array of strings Массив локализованных развернутых описаний товара.
prices
array Массив цен на товар.
default_currency
string Валюта заказа по умолчанию. Используется трехбуквенное обозначение валюты согласно стандарту ISO 4217.
enabled
boolean Включен ли товар.
permanent
boolean Если значение true, то товар можно приобрести только один раз.
image_url
string URL изображения товара.
item_type
string Тип товара: lootbox
expiration
int Срок действия товара в секундах. Используется только для товаров типа "Expiration".
groups
array of integers Список групп товара.
deleted
boolean Был ли товар удален.
user_attribute_conditions
array of objects Список условий на атрибуты пользователя.
user_attribute_conditions.right_operand
array of values Значения для сравнения со значением атрибута пользователя.
user_attribute_conditions.user_attribute_key
string Ключ условия атрибута.
user_attribute_conditions.operation
string Тип операции. Может принимать значения 'greater', 'greaterOrEqual', 'equal', 'notEqual', 'less', 'lessOrEqual', 'between', 'in', 'notIn'.
user_attribute_conditions.action
string Тип действия. Может принимать значения 'hide', 'block' или 'warning'.
advertisement_type
string Для данного товара появится ярлык в платежном интерфейсе. Может принимать значения 'recommended', 'best_deal', 'special_offer' или null.
virtual_currency_price
int Цена в игровой валюте. Передайте 'null', если товар можно купить только за реальную валюту.
purchase_limit
int Сколько раз можно приобрести данный товар. Передайте 'null', если количество раз не ограничено.
keywords
array Ключевые слова, по которым товар можно найти в интерфейсе оплаты.
key_virtual_item_id
int id виртуального предмета, с помощью которого открывается лутбокс.
opening_price_vc
int Стоимость открытия в виртуальной валюте.
slots
array Массив слотов лутбокса. В слотах указывается набор предметов, который выпадет пользователю.
slots.id
int ID слота.
slots.value
object Объект с содержимым слота. Внутри каждого слота сумма drop_rate должна быть равна 100%.
slots.value.virtual_item
array Массив с данными о виртуальном товаре.
slots.value.virtual_item.id
int ID виртуального товара.
slots.value.virtual_item.amount
float Количество виртуального товара.
slots.value.virtual_item.drop_rate
decimal Процент вероятности выпадения предмета в слоте. Определяется с точностью до 2 знаков после разделителя.
slots.value.virtual_currency
object Массив с данными о виртуальной валюте.
slots.value.virtual_currency.amount
float Количество игровой валюты.
slots.value.virtual_currency.drop_rate
decimal Процент вероятности выпадения предмета в слоте. Определяется с точностью до 2 знаков после разделителя.
slots.value.attribute
array Массив с данными об атрибутах.
slots.value.attribute.type
int Тип атрибута. Набор товаров этого свойства будет выбираться в лутбоксе.
slots.value.attribute.value
string Значение атрибута. Например "rare".
slots.value.attribute.drop_rate
string Процент вероятности выпадения атрибута в слоте. Определяется с точностью до 2 знаков после разделителя.
slots.compensation_for_duplicate_percent
int Компенсация за выпавший дубликат предмета, в виртуальной валюте. Определяется в процентах от стоимости.
slots.compensation_for_duplicate_value
float Размер компенсации за попавшийся пользователю дубликат предмета в виртуальной валюте.
limits
object Массив ограничений на количество предметов в лутбоксе.
limits.virtual_item
object Объект с данными об ограничениях на предметы в лутбоксе.
limits.virtual_item.id
int ID виртуального предмета.
limits.virtual_item.max_items
int Максимальное количество раз, которое товар может выпасть в лутбоксе.
limits.attribute
object Объект с данными об ограничениях на атрибуты в лутбоксе.
limits.attribute.type
int Тип атрибута. Набор товаров этого свойства будет ограничиваться в лутбоксе.
limits.attribute.value
string Значение атрибута. Набор товаров с этим значением будет ограничиваться в лутбоксе.
limits.attribute.max_items
int Максимальное количество раз, которое товар определенного свойства может выпасть в лутбоксе.

Запрос

<?php

$response = $xsollaClient->CreateVirtualItem(array(
    'project_id' => PROJECT_ID,
    'request' => array (
         'sku' => 'T-43-3-unique-id',
         'item_code' => 'chinese-medium-tank',
         'name' =>
             array (
                 'en' => 'T-34-3',
             ),
         'description' =>
             array (
                 'en' => 'Chinese Tier VIII medium tank.',
             ),
         'long_description' =>
             array (
                 'en' => 'This Chinese Tier VIII medium tank is a real beast in its class.',
             ),
         'prices' =>
             array (
                 'USD' => 40.09,
             ),
         'default_currency' => 'USD',
         'enabled' => true,
         'permanent' => false,
         'image_url' => 'http://livedemo.xsolla.com/airplanes/tank5.jpg',
         'item_type' => 'lootbox',
         'expiration' => 1296000,
         'groups' =>
             array (
                 24,
                 25,
             ),
         'user_attribute_conditions' =>
             array (
             array (
                     'right_operand' =>
                         array (
                             'magic',
                         ),
                     'id' => 2015,
                     'user_attribute_key' => 'type',
                     'operation' => 'equal',
                     'action' => 'hide',
                     'name' => null,
                 ),
             ),
         'virtual_currency_price' => null,
         'purchase_limit' => null,
         'keywords' =>
             array (
                 'de' =>
                     array (
                         'Inhalt',
                         'Aufgaben',
                         'Region',
                         'Landschaft',
                     ),
                 'en' =>
                     array (
                         'content',
                         'quests',
                         'region',
                         'landscape',
                     ),
             ),
         'advertisement_type' => 'recommended',
         'deleted' => false,
    )
));
POST /merchant/v2/projects/{project_id}/virtual_items/items HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json

{
    "sku": "T-43-3-unique-id",
    "item_code": "chinese-medium-tank",
    "name": {
        "en": "T-34-3"
    },
    "description": {
        "en": "Chinese Tier VIII medium tank."
    },
    "long_description": {
            "en": "This Chinese Tier VIII medium tank is a real beast in its class."
    },
    "prices": {
        "USD": 40.09
    },
    "default_currency": "USD",
    "enabled": true,
    "permanent": false,
    "image_url": "http:\/\/livedemo.xsolla.com\/airplanes\/tank5.jpg",
    "item_type": "lootbox",
    "expiration": 1296000,
    "groups": [
        24,
        25
    ],
    "user_attribute_conditions": [
         {
             "right_operand": [
                 "magic"
             ],
             "id": 2015,
             "user_attribute_key": "type",
             "operation": "equal",
             "action": "hide",
             "name":null
         }
    ],
    "virtual_currency_price": null,
    "purchase_limit": null,
    "keywords": {
        "de":[
            "Inhalt","Aufgaben","Region","Landschaft"
        ],
        "en":[
            "content","quests","region","landscape"
        ]
    },
    "advertisement_type": "recommended",
    "deleted": false,
    "slots":[
        {
            "id":123,
            "value":{
                "virtual_items":[
                    {
                        "id":123,
                        "amount":10,
                        "drop_rate":20
                    },
                    {
                        "id":321,
                        "amount":15,
                        "drop_rate":50
                    }
                ],
                "attribute":[
                    {
                        "type":1,
                        "value":"rare",
                        "drop_rate":20
                    }
                ],
                "virtual_currency":[
                    {
                        "amount":100,
                        "drop_rate":10
                    }
                ]
                },
            "compensation_for_duplicate_percent":10,
            "compensation_for_duplicate_value":50
        }
    ],
    "limits":{
        "virtual_item":{
            "id":123,
            "max_items":5
        },
        "attribute":{
            "type":1,
            "value":"rare",
            "max_items":5
        }
    }
}
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items' \
-X POST \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
    "sku": "T-43-3-unique-id",
    "item_code": "chinese-medium-tank",
    "name": {
        "en": "T-34-3"
    },
    "description": {
        "en": "Chinese Tier VIII medium tank."
    },
    "long_description": {
            "en": "This Chinese Tier VIII medium tank is a real beast in its class."
    },
    "prices": {
        "USD": 40.09
    },
    "default_currency": "USD",
    "enabled": true,
    "permanent": false,
    "image_url": "http:\/\/livedemo.xsolla.com\/airplanes\/tank5.jpg",
    "item_type": "lootbox",
    "expiration": 1296000,
    "groups": [
        24,
        25
    ],
    "user_attribute_conditions": [
         {
             "right_operand": [
                 "magic"
             ],
             "id": 2015,
             "user_attribute_key": "type",
             "operation": "equal",
             "action": "hide",
             "name":null
         }
    ],
    "virtual_currency_price": null,
    "purchase_limit": null,
    "keywords": {
        "de":[
            "Inhalt","Aufgaben","Region","Landschaft"
        ],
        "en":[
            "content","quests","region","landscape"
        ]
    },
    "advertisement_type": "recommended",
    "deleted": false,
    "slots":[
        {
            "id":123,
            "value":{
                "virtual_items":[
                    {
                        "id":123,
                        "amount":10,
                        "drop_rate":20
                    },
                    {
                        "id":321,
                        "amount":15,
                        "drop_rate":50
                    }
                ],
                "attribute":[
                    {
                        "type":1,
                        "value":"rare",
                        "drop_rate":20
                    }
                ],
                "virtual_currency":[
                    {
                        "amount":100,
                        "drop_rate":10
                    }
                ]
                },
            "compensation_for_duplicate_percent":10,
            "compensation_for_duplicate_value":50
        }
    ],
    "limits":{
        "virtual_item":{
            "id":123,
            "max_items":5
        },
        "attribute":{
            "type":1,
            "value":"rare",
            "max_items":5
        }
    }
}'

Ответ

<?php

// example response
$response = array (
    'item_id' => 77
);
HTTP/1.1 201 Created
Content-Type: application/json

{
    "item_id": 77
}
{
    "item_id": 77
}

Изменение лутбокса

Изменение лутбокса.

HTTP ЗАПРОС

PUT https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items/{item_id}

Параметр Тип Описание
project_id
int ID игры.
sku
string Уникальный ID товара. SKU может содержать только строчные латинские буквы, цифры, тире и подчеркивания.
item_code
string Дополнительный код товара. Optional.
name
array of strings Массив локализованных названий товара.
description
array of strings Массив локализованных описаний товара.
long_description
array of strings Массив локализованных развернутых описаний товара.
prices
array Массив цен на товар.
default_currency
string Валюта заказа по умолчанию. Используется трехбуквенное обозначение валюты согласно стандарту ISO 4217.
enabled
boolean Включен ли товар.
permanent
boolean Если значение true, то товар можно приобрести только один раз.
image_url
string URL изображения товара.
item_type
string Тип товара: lootbox
expiration
int Срок действия товара в секундах. Используется только для товаров типа "Expiration".
groups
array of integers Список групп товара.
deleted
boolean Был ли товар удален.
user_attribute_conditions
array of objects Список условий на атрибуты пользователя.
user_attribute_conditions.right_operand
array of values Значения для сравнения со значением атрибута пользователя.
user_attribute_conditions.user_attribute_key
string Ключ условия атрибута.
user_attribute_conditions.operation
string Тип операции. Может принимать значения 'greater', 'greaterOrEqual', 'equal', 'notEqual', 'less', 'lessOrEqual', 'between', 'in', 'notIn'.
user_attribute_conditions.action
string Тип действия. Может принимать значения 'hide', 'block' или 'warning'.
advertisement_type
string Для данного товара появится ярлык в платежном интерфейсе. Может принимать значения 'recommended', 'best_deal', 'special_offer' или null.
virtual_currency_price
int Цена в игровой валюте. Передайте 'null', если товар можно купить только за реальную валюту.
purchase_limit
int Сколько раз можно приобрести данный товар. Передайте 'null', если количество раз не ограничено.
keywords
array Ключевые слова, по которым товар можно найти в интерфейсе оплаты.
key_virtual_item_id
int id виртуального предмета, с помощью которого открывается лутбокс.
opening_price_vc
int Стоимость открытия в виртуальной валюте.
slots
array Массив слотов лутбокса. В слотах указывается набор предметов, который выпадет пользователю.
slots.id
int ID слота.
slots.value
object Объект с содержимым слота. Внутри каждого слота сумма drop_rate должна быть равна 100%.
slots.value.virtual_item
array Массив с данными о виртуальном товаре.
slots.value.virtual_item.id
int ID виртуального товара.
slots.value.virtual_item.amount
float Количество виртуального товара.
slots.value.virtual_item.drop_rate
decimal Процент вероятности выпадения предмета в слоте. Определяется с точностью до 2 знаков после разделителя.
slots.value.virtual_currency
object Массив с данными о виртуальной валюте.
slots.value.virtual_currency.amount
float Количество игровой валюты.
slots.value.virtual_currency.drop_rate
decimal Процент вероятности выпадения предмета в слоте. Определяется с точностью до 2 знаков после разделителя.
slots.value.attribute
array Массив с данными об атрибутах.
slots.value.attribute.type
int Тип атрибута. Набор товаров этого свойства будет выбираться в лутбоксе.
slots.value.attribute.value
string Значение атрибута. Например "rare".
slots.value.attribute.drop_rate
string Процент вероятности выпадения атрибута в слоте. Определяется с точностью до 2 знаков после разделителя.
slots.compensation_for_duplicate_percent
int Компенсация за выпавший дубликат предмета, в виртуальной валюте. Определяется в процентах от стоимости.
slots.compensation_for_duplicate_value
float Размер компенсации за попавшийся пользователю дубликат предмета в виртуальной валюте.
limits
object Массив ограничений на количество предметов в лутбоксе.
limits.virtual_item
object Объект с данными об ограничениях на предметы в лутбоксе.
limits.virtual_item.id
int ID виртуального предмета.
limits.virtual_item.max_items
int Максимальное количество раз, которое товар может выпасть в лутбоксе.
limits.attribute
object Объект с данными об ограничениях на атрибуты в лутбоксе.
limits.attribute.type
int Тип атрибута. Набор товаров этого свойства будет ограничиваться в лутбоксе.
limits.attribute.value
string Значение атрибута. Набор товаров с этим значением будет ограничиваться в лутбоксе.
limits.attribute.max_items
int Максимальное количество раз, которое товар определенного свойства может выпасть в лутбоксе.

Запрос

<?php

$response = $xsollaClient->CreateVirtualItem(array(
    'project_id' => PROJECT_ID,
    'request' => array (
         'sku' => 'T-43-3-unique-id',
         'item_code' => 'chinese-medium-tank',
         'name' =>
             array (
                 'en' => 'T-34-3',
             ),
         'description' =>
             array (
                 'en' => 'Chinese Tier VIII medium tank.',
             ),
         'long_description' =>
             array (
                 'en' => 'This Chinese Tier VIII medium tank is a real beast in its class.',
             ),
         'prices' =>
             array (
                 'USD' => 40.09,
             ),
         'default_currency' => 'USD',
         'enabled' => true,
         'permanent' => false,
         'image_url' => 'http://livedemo.xsolla.com/airplanes/tank5.jpg',
         'item_type' => 'lootbox',
         'expiration' => 1296000,
         'groups' =>
             array (
                 24,
                 25,
             ),
         'user_attribute_conditions' =>
             array (
             array (
                     'right_operand' =>
                         array (
                             'magic',
                         ),
                     'id' => 2015,
                     'user_attribute_key' => 'type',
                     'operation' => 'equal',
                     'action' => 'hide',
                     'name' => null,
                 ),
             ),
         'virtual_currency_price' => null,
         'purchase_limit' => null,
         'keywords' =>
             array (
                 'de' =>
                     array (
                         'Inhalt',
                         'Aufgaben',
                         'Region',
                         'Landschaft',
                     ),
                 'en' =>
                     array (
                         'content',
                         'quests',
                         'region',
                         'landscape',
                     ),
             ),
         'advertisement_type' => 'recommended',
         'deleted' => false,
    )
));
POST /merchant/v2/projects/{project_id}/virtual_items/items HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json

{
    "sku": "T-43-3-unique-id",
    "item_code": "chinese-medium-tank",
    "name": {
        "en": "T-34-3"
    },
    "description": {
        "en": "Chinese Tier VIII medium tank."
    },
    "long_description": {
            "en": "This Chinese Tier VIII medium tank is a real beast in its class."
    },
    "prices": {
        "USD": 40.09
    },
    "default_currency": "USD",
    "enabled": true,
    "permanent": false,
    "image_url": "http:\/\/livedemo.xsolla.com\/airplanes\/tank5.jpg",
    "item_type": "lootbox",
    "expiration": 1296000,
    "groups": [
        24,
        25
    ],
    "user_attribute_conditions": [
         {
             "right_operand": [
                 "magic"
             ],
             "id": 2015,
             "user_attribute_key": "type",
             "operation": "equal",
             "action": "hide",
             "name":null
         }
    ],
    "virtual_currency_price": null,
    "purchase_limit": null,
    "keywords": {
        "de":[
            "Inhalt","Aufgaben","Region","Landschaft"
        ],
        "en":[
            "content","quests","region","landscape"
        ]
    },
    "advertisement_type": "recommended",
    "deleted": false
}
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items' \
-X POST \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
    "sku": "T-43-3-unique-id",
    "item_code": "chinese-medium-tank",
    "name": {
        "en": "T-34-3"
    },
    "description": {
        "en": "Chinese Tier VIII medium tank."
    },
    "long_description": {
            "en": "This Chinese Tier VIII medium tank is a real beast in its class."
    },
    "prices": {
        "USD": 40.09
    },
    "default_currency": "USD",
    "enabled": true,
    "permanent": false,
    "image_url": "http:\/\/livedemo.xsolla.com\/airplanes\/tank5.jpg",
    "item_type": "lootbox",
    "expiration": 1296000,
    "groups": [
        24,
        25
    ],
    "user_attribute_conditions": [
         {
             "right_operand": [
                 "magic"
             ],
             "id": 2015,
             "user_attribute_key": "type",
             "operation": "equal",
             "action": "hide",
             "name":null
         }
    ],
    "virtual_currency_price": null,
    "purchase_limit": null,
    "keywords": {
        "de":[
            "Inhalt","Aufgaben","Region","Landschaft"
        ],
        "en":[
            "content","quests","region","landscape"
        ]
    },
    "advertisement_type": "recommended",
    "deleted": false
}'

Ответ

<?php

$response = null;
HTTP/1.1 204 No Content

Информация о лутбоксе

Информация о лутбоксе.

HTTP ЗАПРОС

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items/{item_id}

Параметр Тип Описание
item_id
int ID товара.

Запрос


<?php

$response = $xsollaClient->GetVirtualItem(array(
    'project_id' => PROJECT_ID,
    'item_id' => ITEM_ID
));
GET /merchant/v2/projects/{project_id}/virtual_items/items/{item_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items/{item_id}' \
-X GET \
-u merchant_id:merchant_api_key

Ответ

<?php

// example response
$response = array (
    'id' => 77,
    'sku' => 'T-43-3-unique-id',
    'item_code' => 'chinese-medium-tank',
    'name' =>
        array (
            'en' => 'T-34-3'
        ),
    'description' =>
        array (
            'en' => 'Chinese Tier VIII medium tank.'
        ),
    'long_description' =>
        array (
            'en' => 'This Chinese Tier VIII medium tank is a real beast in its class.'
        ),
    'prices' =>
        array (
            'USD' => 40.09
        ),
    'default_currency' => 'USD',
    'enabled' => true,
    'permanent' => false,
    'image_url' => 'http://livedemo.xsolla.com/airplanes/tank5.jpg',
    'item_type' => 'lootbox',
    'expiration' => 1296000,
    'groups' =>
        array (
            24,
            25
        ),
    'user_attribute_conditions' =>
        array (
        array (
                'right_operand' =>
                     array (
                        'magic',
                    ),
                'id' => 2015,
                'user_attribute_key' => 'type',
                'operation' => 'equal',
                'action' => 'hide',
                'name' => null,
            ),
        ),
    'virtual_currency_price' => null,
    'purchase_limit' => null,
    'keywords' =>
        array (
            'de' =>
                array (
                    'Inhalt',
                    'Aufgaben',
                    'Region',
                    'Landschaft',
                ),
            'en' =>
                array (
                    'content',
                    'quests',
                    'region',
                    'landscape',
                ),
        ),
    'advertisement_type' => 'recommended',
    'deleted' => false,
);
HTTP/1.1 200 OK
Content-Type: application/json

{
    "id": 77,
    "sku": "T-43-3-unique-id",
    "item_code": "chinese-medium-tank",
    "name": {
        "en": "T-34-3"
    },
    "description": {
        "en": "Chinese Tier VIII medium tank."
    },
    "long_description": {
            "en": "This Chinese Tier VIII medium tank is a real beast in its class."
    },
    "prices": {
        "USD": 40.09
    },
    "default_currency": "USD",
    "enabled": true,
    "permanent": false,
    "image_url": "http:\/\/livedemo.xsolla.com\/airplanes\/tank5.jpg",
    "item_type": "lootbox",
    "expiration": 1296000,
    "groups": [
        24,
        25
    ],
    "user_attribute_conditions": [
         {
             "right_operand": [
                 "magic"
             ],
             "id": 2015,
             "user_attribute_key": "type",
             "operation": "equal",
             "action": "hide",
             "name":null
         }
    ],
    "virtual_currency_price": null,
    "purchase_limit": null,
    "keywords": {
        "de":[
            "Inhalt","Aufgaben","Region","Landschaft"
        ],
        "en":[
            "content","quests","region","landscape"
        ]
    },
    "advertisement_type": "recommended",
    "deleted": false
}
{
    "id": 77,
    "sku": "T-43-3-unique-id",
    "item_code": "chinese-medium-tank",
    "name": {
        "en": "T-34-3"
    },
    "description": {
        "en": "Chinese Tier VIII medium tank."
    },
    "long_description": {
            "en": "This Chinese Tier VIII medium tank is a real beast in its class."
    },
    "prices": {
        "USD": 40.09
    },
    "default_currency": "USD",
    "enabled": true,
    "permanent": false,
    "image_url": "http:\/\/livedemo.xsolla.com\/airplanes\/tank5.jpg",
    "item_type": "lootbox",
    "expiration": 1296000,
    "groups": [
        24,
        25
    ],
    "user_attribute_conditions": [
         {
             "right_operand": [
                 "magic"
             ],
             "id": 2015,
             "user_attribute_key": "type",
             "operation": "equal",
             "action": "hide",
             "name":null
         }
    ],
    "virtual_currency_price": null,
    "purchase_limit": null,
    "keywords": {
        "de":[
            "Inhalt","Aufgaben","Region","Landschaft"
        ],
        "en":[
            "content","quests","region","landscape"
        ]
    },
    "advertisement_type": "recommended",
    "deleted": false
}

Список лутбоксов

Список лутбоксов.

HTTP ЗАПРОС

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items

Параметр Тип Описание
project_id
int ID игры.
offset
int Стартовая страница списка товаров.
limit
int Лимит списка товаров.
has_price
string Тип продажи товара. Может принимать значение 'virtual_currency' (если товар можно купить за виртуальную валюту) или 'real_currency' (если товар можно купить за реальную валюту).

Запрос


<?php

$response = $xsollaClient->ListVirtualItems(array(
    'project_id' => PROJECT_ID
));
GET /merchant/v2/projects/{project_id}/virtual_items/items HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items' \
-X GET \
-u merchant_id:merchant_api_key

Ответ

<?php

// example response
$response = array (
    array (
            'id' => 46,
            'sku' => 'T-43-3-unique-id',
            'localized_name' => 'T-34-3',
            'prices' =>
                array (
                    'USD' => 40.09
                ),
            'default_currency' => 'USD',
            'enabled' => true,
            'permanent' => false,
            'groups' =>
                array (
                    25
                ),
            'advertisement_type' => null,
            'virtual_currency_price' => null
        )
);
HTTP/1.1 200 OK
Content-Type: application/json

[
    {
        "id": 46,
        "sku": "T-43-3-unique-id",
        "localized_name": "T-34-3",
        "prices": {
            "USD": 40.09
        },
        "default_currency": "USD",
        "enabled": true,
        "permanent": false,
        "groups": [
            25
        ],
        "advertisement_type": null,
        "virtual_currency_price": null
    }
]
[
    {
        "id": 46,
        "sku": "T-43-3-unique-id",
        "localized_name": "T-34-3",
        "prices": {
            "USD": 40.09
        },
        "default_currency": "USD",
        "enabled": true,
        "permanent": false,
        "groups": [
            25
        ],
        "advertisement_type": null,
        "virtual_currency_price": null
    }
]

Открыть лутбокс

HTTP ЗАПРОС

POST https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items/{item_id}/open

Параметр Тип Описание
slots
array Массив слотов лутбокса. В слотах указывается набор предметов, который выпадет пользователю.
slots.id
int ID слота.
slots.value
object Объект с содержимым слота. Внутри каждого слота сумма drop_rate должна быть равна 100%.
slots.value.virtual_item
array Массив с данными о виртуальном товаре.
slots.value.virtual_item.id
int ID виртуального товара.
slots.value.virtual_item.amount
float Количество виртуального товара.
slots.value.virtual_item.drop_rate
decimal Процент вероятности выпадения предмета в слоте. Определяется с точностью до 2 знаков после разделителя.
slots.value.virtual_currency
object Массив с данными о виртуальной валюте.
slots.value.virtual_currency.amount
float Количество игровой валюты.
slots.value.virtual_currency.drop_rate
decimal Процент вероятности выпадения предмета в слоте. Определяется с точностью до 2 знаков после разделителя.
slots.value.attribute
array Массив с данными об атрибутах.
slots.value.attribute.type
int Тип атрибута. Набор товаров этого свойства будет выбираться в лутбоксе.
slots.value.attribute.value
string Значение атрибута. Например "rare".
slots.value.attribute.drop_rate
string Процент вероятности выпадения атрибута в слоте. Определяется с точностью до 2 знаков после разделителя.
slots.compensation_for_duplicate_percent
int Компенсация за выпавший дубликат предмета, в виртуальной валюте. Определяется в процентах от стоимости.
slots.compensation_for_duplicate_value
float Размер компенсации за попавшийся пользователю дубликат предмета в виртуальной валюте.

Запрос

<?php

$response = $xsollaClient->GetVirtualItem(array(
    'project_id' => PROJECT_ID,
    'item_id' => ITEM_ID
));
POST /merchant/v2/projects/{project_id}/virtual_items/items/{item_id}/open HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items/{item_id}/open' \
-X POST \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \

Ответ

<?php
HTTP/1.1 200 OK

Удаление лутбокса

Удаление лутбокса.

HTTP ЗАПРОС

DELETE https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items/{item_id}

Параметр Тип Описание
item_id
int ID товара.

Запрос


<?php

$response = $xsollaClient->DeleteVirtualItem(array(
    'project_id' => PROJECT_ID,
    'item_id' => ITEM_ID
));
DELETE /merchant/v2/projects/{project_id}/virtual_items/items/{item_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items/{item_id}' \
-X DELETE \
-u merchant_id:merchant_api_key

Ответ

<?php

$response = null;
HTTP/1.1 204 No Content

Список пакетов валюты

Список пакетов виртуальной валюты.

HTTP ЗАПРОС

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_currency

Параметр Тип Описание
project_id
int ID игры.

Запрос


<?php

$response = $xsollaClient->GetProjectVirtualCurrencySettings(array(
    'project_id' => PROJECT_ID
));
GET /merchant/v2/projects/{project_id}/virtual_currency HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_currency' \
-X GET \
-u merchant_id:merchant_api_key

Ответ

<?php

// example response
$response = array (
    'id' => 1,
    'vc_name' =>
        array (
            'en' => 'Golden Coins'
        ),
    'base' =>
        array (
            'USD' => 0.04,
            'EUR' => 0.03
        ),
    'default_currency' => 'USD',
    'min' => 0,
    'max' => 0,
    'is_currency_discrete' => true,
    'allow_user_sum' => true,
    'packets' =>
        array (
            'USD' =>
                array (
                    array (
                        'id' => 1,
                        'sku' => 'vc_usd',
                        'amount' => 100,
                        'price' => 10,
                        'image_url' => '//images.storage.com/some_image',
                        'description' =>
                            array (
                                'en' => 'Standard Package'
                            ),
                        'label' =>
                            array (
                                'en' => 'Standard Package'
                            ),
                        'bonus' => 0,
                        'advertisement_type' => 'recommended'
                        'enabled' => true
                    )
                ),
            'EUR' =>
                array (
                    array (
                        'id' => 2,
                        'sku' => 'vc_eur',
                        'amount' => 80,
                        'price' => 5,
                        'image_url' => null,
                        'description' =>
                            array (
                                'en' => 'Standard Package'
                            ),
                        'label' =>
                            array (
                                'en' => 'Standard Package'
                            ),
                        'bonus' => 0,
                        'advertisement_type' => 'recommended'
                        'enabled' => true
                    )
                )
        ),
    'type' => 'packets',
);
HTTP/1.1 200 OK
Content-Type: application/json

{
    "id": 1,
    "vc_name": {
        "en": "Golden Coins"
    },
    "base": {
        "USD": 0.04,
        "EUR": 0.03
    },
    "default_currency": "USD",
    "min": 0,
    "max": 0,
    "is_currency_discrete": true,
    "allow_user_sum": true,
    "packets": {
        "USD": [
            {
                "id": 1,
                "sku": "vc_usd",
                "amount": 100,
                "price": 10,
                "image_url": "//images.storage.com/some_image",
                "description": {
                    "en": "Standard Package"
                },
                "label": {
                    "en": "Standard Package"
                },
                "bonus": 0,
                "advertisement_type": "recommended",
                "enabled": true
            }
        ],
        "EUR": [
            {
                "id": 2,
                "sku": "vc_eur",
                "amount": 80,
                "price": 5,
                "image_url": null,
                "description": {
                    "en": "Standard Package"
                },
                "label": {
                    "en": "Standard Package"
                },
                "bonus": 0,
                "advertisement_type": "recommended",
                "enabled": true
            }
        ]
    },
    "type": "packets"
}
{
    "id": 1,
    "vc_name": {
        "en": "Golden Coins"
    },
    "base": {
        "USD": 0.04,
        "EUR": 0.03
    },
    "default_currency": "USD",
    "min": 0,
    "max": 0,
    "is_currency_discrete": true,
    "allow_user_sum": true,
    "packets": {
        "USD": [
            {
                "id": 1,
                "sku": "vc_usd",
                "amount": 100,
                "price": 10,
                "image_url": "//images.storage.com/some_image",
                "description": {
                    "en": "Standard Package"
                },
                "label": {
                    "en": "Standard Package"
                },
                "bonus": 0,
                "advertisement_type": "recommended",
                "enabled": true
            }
        ],
        "EUR": [
            {
                "id": 2,
                "sku": "vc_eur",
                "amount": 80,
                "price": 5,
                "image_url": null,
                "description": {
                    "en": "Standard Package"
                },
                "label": {
                    "en": "Standard Package"
                },
                "bonus": 0,
                "advertisement_type": "recommended",
                "enabled": true
            }
        ]
    },
    "type": "packets"
}

Изменение пакета валюты

Изменение пакета виртуальной валюты.

HTTP ЗАПРОС

PUT https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_currency

Параметр Тип Описание
project_id
int ID игры.
vc_name
array of strings Название виртуальной валюты. Значение состоит из пар <локализация>:<название виртуальной валюты>.
base
array JSON объект со стоимостью пакета в реальной валюте, валюта является ключом (Используется трехбуквенное обозначение валюты согласно стандарту ISO 4217), а значение - стоимость данной валюте.
default_currency
string Валюта по умолчанию.
min
float Минимальная цена за пакет.
max
float Максимальная цена заказа.
is_currency_discrete
boolean Можно ли задавать дробные цены.
allow_user_sum
boolean Можно ли купить количество валюты, не соответствующее ни одному из пакетов.
sku
string Уникальный ID пакета виртуальной валюты.
amount
float Количество виртуальной валюты в пакете.
price
float Цена пакета виртуальной валюты.
image_url
string Url изображения виртуальной валюты для данного пакета.
description
array of strings Массив локализованных названий пакета виртуальной валюты. Значение состоит из пар <локализация>:<название пакета>.
label
array of strings Массив локализованных надписей на лэйблах для пакета виртуальной валюты. Значение состоит из пар <локализация>:<название пакета>.
bonus
float Скидка на пакет, %.
advertisement_type
string Тип лэйбла пакета виртуальной валюты в интерфейсе оплаты. Может принимать значение 'recommended', 'best_deal', 'special_offer' или null.
enabled
boolean Включен ли пакет виртуальной валюты.

Запрос

<?php

$response = $xsollaClient->UpdateProjectVirtualCurrencySettings(array(
    'project_id' => PROJECT_ID,
    'request' => array (
         'vc_name' =>
             array (
                 'en' => 'Golden Coins'
             ),
         'base' =>
             array (
                 'USD' => 0.04,
                 'EUR' => 0.02,
             ),
         'default_currency' => 'USD',
         'min' => 0,
         'max' => 0,
         'is_currency_discrete' => true,
         'allow_user_sum' => true,
         'packets' =>
             array (
                 'USD' =>
                     array (
                         array (
                             'id' => 1,
                             'sku' => 'vc_usd',
                             'amount' => 100,
                             'price' => 10,
                             'image_url' => '//images.storage.com/some_image',
                             'description' =>
                                 array (
                                     'en' => 'Standard Package'
                                 ),
                             'label' =>
                                 array (
                                     'en' => 'Standard Package'
                                 ),
                             'bonus' => 0,
                             'advertisement_type' => 'recommended'
                             'enabled' => true
                         )
                     ),
                 'EUR' =>
                     array (
                         array (
                             'id' => 2,
                             'sku' => 'vc_eur',
                             'amount' => 80,
                             'price' => 5,
                             'image_url' => null,
                             'description' =>
                                 array (
                                     'en' => 'Standard Package'
                                 ),
                             'label' =>
                                 array (
                                     'en' => 'Standard Package'
                                 ),
                             'bonus' => 0,
                             'advertisement_type' => 'recommended'
                             'enabled' => true
                         )
                     )
             ),
         'type' => 'packets',
     )
));
PUT /merchant/v2/projects/{project_id}/virtual_currency HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json

{
    "vc_name": {
        "en": "Golden Coins"
    },
    "base": {
        "USD": 0.04,
        "EUR": 0.03
    },
    "default_currency": "USD",
    "min": 0,
    "max": 0,
    "is_currency_discrete": true,
    "allow_user_sum": true,
    "packets": {
        "USD": [
            {
                "id": 1,
                "sku": "vc_usd",
                "amount": 100,
                "price": 10,
                "image_url": "//images.storage.com/some_image",
                "description": {
                    "en": "Standard Package"
                },
                "label": {
                    "en": "Standard Package"
                },
                "bonus": 0,
                "advertisement_type": "recommended",
                "enabled": true
            }
        ],
        "EUR": [
            {
                "id": 2,
                "sku": "vc_eur",
                "amount": 80,
                "price": 5,
                "image_url": null,
                "description": {
                    "en": "Standard Package"
                },
                "label": {
                    "en": "Standard Package"
                },
                "bonus": 0,
                "advertisement_type": "recommended",
                "enabled": true
            }
        ]
    }
}
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_currency' \
-X PUT \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
    "vc_name": {
        "en": "Golden Coins"
    },
    "base": {
        "USD": 0.04,
        "EUR": 0.03
    },
    "default_currency": "USD",
    "min": 0,
    "max": 0,
    "is_currency_discrete": true,
    "allow_user_sum": true,
    "packets": {
        "USD": [
            {
                "id": 1,
                "sku": "vc_usd",
                "amount": 100,
                "price": 10,
                "image_url": "//images.storage.com/some_image",
                "description": {
                    "en": "Standard Package"
                },
                "label": {
                    "en": "Standard Package"
                },
                "bonus": 0,
                "advertisement_type": "recommended"
            }
        ],
        "EUR": [
            {
                "id": 2,
                "sku": "vc_eur",
                "amount": 80,
                "price": 5,
                "image_url": null,
                "description": {
                    "en": "Standard Package"
                },
                "label": {
                    "en": "Standard Package"
                },
                "bonus": 0,
                "advertisement_type": "recommended"
            }
        ]
    }
}'

Ответ

<?php

$response = null;
HTTP/1.1 204 No Content

Кошелек

Раздел содержит описание методов для работы с балансом пользователя. Описанный функционал позволяет проводить такие операции как проверка и пополнение баланса, снятие средств, а также другие связанные с пользователем операции.

Создание нового пользователя

Создание нового пользователя.

HTTP ЗАПРОС

POST https://api.xsolla.com/merchant/v2/projects/{project_id}/users

Параметр Тип Описание
project_id
int ID игры. Обязательный.
user_id
string ID пользователя. Обязательный.
user_name
string Имя пользователя.
user_custom
string Дополнительный параметр идентификации пользователя.
email
string Email пользователя.

Запрос

<?php

$response = $xsollaClient->CreateWalletUser(array(
    'project_id' => PROJECT_ID,
    'request' => array(
        'user_id' => USER_ID
    )
));
POST /merchant/v2/projects/{project_id}/users HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json

{
    "user_id": 1
}
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/users' \
-X POST \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
    "user_id": 1
}'

Ответ

HTTP/1.1 204 No Content

Информация о пользователе

Информация о пользователе.

HTTP ЗАПРОС

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}

Параметр Тип Описание
project_id
int ID игры.
user_id
string ID пользователя в игре.

Запрос

<?php

$response = $xsollaClient->GetWalletUser(array(
    'project_id' => PROJECT_ID,
    'user_id' => USER_ID
));
GET /merchant/v2/projects/{project_id}/users/{user_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}' \
-X GET \
-u merchant_id:merchant_api_key

Ответ

<?php

// example response
$response = array (
    'user_id' => 0,
    'user_name' => 'John',
    'user_custom' => 'Smith',
    'email' => 'email@example.com',
    'register_date' => '2014-10-08T21:44:32+04:00',
    'balance' => 100,
    'wallet_amount' => 1.5,
    'wallet_currency' => 'USD',
    'enabled' => true
);
HTTP/1.1 200 OK
Content-Type: application/json

{
    "user_id": 0,
    "user_name": "John",
    "user_custom": "Smith",
    "email": "email@example.com",
    "register_date": "2014-10-08T21:44:32-08:00",
    "balance": 100,
    "wallet_amount": 1.5,
    "wallet_currency": "USD",
    "enabled": true
}
{
    "user_id": 0,
    "user_name": "John",
    "user_custom": "Smith",
    "email": "email@example.com",
    "register_date": "2014-10-08T21:44:32-08:00",
    "balance": 100,
    "wallet_amount": 1.5,
    "wallet_currency": "USD",
    "enabled": true
}

Изменение пользователя

Изменение информации о пользователе.

HTTP ЗАПРОС

PUT https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}

Параметр Тип Описание
project_id
int ID игры. Обязательный.
user_id
string ID пользователя. Обязательный.
user_name
string Имя пользователя.
user_custom
string Дополнительный параметр идентификации пользователя.
email
string Email пользователя.
enabled
boolean Активен ли пользователь. Обязательный.

Запрос

<?php

$response = $xsollaClient->UpdateWalletUser(array(
    'project_id' => PROJECT_ID,
    'user_id' => USER_ID,
    'request' => array(
        'enabled' => true
    )
));
PUT /merchant/v2/projects/{project_id}/users/{user_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json

{
    "enabled": true
}
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}' \
-X PUT \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
    "enabled": true
}'

Ответ

<?php

$response = null;
HTTP/1.1 204 No Content

Список пользователей

Список пользователей.

HTTP ЗАПРОС

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/users

Параметр Тип Описание
project_id
int ID игры. Обязательный.
user_requisites
string ID или никнейм пользователя.
email
string Email пользователя.
offset
int Стартовая страница списка пользователей. Обязательный.
limit
int Лимит количества пользователей в списке. Обязательный.

Запрос

<?php

$response = $xsollaClient->ListWalletUsers(array(
    'project_id' => PROJECT_ID,
    'limit' => 1,
    'offset' => 0
));
GET /merchant/v2/projects/{project_id}/users?offset=1&limit=1 HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/users?offset=1&limit=1' \
-X GET \
-u merchant_id:merchant_api_key

Ответ

<?php

// example response
$response = array (
    'recordsTotal' => 1,
    'data' =>
        array (
            array (
                'user_id' => 0,
                'user_name' => 'John',
                'user_custom' => 'Smith',
                'email' => 'email@example.com',
                'register_date' => '2014-10-08T21:44:32-08:00',
                'balance' => 100,
                'wallet_amount' => 1.5,
                'wallet_currency' => 'USD',
                'enabled' => true
            )
        )
);
HTTP/1.1 200 OK
Content-Type: application/json

{
    "recordsTotal": 1,
    "data": [
        {
            "user_id": 0,
            "user_name": "John",
            "user_custom": "Smith",
            "email": "email@example.com",
            "register_date": "2014-10-08T21:44:32-08:00",
            "balance": 100,
            "wallet_amount": 1.5,
            "wallet_currency": "USD",
            "enabled": true
        }
    ]
}
{
    "recordsTotal": 1,
    "data": [
        {
            "user_id": 0,
            "user_name": "John",
            "user_custom": "Smith",
            "email": "email@example.com",
            "register_date": "2014-10-08T21:44:32-08:00",
            "balance": 100,
            "wallet_amount": 1.5,
            "wallet_currency": "USD",
            "enabled": true
        }
    ]
}

Список операций

Список операций пользователя.

HTTP ЗАПРОС

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/transactions

Параметр Тип Описание
project_id
int ID игры. Обязательный.
user_id
string ID пользователя в игре. Обязательный.
datetime_from
datetime Начало периода. Обязательный.
datetime_to
datetime Конец периода. Обязательный.
transaction_type
string Тип операции, может принимать значение "payment", "coupon", "inGamePurchase", "internal" или "cancellation".

Запрос

<?php

$response = $xsollaClient->ListWalletUserOperations(array(
    'project_id' => PROJECT_ID,
    'user_id' => USER_ID,
    'datetime_from' => '2015-01-01T00:00:00Z',
    'datetime_to' => '2016-01-01T00:00:00Z'
));
GET /merchant/v2/projects/{project_id}/users/{user_id}/transactions?datetime_from=2014-10-14T00%3A00%3A00Z&datetime_to=2014-10-15T00%3A00%3A00Z HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/transactions?datetime_from=2014-10-14T00%3A00%3A00Z&datetime_to=2014-10-15T00%3A00%3A00Z' \
-X GET \
-u merchant_id:merchant_api_key

Ответ

<?php

// example response
$response = array (
    array (
        'operation_id' => 647287,
        'transaction_id' => 1234567,
        'coupon_id' => null,
        'coupon_code' => null,
        'transaction_type' => 'invoice',
        'comment' => 'Incoming payment',
        'date' => '2014-10-28T12:00:00+04:00',
        'amount' => 1000,
        'sum' => 10,
        'currency' => 'USD',
        'status' => 'notified',
        'user_balance' => 100,
        'user_id' => '1234567'
    ),
    array (
        'operation_id' => 647288,
        'transaction_id' => null,
        'coupon_id' => null,
        'coupon_code' => 'DemoCoupon',
        'transaction_type' => 'coupon',
        'comment' => 'Coupon Redeem',
        'date' => '2014-10-28T14:00:00+04:00',
        'amount' => 0,
        'sum' => null,
        'currency' => null,
        'status' => 'failed',
        'user_balance' => 100,
        'user_id' => '1234567'
    )
);
HTTP/1.1 200 OK
Content-Type: application/json

[
    {
        "operation_id": 647287,
        "transaction_id": 1234567,
        "coupon_id": null,
        "coupon_code": null,
        "transaction_type": "invoice",
        "comment": "Incoming payment",
        "date": "2014-10-28T12:00:00+04:00",
        "amount": 1000,
        "sum": 10,
        "currency": "USD",
        "status": "notified",
        "user_balance": 100,
        "user_id": "1234567"
    },
    {
        "operation_id": 647288,
        "transaction_id": null,
        "coupon_id": 12345,
        "coupon_code": "DemoCoupon",
        "transaction_type": "coupon",
        "comment": "Coupon Redeem",
        "date": "2014-10-28T14:00:00+04:00",
        "amount": 0,
        "sum": null,
        "currency": null,
        "status": "failed",
        "user_balance": 100,
        "user_id": "1234567"
    }
]
[
    {
        "operation_id": 647287,
        "transaction_id": 1234567,
        "coupon_id": null,
        "coupon_code": null,
        "transaction_type": "invoice",
        "comment": "Incoming payment",
        "date": "2014-10-28T12:00:00+04:00",
        "amount": 1000,
        "sum": 10,
        "currency": "USD",
        "status": "notified",
        "user_balance": 100,
        "user_id": "1234567"
    },
    {
        "operation_id": 647288,
        "transaction_id": null,
        "coupon_id": 12345,
        "coupon_code": "DemoCoupon",
        "transaction_type": "coupon",
        "comment": "Coupon Redeem",
        "date": "2014-10-28T14:00:00+04:00",
        "amount": 0,
        "sum": null,
        "currency": null,
        "status": "failed",
        "user_balance": 100,
        "user_id": "1234567"
    }
]

Изменение баланса

Изменение баланса.

HTTP ЗАПРОС

POST https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/recharge

Параметр Тип Описание
project_id
int ID игры.
user_id
string ID пользователя в игре.
amount
float Количество виртуальной валюты.
comment
string Причина изменения баланса.

Запрос