Подписка в подарок
Вы можете добавить в ваше приложение возможность подарить подписку другому пользователю. Это поможет привлечь дополнительную прибыль или новых пользователей.
Как это работает
Пользователь может подарить подписку существующему в вашей системе пользователю, указав данные его аккаунта, или новому пользователю, указав его email-адрес. При этом пользователь, отправляющий подарок, может скрыть свое имя или добавить текст сообщения в email-уведомление о подарке. После создания подписки ее владельцем становится получатель подарка. Созданная подписка принимает тип продления единовременный платеж.
Схема взаимодействия при подарке подписки существующему пользователю:
%%{init: {'themeVariables': { 'noteBkgColor': 'transparent', 'noteBorderColor': 'transparent' }}}%%
sequenceDiagram
participant G as Даритель
participant R as Получатель
participant BE as Приложение
participant X as Xsolla
G->>BE: Выбирает существующего пользователя для подарка подписки, выбирает план.<br>(Опционально) Выбирает анонимность<br>и добавляет сообщение
BE->>X: Отправляет ID и email-адрес дарителя,<br>ID и email-адрес получателя, ID плана.<br>(Опционально) Отправляет: параметр анонимности,<br>сообщение от дарителя, URL-адрес для перенаправления, ID продукта
X-->>BE: Отправляет токен покупки
BE-->>G: Отправляет ссылку на платежный интерфейс
G->>X: Открывает платежный интерфейс
note right of X: Запрашивает проверку существования пользователя
X->>BE: Отправляет вебхук «Проверка существования пользователя»
BE-->>X: Возвращает успешный ответ
X-->>G: Позволяет ввести платежные данные
G->>X: Безопасно передает платежные данные
X->>BE: Отправляет вебхук «Успешный платеж»
BE-->>X: Возвращает успешный ответ
X-->>G: Показывает экран успешной покупки
X->>BE: Отправляет вебхук «Создание подписки»
BE-->>X: Возвращает успешный ответ
X-->>G: Отправляет чек
X-->>R: Отправляет письмо с данными анонимности, сообщением от дарителя и URL-адресом для перенаправления
R->>BE: Переходит по URL-адресу из письма и просматривает информацию о подаренной подписке
BE-->>R: Возвращает успешный ответ
Схема взаимодействия при подарке подписки новому пользователю:
%%{init: {'themeVariables': { 'noteBkgColor': 'transparent', 'noteBorderColor': 'transparent' }}}%%
sequenceDiagram
participant G as Даритель
participant R as Получатель
participant BE as Приложение
participant X as Xsolla
G->>BE: Вводит email-адрес нового пользователя<br>для подарка подписки, выбирает план.<br>(Опционально) Выбирает анонимность<br>и добавляет сообщение
activate BE
BE->>X: Отправляет ID и email-адрес дарителя,<br>email-адрес получателя, URL-адрес для перенаправления, ID плана.<br>(Опционально) Отправляет: параметр анонимности,<br>сообщение от дарителя, ID продукта
activate X
X-->>BE: Отправляет токен покупки
deactivate X
BE-->>G: Отправляет ссылку на платежный интерфейс
deactivate BE
G->>X: Открывает платежный интерфейс
activate X
note right of X: Запрашивает проверку существования пользователя
X->>BE: Отправляет вебхук «Проверка существования пользователя»
activate BE
BE-->>X: Возвращает успешный ответ
deactivate BE
X-->>G: Позволяет ввести платежные данные
G->>X: Безопасно передает платежные данные
X->>BE: Отправляет вебхук «Успешный платеж»
activate BE
BE-->>X: Возвращает успешный ответ
deactivate BE
X-->>G: Показывает экран успешной покупки
X->>BE: Отправляет вебхук «Создание подписки»
activate BE
BE-->>X: Возвращает успешный ответ
deactivate BE
X-->>G: Отправляет чек
X-->>R: Отправляет письмо с сообщением от дарителя и URL-адресом для перенаправления.<br>Если подарок отправлен анонимно,<br>имя дарителя скрыто.
R->>BE: Переходит по URL-адресу из письма
BE-->>R: Открывает форму аутентификации
R->>BE: Создает аккаунт и получает подаренную подписку
BE-->>R: Возвращает успешный ответ
Как настроить
Вы можете настроить в своем приложении возможность подарить подписку:
Подарок существующему пользователю
- Реализуйте в вашем приложении интерфейс для покупки подписки в подарок со следующими элементами:
- поля для ввода данных получателя подарка;
- поле ввода сообщения от отправителя (опционально);
- опцию для выбора анонимной отправки (опционально);
- элементы для выбора плана подписки (опционально).
- Реализуйте получение токена после заполнения данных о подарке, при переходе к оплате. Для этого передайте в метод Создание токена объект
purchase.subscription.giftc параметрами:recipient— ID получателя подписки. Обязательный.email— email-адрес получателя. Обязательный.redirect_url— URL переадресации. Передайте ссылку на страницу с дополнительной информацией о подаренной подписке или на главную страницу проекта.
redirect_url не передан в токене, получатель подарка не сможет перейти к подаренной подписке из email-уведомления о подарке.- Дополнительно вы можете передать в объекте
purchase.subscriptionпараметры:gift.anonymous— отправлен ли подарок анонимно. Если значениеtrue, имя отправителя будет скрыто в email-уведомлении. По умолчанию принимает значениеfalse.gift.message— сообщение от отправителя подарка. Будет отправлено в email-уведомлении о подаренной подписке.plan_id— ID плана подписки.
Пример запроса на получение токена:
- json
1{
2 "purchase": {
3 "checkout": {
4 "currency": "USD",
5 "amount": 10
6 },
7 "subscription": {
8 "gift": {
9 "recipient": "test_recipient_v1",
10 "email": "[email protected]",
11 "redirect_url": "https://example.com/",
12 "anonymous": true,
13 "message": "Happy birthday!"
14 }
15 }
16 },
17 "settings": {
18 "currency": "USD",
19 "language": "en",
20 "project_id": 16184,
21 "ui": {
22 "components": {
23 "virtual_currency": {
24 "custom_amount": true
25 }
26 },
27 "desktop": {
28 "virtual_item_list": {
29 "button_with_price": true,
30 "layout": "list"
31 }
32 },
33 "size": "medium"
34 }
35 },
36 "user": {
37 "country": {
38 "allow_modify": true,
39 "value": "US"
40 },
41 "age": 19,
42 "email": {
43 "value": "[email protected]"
44 },
45 "id": {
46 "value": "user_2"
47 },
48 "name": {
49 "value": "John Smith"
50 }
51 }
52}
- Используя токен, полученный на шаге 2, реализуйте открытие платежного интерфейса в новом окне, в Iframe или c помощью Pay Station Embed.
Подарок новому пользователю
- Реализуйте в вашем приложении интерфейс для покупки подписки в подарок со следующими элементами:
- поля для ввода email-адреса получателя подарка;
- поле ввода сообщения от отправителя (опционально);
- опцию для выбора анонимной отправки (опционально);
- элементы для выбора плана подписки (опционально).
- Реализуйте создание нового пользователя и присвоение ему ID в вашей системе.
- Реализуйте создание ссылки для активации аккаунта пользователя.
- Реализуйте получение токена после заполнения данных о подарке, при переходе к оплате. Для этого передайте в метод Создание токена объект
purchase.subscription.giftc параметрами:recipient— ID получателя подписки, созданный на шаге 2.email— email-адрес получателя.redirect_url— URL активации, созданный на шаге 3.
redirect_url не передан в токене, получатель подарка не сможет перейти к подаренной подписке из email-уведомления о подарке.- Дополнительно вы можете передать в объекте
purchase.subscriptionпараметры:gift.anonymous— отправлен ли подарок анонимно. Если значениеtrue, имя отправителя будет скрыто в email-уведомлении. По умолчанию принимает значениеfalse.gift.message— сообщение от отправителя подарка. Будет отправлено в email-уведомлении о подаренной подписке.plan_id— ID плана подписки.
Пример запроса на получение токена:
- json
1{
2 "purchase": {
3 "checkout": {
4 "currency": "USD",
5 "amount": 10
6 },
7 "subscription": {
8 "gift": {
9 "recipient": "test_recipient_v1",
10 "email": "[email protected]",
11 "redirect_url": "https://example.com/",
12 "anonymous": true,
13 "message": "Happy birthday!"
14 }
15 }
16 },
17 "settings": {
18 "currency": "USD",
19 "language": "en",
20 "project_id": 16184,
21 "ui": {
22 "components": {
23 "virtual_currency": {
24 "custom_amount": true
25 }
26 },
27 "desktop": {
28 "virtual_item_list": {
29 "button_with_price": true,
30 "layout": "list"
31 }
32 },
33 "size": "medium"
34 }
35 },
36 "user": {
37 "country": {
38 "allow_modify": true,
39 "value": "US"
40 },
41 "age": 19,
42 "email": {
43 "value": "[email protected]"
44 },
45 "id": {
46 "value": "user_2"
47 },
48 "name": {
49 "value": "John Smith"
50 }
51 }
52}
- Используя токен, полученный на шаге 4, реализуйте открытие платежного интерфейса в новом окне, в Iframe или c помощью Pay Station Embed.
Нашли опечатку или ошибку в тексте? Выделите ее и нажмите Ctrl+Enter.