Пример внедрения SDK платежей RuStore
Документация SDK платежей
English version of README.md
Оглавление
- Условия работы платежей
- Подготовка требуемых параметров
- Настройка примера приложения
- Сценарий использования
- Обработка deeplink
- Условия распространения
- Техническая поддержка
Условия работы платежей
Для работы проведения платежей необходимо соблюдение следующих условий.
-
Пользователь авторизован в приложении RuStore.
-
Пользователь и приложение не должны быть заблокированы в RuStore.
-
Для приложения включена возможность покупок в системе RuStore Консоль.
Сервис имеет некоторые ограничения на работу за пределами РФ.
Подготовка требуемых параметров
Для корректной настройки примера приложения вам следует подготовить:
-
consoleApplicationId- код приложения из консоли разработчика RuStore (пример: https://console.rustore.ru/apps/123456), тутconsoleApplicationId= 123456 -
applicationId- из приложения, которое вы публиковали в консоль RuStore, находится в файле build.gradle вашего проектаandroid { defaultConfig { applicationId = "ru.rustore.sdk.billingexample" } } -
availableProductIds- подписки и разовые покупки доступные в вашем приложении -
release.keystore- подпись, которой было подписано приложение, опубликованное в консоль RuStore. -
release.properties- в этом файле должны быть указаны параметры подписи, которой было подписано приложение, опубликованное в консоль RuStore. Как работать с ключами подписи APK-файлов
Настройка примера приложения
Для проверки работы приложения вы можете воспользоваться функционалом тестовых платежей.
-
Указать
consoleApplicationIdсвоего приложения вRuStoreBillingClientFactory.create():val billingClient = RuStoreBillingClientFactory.create( context = context, consoleApplicationId = "111111", // Заменить на свой id (https://console.rustore.ru/apps/111111) ) -
Замените
applicationId, в файле build.gradle, на applicationId apk-файла, который вы публиковали в консоль RuStore:android { defaultConfig { applicationId = "ru.rustore.sdk.billingexample" // Зачастую в buildTypes приписывается .debug } } -
В директории
certзамените сертификатrelease.keystore- сертификатом своего приложения, так же вrelease.propertiesвыполните настройку параметровkey_alias,key_password,store_password. Подписьrelease.keystoreдолжна совпадать с подписью, которой было подписано приложение, опубликованное в консоль RuStore. Убедитесь, что используемыйbuildType(пр. debug) использует такую же подпись, что и опубликованное приложение (пр. release). -
В
BillingExampleViewModelв переменнойavailableProductIdsперечислите подписки и разовые продукты доступные в вашем приложении:private val availableProductIds = listOf( "productId1", "productId2", "productId3" ) -
Запустите проект и проверьте работу приложения
Сценарий использования
Проверка доступности работы с платежами
Нажатие на кнопку “Начать покупки” выполняет проверку доступности платежей,

Получение списка продуктов
При открытии экрана BillingExampleFragment выполняется получение и отображение списка продуктов

Покупка продукта
Нажатие на айтем выполняет запуск сценария покупки продукта с отображением шторки выбора метода оплаты. Далее если приходит ответ PaymentResult.Success -> выполняется подтверждение покупки, если приходит ответ PaymentResult.Failure -> выполняется отмена покупки.

Обработка deeplink
Данный пункт не относится к настройке примера тестового приложения. Он информирует о том, как правильно настроить deeplink в вашем приложении
deeplinkScheme — схема deeplink, необходимая для возврата в ваше приложение после оплаты через стороннее приложение (например, SberPay или СБП). SDK генерирует свой хост к данной схеме.
Для корректной работы оплаты через сторонние приложения (СБП или SberPay), вам необходимо правильно реализовать обработку deeplink. Для этого необходимо указать в AndroidManifest.xml intent-filter с scheme вашего проекта.
-
В файле
AndroidManifest.xmlв параметре data android:scheme укажите URL-адрес для использования deeplink (должен совпадать с параметромdeeplinkSchemeиз пункта 1)<activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <data android:scheme="rustoresdkexamplescheme" /> // Заменить на свой deeplink </intent-filter> </activity> -
Указать
deeplinkSchemeсвоего приложения вRuStoreBillingClientFactory.create():val billingClient = RuStoreBillingClientFactory.create( context = context, deeplinkScheme = "rustoresdkexamplescheme", // Укажите URL-адрес для использования deeplink. Должен совпадать с <data android:scheme="" /> ) -
Далее в Activity, в которую необходимо вернуться после совершения оплаты (ваша страница магазина), нужно добавить:
class MainActivity: AppCompatActivity() { // Previously created with RuStoreBillingClientFactory.create() private val billingClient: RuStoreBillingClient = YourDependencyInjection.getBillingClient() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) if (savedInstanceState == null) { billingClient.onNewIntent(intent) } } override fun onNewIntent(intent: Intent?) { super.onNewIntent(intent) billingClient.onNewIntent(intent) } } -
Для восстановления состояния вашего приложения при возврате с deeplink добавьте в
AndroidManifest.xmlandroid:launchMode=“singleTask”<activity android:name=".MainActivity" android:launchMode="singleTask" android:exported="true" android:screenOrientation="portrait" android:windowSoftInputMode="adjustResize">
Условия распространения
Данное программное обеспечение, включая исходные коды, бинарные библиотеки и другие файлы распространяется под лицензией MIT. Информация о лицензировании доступна в документе MIT-LICENSE.txt
Техническая поддержка
Если появились вопросы по интеграции SDK платежей, обратитесь по ссылке.
Описание
Пример внедрения SDK платежей RuStore