Пример внедрения 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) } } override fun onNewIntent(intent: Intent) { super.onNewIntent(intent) payClient.getIntentInteractor().proceedIntent(intent) } }
Для восстановления состояния вашего приложения при возврате с deeplink добавьте в
AndroidManifest.xml
android:launchMode=“singleTask”<activity android:name=".MainActivity" android:launchMode="singleTask">
Условия распространения
Данное программное обеспечение, включая исходные коды, бинарные библиотеки и другие файлы распространяется под лицензией MIT. Информация о лицензировании доступна в документе MIT-LICENSE.txt
Техническая поддержка
Если появились вопросы по интеграции SDK платежей, обратитесь по [ссылке](https://www.rustore.ru/help/sdk/pay
Описание
Пример интеграции SDK Pay в мобильное приложение на Kotlin