Push-уведомления
Как это работает

В Web Shop можно настроить push-уведомления — персональные или массовые сообщения, которые пользователи получают прямо в браузере. Push-уведомления позволяют сообщать пользователям о новых товарах, акциях и специальных предложениях.
Чтобы отправить пользователю уведомление — например, после поражения в бою или при нехватке ресурсов, на стороне сервера игры вызовите метод API Xsolla для отправки уведомлений.
После нажатия на уведомление пользователь переходит в Web Shop, где может приобрести необходимые товары.
Push-уведомления настраиваются в конструкторе сайтов Xsolla и работают только для опубликованных Web Shop.
Xsolla не отслеживает игровые события. Вы можете сами определить моменты, в которые сервер игры вызывает метод API для отправки уведомления, например:
| Игровое событие | Текст push-уведомления |
|---|---|
| Первый вход в игру за день, неделю или месяц. | Добро пожаловать обратно! Загляни в веб-магазин за своим подарком. |
| Поражение в бою. | Не сдавайся! Купи усиления для героя и возьми реванш! |
| Энергия или валюта закончились. | Энергия на нуле? Пополни ее в веб-магазине и продолжай игру! |
| Разблокирован новый контент. | Новый уровень открыт! Купи усиления в веб-магазине, чтобы пройти его легче. |
| Несколько неудачных попыток подряд. | Сложный босс? В веб-магазине тебя ждет набор оружия, который поможет одержать победу. |

Сценарий взаимодействия
- Пользователь открывает Web Shop в браузере или через установленное PWA и видит баннер с предложением подписаться на уведомления.
- Пользователь нажимает Подписаться и разрешает отправку уведомлений в системном окне браузера.
Логика подписки при включенной опции Auto-request permission
Если в настройках сайта включена опция Auto-request permission, Web Shop при открытии запрашивает разрешение на отправку уведомлений без показа баннера подписки. Если пользователь уже предоставил разрешение ранее, подписка выполняется автоматически. Если запрос не удалось выполнить (например, браузер заблокировал его или пользователь отказал в разрешении), отображается баннер подписки.
flowchart LR
A[User opens Web Shop] --> B{Permission already granted?}
B -- Yes --> C[Automatic subscription]
B -- No --> D{Can the browser show the system prompt?}
D -- Yes --> E[System prompt]
D -- No --> F[Subscribe banner]
F --> E
E -- Allow --> G[Subscribed]
E -- Block --> H[Not subscribed]
Web Shop регистрирует пользователя как подписчика в системе Xsolla. Подписка привязывается к браузеру или установленному PWA на устройстве пользователя. От статуса авторизации зависит, какие уведомления можно отправлять пользователю:
- если пользователь авторизован в Web Shop, с подпиской связывается его ID — такому пользователю можно отправлять персональные уведомления;
- если пользователь не авторизован, ему можно отправлять только массовые уведомления; после авторизации подписка автоматически связывается с ID пользователя.
Сервер игры вызывает метод API Xsolla для отправки уведомлений.
Пользователь получает push-уведомление.
Пользователь нажимает на уведомление и переходит в Web Shop — на страницу из параметра
data.urlили на главную страницу, если параметр не передан. Если у пользователя есть активная сессия в Web Shop, он остается авторизованным.
sequenceDiagram
participant U as User
participant WS as Web Shop
participant G as Game
participant X as Xsolla
note over U,X: Subscription
U->>WS: Opens the site / PWA
WS->>U: Displays the subscription banner
U->>WS: Subscribes and allows notifications
WS->>X: Registers the subscriber (User ID, browser / PWA)
X-->>WS: Confirms the subscription
note over U,X: Sending a notification
G->>X: Calls POST /messages/push/send
X-->>G: Returns message_id
X->>U: Sends the push notification
U->>WS: Clicks the notification, follows data.url
WS->>U: Displays store offers
Как настроить
- В проекте в Личном кабинете перейдите в раздел Каналы продаж > Веб-сайты.
- В панели нужного сайта нажмите Открыть Site Builder.
- Перейдите в раздел Push notifications.
- Активируйте переключатель Enable notifications.
- Скопируйте значения из полей Application ID, Client ID и Client secret key — они понадобятся для отправки запросов API с сервера игры. Параметры создаются один раз при первой активации переключателя Enable notifications и используются для всего проекта: если в проекте несколько сайтов, для всех используются одни и те же значения.
- При необходимости настройте баннер подписки: измените заголовок, описание, иконку и текст кнопки.
- Чтобы сайт сам запрашивал у пользователя разрешение на отправку push-уведомлений при открытии, активируйте переключатель Auto-request permission (опционально). Если переключатель неактивен, разрешение запрашивается только после нажатия пользователем кнопки Подписаться.
- Чтобы применить изменения, опубликуйте сайт.

