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=“singleTask”

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

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

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

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

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

    Описание

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

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