Включение отправки уведомлений о платежах
Чтобы получать уведомления об изменении статуса платежей в вашем приложении, настройте, протестируйте и включите отправку через RuStore Консоль.
Если ваше приложение использует Pay SDK, также доступна отправка уведомлений о событиях подписок.
Перед включением уведомлений
-
Настройте сервер для получения уведомлений от RuStore.
-
Убедитесь, что компания не заблокирована, у нее подключена монетизация и в приложении есть возможность совершать покупки.
Настройка отправки уведомлений
- Откройте RuStore Консоль и перейдите в ваше приложение.
- Выберите в меню слева Монетизация > Уведомления на сервер и нажмите Подключить.
- Укажите URL-адрес вашего сервера, который будет принимать уведомления.
Адрес должен начинаться с
https://.
https://www.notification-payment-server.my-company.ru
- Выберите тип уведомлений: платеж, подписка или оба варианта.
Уведомления доступны для:
- Платежей, - BillingClient SDK или Pay SDK
- Подписок - Pay SDK
Уведомления доступны для событий реальных и тестовых подписок.
- Скопируйте и сохраните ключ для расшифровки уведомлений. Его необходимо добавить в механизм симметричного шифрования на вашем сервере.
Настройка типов уведомлений
В блоке Тип уведомлений может подключаться и отключаться отправка уведомлений на сервер о:
- Статусах платежей
- Событиях подписок
Тестирование отправки уведомлений
Перед тем, как включать отправку уведомлений протестируйте конфигурацию сервера. Для этого нажмите Проверить в строке Проверка соединения. Ваш сервер получит тестовое уведомление.
На него не распространяются гарантии доставки. Отправлять тестовое уведомление вы можете не чаще, чем раз в 30 секунд.
Ответ от сервера отобразится в RuStore Консоль. Если он отличается от Уведомление успешно доставлено, нужно проверить конфигурацию сервера и сетевую доступность между RuStore и сервером. В таблице ниже собраны возможные ответы сервера.
| Ответ сервера | Ошибка | Описание |
|---|---|---|
| HTTP-код 4xx или 5xx | Not Found, Unauthorized и другие | Отображаются текстовые коды ошибок согласно RFC 7231. |
| Превышено время запроса | Read timed out | На исполнение запроса от RuStore до Backend вашего сервера есть ограничение по времени, при превышении которого появляется эта ошибка. Лимит составляет 3 секунды, если в сокет ничего не пишется, но не более 5 секунд ожидания ответа в целом. |
| Соединение сброшено BE разработчика | Connection reset | Backend вашего сервера сбросил соединение. |
| Проблемы с SSL | Unsupported or unrecognized SSL message | Проблемы с SSL, проверьте сертификат сервера. |
| Name or service not known | Указан несуществующий адрес сервера. |
Включение отправки уведомлений
Как только вы убедитесь, что сервер корректно получает уведомления и отправляет подтверждения о доставке, активируйте Уведомлять о реальных платежах. Сервис начнёт отправлять уведомления в режиме реального времени в соответствии с выбранным типом уведомлений.
- Платежи
- Подписки
Уведомления отправляются в ситуациях, когда у платежа изменяется статус.
| Ситуация | Изменение статуса платежа |
|---|---|
| Создан новый платёж (предположение) | Статус платежа становится CREATED |
| Пользователь выбрал способ оплаты в приложении, платёж исполняется | Статус платежа появляется/меняется на EXECUTED |
| Пользователь отменил платёж | Статус платежа меняется на CANCELLED |
| Средства пользователя зарезервированы, счёт ожидает подтверждения (только для покупки потребляемых продуктов) | Статус платежа меняется на PAID |
| Оп лата прошла успешно | Статус платежа меняется на CONFIRMED |
| Средства по счёту возвращены покупателю | Статус платежа меняется на REFUNDED |
| Произошла отмена резервирования средств | Статус платежа меняется на REVERSED |
| Произошёл отказ при попытке оплаты (недостаточно средств, невалидный CVC и др.) | Статус платежа меняется на REJECTED |
| Истекло время, отведённое на оплату | Статус платежа меняется на EXPIRED |
| Инициирован возврат, запрос отправлен в эквайер | Статус платежа меняется на REFUNDING |
Уведомления отправляются в ситуациях, когда у подписки происходят изменения (активация, продление, проблемы с оплатой или закрытие).
| Ситуация | Изменение статуса подписки и событие |
|---|---|
| Пользователь оформил подписку, первый платёж прошёл успешно | В уведомлении subscription_event_type = ACTIVATED, статус подписки становится ACTIVE. Происходит изменение периода подписки. |
| Подписка успешно продлена, рекуррентный платёж прошёл | В уведомлении subscription_event_type = RENEWED, статус подписки остаётся ACTIVE. В определенных случаях происходит изменение периода подписки. |
| Пользователь отключил автопродление | В уведомлении subscription_event_type = CANCELLED, подписка дорабатывает оплаченный период, затем переходит в финальный статус (обычно CLOSED). |
| Пользователь возобновил автопродление | В уведомлении subscription_event_type = RESUMED, статус подписки становится или остаётся ACTIVE. |
| Очередная попытка списания не удалась, подписка не закрыта | В уведомлении subscription_event_type = PAYMENT_FAILED, подписка переходит в льготный период GRACE или период ожидания HOLD (статус может стать PAUSED). |
| Подписка закрыта после отключения автопродления или из-за проблем с оплатой | В уведомлении subscription_event_type = CLOSED, статус подписки переходит в финальный CLOSED или TERMINATED. |
Если в ответ на уведомление ваш сервер присылает ошибку, RuStore попытается отправить уведомление повторно, см. Гарантии доставки уведомлений.
Что дальше
Сразу после включения: убедитесь, что информация из payload уведомления расшифровывается корректно.
Именно в ней хранятся данные о приложении, купленном продукте, а также новом и предыдущем статусах.
В дальнейшем:
- При сбоях или технических работах на сервере вы можете временно отключить отправку уведомлений.
- Если URL-адрес для получения уведомлений изменился, измените его в RuStore Консоль.
- Если ключ шифрования оказался утерян или скомпрометирован, получите новый ключ и обновите его на своём сервере.