README.md

Пример внедрения RuStore SDK Pay

Документация SDK Pay

Оглавление

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

Для работы проведения платежей необходимо соблюдение следующих условий.
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"
    }
 }
  1. productsIds - разовые покупки, доступные в вашем приложении
  2. release.keystore - подпись, которой было подписано приложение, опубликованное в консоль RuStore.
  3. release.properties - в этом файле должны быть указаны параметры подписи, которой было подписано приложение, опубликованное в консоль RuStore. Как работать с ключами подписи APK-файлов

Настройка примера приложения

Для проверки работы приложения вы можете воспользоваться функционалом тестовых платежей.

  1. В AndroidManifest.xml добавить атрибут meta-data с названием console_app_id_value. В качестве значения (value) указать идентификатор своего приложения из консоли RuStore:

    <meta-data
         android:name="console_app_id_value"
         android:value="id_вашего_приложения" />
    
  2. Замените applicationId, в файле build.gradle, на applicationId apk-файла, который вы публиковали в консоль RuStore:

    android {
       defaultConfig {
           applicationId = "ru.rustore.sdkpayexample"
       }
    }
    
  3. В директории cert замените сертификат release.keystore - сертификатом своего приложения, так же в release.properties выполните настройку параметров key_alias, key_password, store_password. Подпись release.keystore должна совпадать с подписью, которой было подписано приложение, опубликованное в консоль RuStore. Убедитесь, что используемый buildType (например, debug) использует такую же подпись, что и опубликованное приложение (например, release).
  4. В ProductsViewModel в методе loadProducts() для productsRepository в аргументе productsIds перечислите идентификаторы продуктов, которые доступны в вашем приложении:

    productsRepository.get(listOf("productId1", "productId2", "productId3"))
    
  5. Запустите проект и проверьте работу приложения

Сценарий использования

Проверка доступности работы с платежами

На Главном экране есть текстовое поле, которое отображает авторизован пользователь или нет. Для этого выполняется проверка доступности работы с платежами).

Проверка доступности работы с платежами

Получение списка продуктов

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

Получение списка продуктов

Покупка продукта

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

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

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

Получение списка покупок

На Главном экране (MainScreen) при нажатии на кнопку “Посмотреть покупки” выполняется переход на экран Покупки. На нём отображается список покупок.

Список покупок

Обработка deeplink

Приложение-пример уже настроено для работы с deeplink. Это требуется для корректной обработки оплаты через сторонние приложения (например, СБП). Для этого необходимо указать в AndroidManifest.xml intent-filter с scheme вашего проекта.

  1. В файле 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>
    
  2. Указать deeplinkScheme своего приложения в AndroidManifest.xml, в атрибуте meta-data, параметр sdk_pay_scheme_value:

    <meta-data
             android:name="sdk_pay_scheme_value"
             android:value="rustore.sdk.pay.example.scheme" />
    
  3. Далее в 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)
       }
    }
    
  4. Для восстановления состояния вашего приложения при возврате с deeplink добавьте в AndroidManifest.xml android:launchMode=“singleTop”

    <activity
      android:name=".MainActivity"
      android:launchMode="singleTop">
    

Условия распространения

Данное программное обеспечение, включая исходные коды, бинарные библиотеки и другие файлы распространяется под лицензией MIT. Информация о лицензировании доступна в документе MIT-LICENSE.txt

Техническая поддержка

Если появились вопросы по интеграции SDK платежей, обратитесь по [ссылке](https://www.rustore.ru/help/sdk/pay

Описание

Пример интеграции SDK Pay в мобильное приложение на Kotlin

Конвейеры
0 успешных
0 с ошибкой