Введение
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 | Размер платежного интерфейса. В зависимости от требуемых размеров платежного интерфейса, параметр может принимать следующие значения:
|
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 для продажи игр:
- Простая интеграция
- Расширенная интеграция
Информация о различиях вариантов взаимодействия указана в гайде по интеграции. Параметры инициализации виджета будут отличаться в зависимости от выбранного варианта.
Простая интеграция
Список параметров для инициализации скрипта:
Параметр | Тип | Описание |
---|---|---|
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
}
]
Создание лутбокса
Создание лутбокса.
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 | Дополнительный параметр идентификации пользователя. |
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 | Дополнительный параметр идентификации пользователя. |
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 или никнейм пользователя. |
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 | Причина изменения баланса. |
Запрос