README.MD

Пример внедрения SDK платежей RuStore

Документация SDK платежей

English version of README.md

Оглавление

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

Для работы проведения платежей необходимо соблюдение следующих условий.

  1. Пользователь авторизован в приложении RuStore.

  2. Пользователь и приложение не должны быть заблокированы в RuStore.

  3. Для приложения включена возможность покупок в системе RuStore Консоль.

Сервис имеет некоторые ограничения на работу за пределами РФ.

Подготовка требуемых параметров

Для корректной настройки примера приложения вам следует подготовить:

  1. consoleApplicationId - код приложения из консоли разработчика RuStore (пример: https://console.rustore.ru/apps/123456), тут consoleApplicationId = 123456

  2. applicationId - из приложения, которое вы публиковали в консоль RuStore, находится в файле build.gradle вашего проекта

     android {
       defaultConfig {
       applicationId = "ru.rustore.sdk.billingexample" 
       }
     }
    
  3. availableProductIds - подписки и разовые покупки доступные в вашем приложении

  4. release.keystore - подпись, которой было подписано приложение, опубликованное в консоль RuStore.

  5. release.properties - в этом файле должны быть указаны параметры подписи, которой было подписано приложение, опубликованное в консоль RuStore. Как работать с ключами подписи APK-файлов

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

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

  1. Указать consoleApplicationId своего приложения в RuStoreBillingClientFactory.create():

    val billingClient = RuStoreBillingClientFactory.create(
       context = context,
       consoleApplicationId = "111111", // Заменить на свой id (https://console.rustore.ru/apps/111111)
    ) 
    
  2. Замените applicationId, в файле build.gradle, на applicationId apk-файла, который вы публиковали в консоль RuStore:

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

  4. В BillingExampleViewModel в переменной availableProductIds перечислите подписки и разовые продукты доступные в вашем приложении:

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

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

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

Нажатие на кнопку “Начать покупки” выполняет проверку доступности платежей,

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

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

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

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

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

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

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

Обработка deeplink

Данный пункт не относится к настройке примера тестового приложения. Он информирует о том, как правильно настроить deeplink в вашем приложении

deeplinkScheme — схема deeplink, необходимая для возврата в ваше приложение после оплаты через стороннее приложение (например, SberPay или СБП). SDK генерирует свой хост к данной схеме.

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

  1. В файле 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>
    
  2. Указать deeplinkScheme своего приложения в RuStoreBillingClientFactory.create():

    val billingClient = RuStoreBillingClientFactory.create(
       context = context,
       deeplinkScheme = "rustoresdkexamplescheme", // Укажите URL-адрес для использования deeplink. Должен совпадать с <data android:scheme="" />
    )
    
  3. Далее в 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)
       }
    } 
    
  4. Для восстановления состояния вашего приложения при возврате с 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

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