README.md

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

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

English version of README.md

Оглавление

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

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

  1. На устройстве пользователя установлено приложение RuStore.

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

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

  4. Для приложения включена возможность покупок в системе 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 с ошибкой