Создание каталога
Возможны следующие способы создания каталога подписок:
В собственном интерфейсе
При создании каталога в собственном интерфейсе вы можете использовать:
- Собственное хранилище данных и любой вариант авторизации. В этом случае реализуйте отображение каталога на своей стороне.
- Собственную авторизацию и серверный метод Получение планов. После получения списка планов реализуйте отображение каталога на своей стороне.
- Авторизацию Иксолла и клиентские методы получения списка планов.
Авторизация Иксолла и клиентские методы
Для реализации каталога:
- Получите список планов подписок с помощью клиентских методов:
- если в вашем проекте настроены продукты подписки, используйте клиентский метод получения списка планов по продукту;
- если в вашем проекте не настроены продукты подписки, используйте клиентский метод получения списка планов.
- Реализуйте отображение полученного списка планов в интерфейсе.
Клиентский метод получения списка планов по продукту
В клиентской части вашего приложения реализуйте получение списка планов по продукту с использованием HTTP GET-запроса https://subscriptions.xsolla.com/api/user/v1/projects/{project_id}/products/{productId}/plans
.
Запрос к методу должен содержать заголовок Authorization: Bearer <client_user_jwt>
, где <client_user_jwt>
— JSON Web Token (JWT) пользователя — уникальный токен, закодированный по стандарту Base64. Используйте для его получения:
- Методы API
Register new user иAuth by username , если в вашем приложении используется авторизация по логину и паролю. - Метод API
Auth via social network , если в вашем приложении используется авторизация через социальные сети.
В качестве path-параметра укажите:
projectId
— ID проекта. Вы можете найти этот параметр в Личном кабинете рядом с названием проекта.
productID
— ID продукта подписки. Для его получения обратитесь к аккаунт-менеджеру проекта.
В качестве query-параметров укажите:
Параметр | Тип | Описание |
---|---|---|
plan_id | array of integers | ID рекуррентного плана. |
| array of strings | Внешний идентификатор плана. Вы можете найти этот параметр в вашем проекте в Личном кабинете в разделе Подписки > Планы подписки > ваш план или с помощью метода Список планов. |
| integer | Лимит количества элементов на странице. По умолчанию отображается 15 элементов. |
| integer | Номер элемента, с которого выполняется вывод на странице. По умолчанию нумерация начинается с 0. |
| string | Язык интерфейса в двухбуквенном обозначении согласно стандарту ISO 639-1. Если параметр не передается, язык определяется по IP-адресу пользователя. |
| string | Страна пользователя в двухбуквенном обозначении согласно стандарту ISO 3166-1 alpha-2. Влияет на выбор языка интерфейса и валюты. Если параметр не передается, страна определяется по IP-адресу пользователя. |
curl -X 'GET' \
'https://subscriptions.xsolla.com/api/user/v1/projects/{project_id}/products/{productId}/plans?country=RU ' \
-H 'accept: application/json' \
-H 'Authorization: Bearer client_user_jwt'
- js
{
"items": [
{
"plan_id": 54321,
"plan_external_id": "PlanExternalId",
"plan_group_id": "TestGroupId",
"plan_type": "all",
"plan_name": "Localized plan name",
"plan_description": "Localized plan description",
"plan_start_date": "2021-04-11T13:51:02+03:00",
"plan_end_date": "2031-04-11T13:51:02+03:00",
"trial_period": 7,
"period": {
"value": 1,
"unit": "month"
},
"charge": {
"amount": 4.99,
"setup_fee": 0.99,
"currency": "USD"
},
"promotion": {
"promotion_charge_amount": 3.99,
"promotion_remaining_charges": 3
}
}
],
"has_more": false
}
Клиентский метод получения списка планов
В клиентской части вашего приложения реализуйте получение списка планов по продукту с использованием HTTP GET-запроса https://subscriptions.xsolla.com/api/user/v1/projects/{project_id}/plans
.
Запрос к методу должен содержать заголовок Authorization: Bearer <client_user_jwt>
, где <client_user_jwt>
— JSON Web Token (JWT) пользователя — уникальный токен, закодированный по стандарту Base64. Используйте для его получения:
- Методы API
Register new user иAuth by username , если в вашем приложении используется авторизация по логину и паролю. - Метод API
Auth via social network , если в вашем приложении используется авторизация через социальные сети.
В качестве path-параметра укажите projectId
— ID проекта. Вы можете найти этот параметр в Личном кабинете рядом с названием проекта.
В качестве query-параметров укажите:
Параметр | Тип | Описание |
---|---|---|
plan_id | array of integers | ID рекуррентного плана. |
| array of strings | Внешний идентификатор плана. Вы можете найти этот параметр в вашем проекте в Личном кабинете в разделе Подписки > Планы подписки > ваш план или с помощью метода Список планов. |
| integer | Лимит количества элементов на странице. По умолчанию отображается 15 элементов. |
| integer | Номер элемента, с которого выполняется вывод на странице. По умолчанию нумерация начинается с 0. |
| string | Язык интерфейса в двухбуквенном обозначении согласно стандарту ISO 639-1. Если параметр не передается, язык определяется по IP-адресу пользователя. |
| string | Страна пользователя в двухбуквенном обозначении согласно стандарту ISO 3166-1 alpha-2. Влияет на выбор языка интерфейса и валюты. Если параметр не передается, страна определяется по IP-адресу пользователя. |
curl -X 'GET' \
'https://subscriptions.xsolla.com/api/user/v1/projects/{project_id}/plans?country=RU ' \
-H 'accept: application/json' \
-H 'Authorization: Bearer client_user_jwt'
- js
{
"items": [
{
"plan_id": 54321,
"plan_external_id": "PlanExternalId",
"plan_group_id": "TestGroupId",
"plan_type": "all",
"plan_name": "Localized plan name",
"plan_description": "Localized plan description",
"plan_start_date": "2021-04-11T13:51:02+03:00",
"plan_end_date": "2031-04-11T13:51:02+03:00",
"trial_period": 7,
"period": {
"value": 1,
"unit": "month"
},
"charge": {
"amount": 4.99,
"setup_fee": 0.99,
"currency": "USD"
},
"promotion": {
"promotion_charge_amount": 3.99,
"promotion_remaining_charges": 3
}
}
],
"has_more": false
}
В платежном интерфейсе Иксолла
Способ создания каталога в платежном интерфейсе зависит от настроек авторизации в вашем проекте:
Собственная система авторизации
Если в вашем приложении используется собственная система авторизации:
- Реализуйте получение токена с помощью серверного метода Создание токена. В запросе к методу передайте информацию о пользователе в параметрах
user.id
иuser.email
. - Реализуйте открытие платежного интерфейса в Pay Station Embed, iframe или в новом окне.
- js
{
"user": {
"id": {
"value": "1234567",
"hidden": true
}
},
"settings": {
"project_id": 123456,
"language": "en",
"currency": "USD"
}
}
Авторизация Иксолла
Если в вашем проекте настроена Авторизация Иксолла:
В клиентской части вашего приложения реализуйте получение ссылки на открытие платежного интерфейса с использованием HTTP POST-запроса https://subscriptions.xsolla.com/api/user/v1/projects/{project_id}/subscriptions/buy
.
Запрос к методу должен содержать заголовок Authorization: Bearer <client_user_jwt>
, где <client_user_jwt>
— JSON Web Token (JWT) пользователя — уникальный токен, закодированный по стандарту Base64. Используйте для его получения:
- Методы API
Register new user иAuth by username , если в вашем приложении используется авторизация по логину и паролю. - Метод API
Auth via social network , если в вашем приложении используется авторизация через социальные сети.
В качестве path-параметра укажите projectId
— ID проекта. Вы можете найти этот параметр в Личном кабинете рядом с названием проекта.
В качестве query-параметра укажите country
— страна пользователя в двухбуквенном обозначении согласно стандарту ISO 3166-1 alpha-2. Влияет на выбор локали и валюты. Если параметр не передается, страна определяется по IP-адресу пользователя.
Параметры тела запроса:
Параметр | Тип | Описание |
---|---|---|
| string | Обязательный. Внешний ID плана подписки. Вы можете найти этот параметр в Личном кабинете в разделе Подписки > Планы подписки. |
| object | Объект, содержащий настройки проекта. |
| object | Объект с настройками интерфейса. |
| string | Размер платежного интерфейса. В зависимости от требуемых размеров платежного интерфейса параметр может принимать следующие значения:
|
| string | Внешний вид интерфейса оплаты. Может принимать значения default (по умолчанию) или default_dark . |
| string | Тип устройства. Может принимать значения desktop (по умолчанию) или mobile . |
| object | Объект с данными настроек для desktop-версии. |
| object | Объект с настройками header. |
| boolean | Показывать ли кнопку Закрыть в настольной версии платежного интерфейса. Нажатие на кнопку закрывает платежный интерфейс и перенаправляет пользователя на адрес, указанный в параметре settings.return_url . false по умолчанию. |
| boolean | Должен ли хедер отображаться на странице оплаты. |
| string | Внешний вид хедера. Может принимать значения compact (в этом случае название игры и ID пользователя не будут показываться в хедере) или normal . |
| boolean | Если значение true , то логотип будет отображаться в хедере. Для добавления логотипа отправьте его аккаунт-менеджеру проекта. |
| boolean | Должно ли название игры отображаться в хедере. |
| string | Внешний вид хедера. Может принимать значения compact (в этом случае название игры и ID пользователя не будут показываться в хедере) или normal . |
| string | Пользователь может совершить платеж только через сохраненные способы оплаты. Принимает значение saved_accounts . |
| boolean | Скрывать или нет footer в мобильной версии платежного интерфейса. |
| boolean | Показывать ли кнопку Закрыть в мобильной версии платежного интерфейса. Нажатие на кнопку закрывает платежный интерфейс и перенаправляет пользователя на адрес, указанный в параметре settings.return_url . false по умолчанию. |
| string | Ссылка на лицензионное соглашение. |
| string | Платежный интерфейс в режиме Личного кабинета. Принимает значение user_account . Хедер содержит только навигационное меню Личного кабинета; исключается возможность выбора предмета и оплата покупки; режим Личного кабинета доступен только в desktop-режиме. |
| object | Объект с данными об аккаунте пользователя. |
| object | Раздел История. |
| integer | Должен ли раздел отображаться в раскрывающемся меню в платежном интерфейсе. Может принимать значения true или false . Если параметр не передается, раздел будет отображаться. |
| integer | Расположение раздела в раскрывающемся меню в платежном интерфейсе. |
| object | Страница Мой аккаунт. |
| integer | Расположение раздела в раскрывающемся меню в платежном интерфейсе. |
| boolean | Должен ли раздел отображаться в раскрывающемся меню в платежном интерфейсе. Может принимать значения true или false . Если параметр не передается, раздел будет отображаться. |
| object | Страница Мои платежные аккаунты. |
| integer | Расположение раздела в раскрывающемся меню в платежном интерфейсе. |
| boolean | Должен ли раздел отображаться в раскрывающемся меню в платежном интерфейсе. Может принимать значения true или false . Если параметр не передается, раздел будет отображаться. |
| object | Страница Управление подписками. |
| boolean | Должен ли раздел отображаться в раскрывающемся меню в платежном интерфейсе. Может принимать значения true или false . Если параметр не передается, раздел будет отображаться. |
settings.ui.user_account.subscriptions.order | integer | Расположение раздела в раскрывающемся меню в платежном интерфейсе. |
| string | Предпочтительная валюта платежа. Используется трехбуквенное обозначение валюты согласно стандарту ISO 4217. |
| string | Идентификатор транзакции в игре. Должен быть уникальным для каждого платежа пользователя. |
| integer | ID способа оплаты. Список идентификаторов способов оплаты можно получить в Личном кабинете или с помощью метода API Список способов оплаты. |
| string | Пользователь будет перенаправлен на данную страницу после совершения платежа. Параметры user_id , foreigninvoice , invoice_id и status будут автоматически добавлены к ссылке. |
| object | Настройки политики редиректа (объект). |
| string | Статус платежа, при котором пользователь перенаправляется на URL-адрес возврата после совершения платежа. Принимает значение none , successful , successful_or_canceled или any . |
settings.redirect_policy.delay | integer | Задержка (в секундах), после которой пользователь автоматически перенаправляется на return URL. |
| string | Статус платежа, при котором пользователь перенаправляется на URL-адрес возврата после совершения платежа. Принимает значение none , successful , successful_or_canceled или any . |
| string | Текст кнопки для ручного перенаправления. |
При необходимости передайте дополнительные параметры для кастомизации платежного интерфейса.
curl -X 'POST' \
'https://subscriptions.xsolla.com/api/user/v1/projects/{project_id}/subscriptions/buy?country=RU ' \
-H 'accept: application/json' \
-H 'Authorization: Bearer client_user_jwt'
{
"plan_external_id": "PlanExternalId",
"settings": {
"ui": {
"size": "large",
"theme": "string",
"version": "desktop",
"desktop": {
"header": {
"is_visible": true,
"visible_logo": true,
"visible_name": true,
"type": "compact",
"close_button": true
}
},
"mobile": {
"mode": "saved_accounts",
"footer": {
"is_visible": true
},
"header": {
"close_button": true
}
},
"license_url": "string",
"mode": "user_account",
"user_account": {
"history": {
"enable": true,
"order": 1
},
"payment_accounts": {
"enable": true,
"order": 1
},
"info": {
"enable": true,
"order": 1
},
"subscriptions": {
"enable": true,
"order": 1
}
}
},
"currency": "string",
"locale": "string",
"external_id": "string",
"payment_method": 1,
"return_url": "string",
"redirect_policy": {
"redirect_conditions": "none",
"delay": 0,
"status_for_manual_redirection": "none",
"redirect_button_caption": "string"
}
}
}
{
"link_to_ps": "https://secure.xsolla.com/paystation2/?access_token=<access_token>"
}
Пример отображения каталога подписок в платежном интерфейсе Иксолла:

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

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