Работа с платежами в RuStore
Вы можете монетизировать своё приложение через покупки в RuStore. Вот 4 варианта, как это сделать:
- Продать приложение на витрине. Создайте платное приложение, загрузите его на витрину RuStore и получайте выплаты за скачивания.
Учитывайте, что продажа приложения на витрине приносит доход c одного пользователя только один раз. Если вы хотите регулярно получать выплаты за работу своего приложения, рекомендуем рассмотреть добавление подписок и платных товаров.
- Добавить потребляемые товары. Это покупки, которые можно купить более одного раз а, чтобы использовать в приложении. Например, бусты для здоровья, подсказки, кристаллы и монетки в играх.
- Добавить непотребляемые товары. В отличие от потребляемых, их можно купить только один раз и нельзя потратить в приложении или игре. Приобретая такие товары, пользователь становится их владельцем. Это может быть отключение рекламы, скрытый уровень или премиальная техника в играх.
Все виды платных товаров добавляются через систему RuStore Консоль.
С чего начать
Чтобы начать работу с платежами, заполните заявление на подключение монетизации в соответствии с формой регистрации бизнеса:
- Юрлица и ИП, зарегистрированные в РФ.
- Иностранные компании, незарегистрированные в РФ.
- Физические лица со статусом самозаня тых.
Условия приема платежей
- Приложение загружено в RuStore Консоль.
- Приложение прошло модерацию (публиковать приложение необязательно).
Подпись keystore
должна совпадать с подписью, которой было подписано приложение, опубликованное в RuStore Консоль. Убедитесь, что используемый buildType
(пр. debug
) использует такую же подпись, что и опубликованное приложение (пр. release
).
- Пользователь и приложение не должны быть заблокированы в RuStore.
Создание платных приложений или продуктов
Добавьте приложение для продажи на витрине в RuStore Консоль, если вы выбрали этот способ монетизации.
Платные товары и подписки можно создавать как в платных, так и в бесплатных приложениях.
Если вы хотите монетизировать приложение с помощью платных продуктов, создайте товары, которые будут встроены в ваше приложение, через систему RuStore Консоль.
Вы сможете изменить цену товаров в любой момент. После сохранения изменений, товары будут сразу продаваться по новой стоимости.
См. Как создать платный товар. См. Как создать подписку.
Настройка SDK
Встройте в своё приложение Pay SDK, чтобы покупатели могли приобрести товары.
Как работают платежи
На схеме ниже показан примерный алгоритм настройки и подключения платежей, на который вы можете ориентироваться. Учитывайте особенности вашего проекта в работе.
С помощью SDK можно:
- Получить информацию о созданных через RuStore Консоль продуктах.
- Настроить взаимодействие с банковскими приложениями для перенаправления пользователя напрямую на экран оплаты и обратно в ваше приложение
- Инициализировать оплату, чтобы пользователи могли купить добавленные вами товары в приложении.
- Контролировать потребление товаров, чтобы они начислились пользователям без ошибок.
Подробнее про интеграцию см. Настройка SDK платежей
Статусная модель покупки
Статусная модель одностадийного платежа.
Статусная модель двухстадийного платежа.
Статусная модель покупки подписки.
Обработка незавершённых платежей
Подтверждения требуют только покупки, которые были запущены по двухстадийному сценарию оплаты, т.е. с холдированием средств. Такие покупки, после успешного холдирования будут находиться в статусе PurchaseStatus.PAID
.
Для списания средств с карты покупателя требуется подтверждение покупки. Для этого вы должны использовать метод confirmTwoStepPurchase
.
Если после успешного холдирования вы не можете выдать товар пользователю, отмените покупку с помощью метода cancelTwoStepPurchase
.
В случае отмены покупки деньги сразу возвращаются пользователю в полном объеме.
Приём платежей в других магазинах
Пользователи смогут оплачивать покупки в вашем приложении, даже если на их устройствах не установлен RuStore.
Преимущества
Вы сможете увеличить объём выручки и привлечь лояльную аудиторию, поскольку теперь:
- пользователи могут оплачивать покупки, даже если они пока не установили RuStore;
- вы можете продолжать принимать платежи, публикуя приложения на разных площадках.
Особенности покупок без авторизации
- Возможность оплаты без RuStore доступна начиная с версии Pay SDK 9.0.1.
- Оплата происходит без авторизации по VK ID и без обязательного указания e-mail. Пользователь может по желанию указать e-mail, чтобы получить чек после оплаты.
- Способы оплаты не сохраняются между платежами. Доступны способы оплаты: новая карта, СБП и SberPay.
- Вы можете запрашивать список покупок (метод getPurchases) без авторизации. В ответ будут возвращаться платежи, совершённые на текущем устройстве с использованием Pay SDK версии 9.0.1. Это важно учитыва ть при переходе с Billingclient SDK.
- При оплате можно передать внутренний идентификатор пользователя или e-mail, чтобы упростить процедуру возврата платежа. Такой платёж легко найти в консоли RuStore по указанному идентификатору.
- Пользователь, не авторизованный в RuStore, автоматически направляется на сценарий оплаты вне RuStore.
Если у вас нет возможности или желания хранить историю покупок на своём сервере, рекомендуем запретить оформление покупок для неавторизованных пользователей. Для этого выполните следующие шаги:
- Вызвать метод
isRuStoreInstalled
для проверки установки RuStore. - Если RuStore не установлен — происходит перенаправление пользователя на страницу установки RuStore или отображается сообщение об ошибке в интерфейсе.
- Если RuStore установлен — выполняется проверка авторизации пользователя в RuStore (это можно сделать с помощью метода
getUserAuthorizationStatus
). - Если пользователь не авторизован — происходит перенаправление на страницу авторизации.
- Если RuStore установлен и пользователь авторизован — процесс оплаты продолжается.
- Kotlin
- Java
public fun isRuStoreInstalled(context: Context): Boolean
RuStoreUtils.INSTANCE.isRuStoreInstalled(context);
Особенности покупок c авторизацией
- Авторизация по VK ID обязательна при оплате подписки. При желании покупатель может авторизоваться и при оплате товаров внутри приложения.
Перед использованием SDK
Рекомендуем выполнить следующие доработки перед переходом на SDK платежей актуальной версии версии.
-
Настройте аналитику
Если вы опубликовали приложение на разных площадках и хотите разделить потоки платежей по источнику установки приложения, создайте разные варианты сборки на основе build flavors. Это позволит собирать аналитику в зависимости от канала дистрибуции.
Получение уведомлений на сервер
Чтобы получать уведомления о платежах в приложении в режиме онлайн, настройте уведомления на сервер. Это упростит работу: вам не понадобится регулярно запрашивать статус платежа — RuStore сам пришлёт уведомления при любом изменении статуса платежа.
Подключение API
Использование API обезопасит ваше приложение. Его не смогут взломать, чтобы получить товары и подписки бесплатно.
Чтобы работать с RuStore API пройдите авторизацию и получите JWE-токен.
Используйте методы API для:
Валидация покупки на сервере
Если вам необходимо произвести валидацию успешной покупки на сервере RuStore, вы можете использовать invoiceId
из модели ProductPurchaseResult
, возвращаемой при успешной покупке продукта.
val params = ProductPurchaseParams(ProductId("productId"))
RuStorePayClient.instance.getPurchaseInteractor()
.purchase(params = params, preferredPurchaseType = PreferredPurchaseType.TWO_STEP)
.addOnSuccessListener { result ->
val invoceId = result.invoceId.value
yourApi.validate(invoceId)
}
Также можно получить invoiceId
в модели Purchase
. Модель Purchase
можно получить используя метод getPurchases()
или метод getPurchase
.
Тестирование платежей
Проверьте интеграцию SDK и API с помощью тестовых платежей.
Вы можете стимулировать оплату и увеличить выручку, используя механику купонов. Выпустите купоны в RuStore Консоли, распространите их среди своей аудитории и привлеките новых платящих пользователей.
Управление платежами
Как только у вас появятся первые платежи, вы cможете управлять ими в системе RuStore Консоль.