Пример внедрения 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.xml
android: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