Пример внедрения RuStore SDK Pay
Документация SDK Pay
Оглавление
- Условия работы платежей
- Подготовка требуемых параметров
- Настройка примера приложения
- Сценарий использования
- Обработка deeplink
- Условия распространения
- Техническая поддержка
Условия работы платежей
Для работы проведения платежей необходимо соблюдение следующих условий.
1. Пользователь и приложение не должны быть заблокированы в RuStore.
2. Для приложения включена возможность покупок в системе RuStore Консоль.
Сервис имеет некоторые ограничения на работу за пределами РФ.
Подготовка требуемых параметров
Для корректной настройки примера приложения вам следует подготовить:
1. console_app_id_value - код приложения из консоли разработчика RuStore (пример: https://console.rustore.ru/apps/123456), тут console_app_id_value = 123456
2. applicationId - из приложения, которое вы публиковали в консоль RuStore, находится в файле build.gradle вашего проекта
android {
defaultConfig {
applicationId = "ru.rustore.sdkpayexample"
}
}
productsIds- разовые покупки, доступные в вашем приложенииrelease.keystore- подпись, которой было подписано приложение, опубликованное в консоль RuStore.release.properties- в этом файле должны быть указаны параметры подписи, которой было подписано приложение, опубликованное в консоль RuStore. Как работать с ключами подписи APK-файлов
Настройка примера приложения
Для проверки работы приложения вы можете воспользоваться функционалом тестовых платежей.
-
В AndroidManifest.xml добавить атрибут
meta-dataс названиемconsole_app_id_value. В качестве значения (value) указать идентификатор своего приложения из консоли RuStore:<meta-data android:name="console_app_id_value" android:value="id_вашего_приложения" /> -
Замените
applicationId, в файле build.gradle, на applicationId apk-файла, который вы публиковали в консоль RuStore:android { defaultConfig { applicationId = "ru.rustore.sdkpayexample" } } - В директории
certзамените сертификатrelease.keystore- сертификатом своего приложения, так же вrelease.propertiesвыполните настройку параметровkey_alias,key_password,store_password. Подписьrelease.keystoreдолжна совпадать с подписью, которой было подписано приложение, опубликованное в консоль RuStore. Убедитесь, что используемыйbuildType(например, debug) использует такую же подпись, что и опубликованное приложение (например, release). -
В
ProductsViewModelв методеloadProducts()дляproductsRepositoryв аргументеproductsIdsперечислите идентификаторы продуктов, которые доступны в вашем приложении:productsRepository.get(listOf("productId1", "productId2", "productId3")) - Запустите проект и проверьте работу приложения
Сценарий использования
Проверка доступности работы с платежами
На Главном экране есть текстовое поле, которое отображает авторизован пользователь или нет. Для этого выполняется проверка доступности работы с платежами).

Получение списка продуктов
Нажатие на кнопку “Начать покупки” выполняет переход на экран Продукты (ProductsScreen), на котором отображается список продуктов, полученный по идентификаторам, переданным в productsRepository.

Покупка продукта
Нажатие на элемент списка продуктов выполняет отображение диалога с предложением выбрать один из трёх сценариев покупки.

После выбора сценария покупки запускается шторка SDK Pay, на которой отображаются информация о продукте и варианты оплаты.

Если покупка совершена успешно, то далее выполняется подтверждение покупки. Покупку также можно отменить в зависимости от требуемого сценария конечного приложения.
ВНИМАНИЕ
Подтверждение или отмена покупки необходима только для покупок в 2 стадии (см. Покупка продукта, раздел Двухстадийная оплата (с холдированием средств)). В примере для упрощения подтверждение выполнено для любой покупки (см. код ProductsViewModel#updatePaidPurchases()).
Получение списка покупок
На Главном экране (MainScreen) при нажатии на кнопку “Посмотреть покупки” выполняется переход на экран Покупки. На нём отображается список покупок.

Обработка deeplink
Приложение-пример уже настроено для работы с deeplink. Это требуется для корректной обработки оплаты через сторонние приложения (например, СБП). Для этого необходимо указать в AndroidManifest.xml intent-filter с scheme вашего проекта.
-
В файле
AndroidManifest.xmlв параметре data android:scheme укажите URL-адрес для использования deeplink (должен совпадать с атрибутомsdk_pay_scheme_valueиз пункта 2)<activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="rustore.sdk.pay.example.scheme" /> // Заменить на свой deeplink </intent-filter> </activity> -
Указать
deeplinkSchemeсвоего приложения вAndroidManifest.xml, в атрибуте meta-data, параметрsdk_pay_scheme_value:<meta-data android:name="sdk_pay_scheme_value" android:value="rustore.sdk.pay.example.scheme" /> -
Далее в Activity, в которую необходимо вернуться после совершения оплаты (ваша страница магазина), нужно добавить:
class MainActivity: AppCompatActivity() { private val payClient: RuStorePayClient = YourDependencyInjection.getPayClient() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) if (savedInstanceState == null) { payClient.getIntentInteractor().proceedIntent(intent, sdkTheme = SdkTheme.LIGHT) // Опциональная тема } } override fun onNewIntent(intent: Intent) { super.onNewIntent(intent) payClient.getIntentInteractor().proceedIntent(intent, sdkTheme = SdkTheme.LIGHT) // Опциональная тема } } -
Для восстановления состояния вашего приложения при возврате с deeplink добавьте в
AndroidManifest.xmlandroid:launchMode=“singleTop”<activity android:name=".MainActivity" android:launchMode="singleTop">
Условия распространения
Данное программное обеспечение, включая исходные коды, бинарные библиотеки и другие файлы распространяется под лицензией MIT. Информация о лицензировании доступна в документе MIT-LICENSE.txt
Техническая поддержка
Если появились вопросы по интеграции SDK платежей, обратитесь по [ссылке](https://www.rustore.ru/help/sdk/pay
Описание
Пример интеграции SDK Pay в мобильное приложение на Kotlin