- На сервере игры реализуйте логику отправки push-уведомлений. Сервер игры должен вызвать метод API для отправки уведомлений и передать в запросе ID пользователя.
Отправка уведомлений
Xsolla не отправляет уведомления автоматически — инициатором отправки всегда выступает ваш проект. Вызывайте соответствующий метод API в момент, когда нужно уведомить пользователей (например, при старте акции, обновлении статуса заказа и т.д.).
Базовый URL: https://messaging-platform.xsolla.com
Аутентификация
Запросы аутентифицируются по протоколу OAuth 2.0. Получите серверный JWT с помощью метода Generate JWT, передав параметры:
grant_type— тип получения JWT, передайте значениеclient_credentials;client_id— значение поля Client ID из настроек раздела Push notifications;client_secret— значение поля Client secret key из настроек раздела Push notifications.
Полученный токен передается в заголовке Authorization: Bearer <token>.
Отправка уведомления пользователю
Отправляет персональное push-уведомление пользователю по его ID. Уведомление доставляется во все браузеры и установленные PWA, где пользователь подписался на уведомления.
HTTP-запрос
POST https://messaging-platform.xsolla.com/api/v1/messages/push/send
Заголовки запроса
| Заголовок | Обязательный | Описание |
|---|---|---|
| Authorization | Да | Bearer <token> |
| Idempotency-Key | Да | Уникальный ключ запроса. Защищает от повторной отправки одного и того же уведомления. |
| Content-Type | Да | application/json |
Параметры запроса
| Параметр | Тип | Описание |
|---|---|---|
app_id | string | ID приложения на стороне Xsolla из настроек раздела Push notifications. Обязательный. |
identity | object | Данные получателя уведомления. |
external_user_id | string | ID пользователя. Обязательный. |
title | string | Заголовок уведомления. Обязательный. |
body | string | Текст уведомления. Обязательный. |
image_url | string | URL-адрес изображения, которое отображается в уведомлении. |
data | object | Дополнительные данные уведомления. |
url | string | URL-адрес страницы, которая откроется при нажатии на уведомление. Если параметр не передан, откроется главная страница Web Shop. |
Параметры ответа
| Параметр | Тип | Описание |
|---|---|---|
message_ids | массив строк | Список ID отправленных сообщений в формате UUID — по одному для каждого браузера или установленного PWA, где пользователь подписан на уведомления. |
Пример запроса
- json
1{
2 "notification_type": "user_validation",
3 "settings": {
4 "project_id": 123456,
5 "merchant_id": 789012
6 },
7 "user": {
8 "id": "11111111-1111-1111-1111-111111111111"
9 }
10}
Пример ответа
- json
1{
2 "message_ids": [
3"aa8ef5c2-front-4a3b-9d2e-example00001",
4"bb9fa6d3-front-4b4c-8e3f-example00002"
5 ]
6}
Отправка уведомления всем пользователям
Отправляет push-уведомление всем или выбранным подписавшимся пользователям. Уведомление доставляется во все браузеры и установленные PWA, где пользователь подписался на уведомления.
HTTP-запрос
POST https://messaging-platform.xsolla.com/api/v2/messages/push/send_batch
Заголовки запроса
| Заголовок | Обязательный | Описание |
|---|---|---|
| Authorization | Да | Bearer <token> |
| Idempotency-Key | Да | Уникальный ключ запроса. Защищает от повторной отправки одного и того же уведомления. |
| Content-Type | Да | application/json |
Параметры запроса
| Параметр | Тип | Описание |
|---|---|---|
app_id | string | ID приложения на стороне Xsolla из настроек раздела Push notifications. Обязательный. |
recipients | object | Определяет получателей уведомления. |
type | string | Тип получателя. Возможные значения: all — все подписчики; external_user_id — выбранные пользователи. |
external_user_id | массив строк | Массив ID пользователей. Передается, если в параметре type указано значение external_user_id. Обязательный. |
title | string | Заголовок уведомления. Обязательный. |
body | string | Текст уведомления. Обязательный. |
image_url | string | URL-адрес изображения, которое отображается в уведомлении. |
data | object | Дополнительные данные уведомления. |
url | string | URL-адрес страницы, которая откроется при нажатии на уведомление. Если параметр не передан, откроется главная страница Web Shop. |
Параметры ответа
Пример запроса
Пример ответа
Нашли опечатку или ошибку в тексте? Выделите ее и нажмите Ctrl+Enter.