Перейти к основному содержимому

Работа с платежами в RuStore

Вы можете монетизировать своё приложение через покупки в RuStore. Вот 4 варианта, как это сделать:

  • Продать приложение на витрине. Создайте платное приложение, загрузите его на витрину RuStore и получайте выплаты за скачивания.
подсказка

Учитывайте, что продажа приложения на витрине приносит доход c одного пользователя только один раз. Если вы хотите регулярно получать выплаты за работу своего приложения, рекомендуем рассмотреть добавление подписок и платных товаров.

  • Добавить потребляемые товары. Это покупки, которые можно купить более одного раза, чтобы использовать в приложении. Например, бусты для здоровья, подсказки, кристаллы и монетки в играх.
  • Добавить непотребляемые товары. В отличие от потребляемых, их можно купить только один раз и нельзя потратить в приложении или игре. Приобретая такие товары, пользователь становится их владельцем. Это может быть отключение рекламы, скрытый уровень или премиальная техника в играх.

Все виды платных товаров добавляются через систему RuStore Консоль.

С чего начать

Чтобы начать работу с платежами, заполните заявление на подключение монетизации в соответствии с формой регистрации бизнеса:

Условия приема платежей

  • Приложение загружено в RuStore Консоль.
  • Приложение прошло модерацию (публиковать приложение необязательно).
ВАЖНО

Подпись keystore должна совпадать с подписью, которой было подписано приложение, опубликованное в RuStore Консоль. Убедитесь, что используемый buildType (пр. debug) использует такую же подпись, что и опубликованное приложение (пр. release).

  • Пользователь и приложение не должны быть заблокированы в RuStore.

Создание платных приложений или продуктов

Добавьте приложение для продажи на витрине в RuStore Консоль, если вы выбрали этот способ монетизации.

подсказка

Платные товары и подписки можно создавать как в платных, так и в бесплатных приложениях.

Если вы хотите монетизировать приложение с помощью платных продуктов, создайте товары, которые будут встроены в ваше приложение, через систему RuStore Консоль.

к сведению

Вы сможете изменить цену товаров в любой момент. После сохранения изменений, товары будут сразу продаваться по новой стоимости.

См. Как создать платный товар. См. Как создать подписку.

Настройка SDK

Встройте в своё приложение Pay SDK, чтобы покупатели могли приобрести товары.

Как работают платежи

предупреждение

На схеме ниже показан примерный алгоритм настройки и подключения платежей, на который вы можете ориентироваться. Учитывайте особенности вашего проекта в работе.

С помощью SDK можно:

Подробнее про интеграцию см. Настройка 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.

Если у вас нет возможности или желания хранить историю покупок на своём сервере, рекомендуем запретить оформление покупок для неавторизованных пользователей. Для этого выполните следующие шаги:

  1. Вызвать метод isRuStoreInstalled для проверки установки RuStore.
  2. Если RuStore не установлен — происходит перенаправление пользователя на страницу установки RuStore или отображается сообщение об ошибке в интерфейсе.
  3. Если RuStore установлен — выполняется проверка авторизации пользователя в RuStore (это можно сделать с помощью метода getUserAuthorizationStatus).
  4. Если пользователь не авторизован — происходит перенаправление на страницу авторизации.
  5. Если RuStore установлен и пользователь авторизован — процесс оплаты продолжается.
public fun isRuStoreInstalled(context: Context): Boolean

Особенности покупок c авторизацией

  • Авторизация по VK ID обязательна при оплате подписки. При желании покупатель может авторизоваться и при оплате товаров внутри приложения.

Перед использованием SDK

Рекомендуем выполнить следующие доработки перед переходом на SDK платежей актуальной версии версии.

  • Настройте аналитику

    Если вы опубликовали приложение на разных площадках и хотите разделить потоки платежей по источнику установки приложения, создайте разные варианты сборки на основе build flavors. Это позволит собирать аналитику в зависимости от канала дистрибуции.

Получение уведомлений на сервер

Чтобы получать уведомления о платежах в приложении в режиме онлайн, настройте уведомления на сервер. Это упростит работу: вам не понадобится регулярно запрашивать статус платежа — RuStore сам пришлёт уведомления при любом изменении статуса платежа.

Подключение API

Использование API обезопасит ваше приложение. Его не смогут взломать, чтобы получить товары и подписки бесплатно.

Чтобы работать с RuStore API пройдите авторизацию и получите JWE-токен.

Используйте методы API для:

См. Подключение API платежей

Валидация покупки на сервере

Если вам необходимо произвести валидацию успешной покупки на сервере RuStore, вы можете использовать invoiceId из модели ProductPurchaseResult, возвращаемой при успешной покупке продукта.

Получение invoiceId и productId из результата покупки
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 Консоль.

Остались вопросы?