Как перейти на Pay SDK
В принципах функционирования Pay SDK есть отличия от billingClient SDK.
В этом разделе собран список ключевых изменений по сравнению с billingClient SDK, на которые важно обратить внимание. Все подробности с примерами кода вы можете найти в документации для конкретной версии Pay SDK.
Список зависимостей
У Pay SDK сократился список зависимостей.
Подключение в проект
При подключения зависимости учитывайте отличие в названии SDK (pay вместо billingclient):
- BillingClient SDK:
dependencies {
implementation(platform("ru.rustore.sdk:bom:2025.02.01"))
implementation("ru.rustore.sdk:billingclient")
}
- Pay SDK:
dependencies {
implementation(platform("ru.rustore.sdk:bom:2025.11.01"))
implementation("ru.rustore.sdk:pay")
}
Инициализация
Изменился способ указания consoleApplicationId при инициализации:
- BillingClient SDK: для инициализации необходимо создать экземпляр
RuStoreBillingClientс помощью методаRuStoreBillingClientFactory.create()в коде вашего приложения и передать тудаconsoleApplicationId. - Pay SDK: в файле AndroidManifest.xml необходимо добавить параметр
console_app_id_value. ПараметрыthemeProvider,externalPaymentLoggerFactoryиdebugLogsне указываются.
Обработка deeplink
- Для указания deeplink-схемы в BillingClient SDK используется метод
RustoreBillingClientFactory.create(). - В Pay SDK для указания deeplink-схемы используется файл
AndroidManifest.xml, где указываетсяsdk_pay_scheme_value. Для обработки deeplink добавлен публичный интеракторIntentInteractor.
Обработка deeplink в Activity (Kotlin)
class YourBillingActivity: AppCompatActivity() {
private val intentInteractor: IntentInteractor by lazy {
RuStorePayClient.instance.getIntentInteractor()
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if (savedInstanceState == null) {
// Определение темы платежной шторки (LIGHT или DARK)
intentInteractor.proceedIntent(intent, sdkTheme = SdkTheme.LIGHT)
}
}
override fun onNewIntent(intent: Intent?) {
super.onNewIntent(intent)
// Определение темы платежной шторки (LIGHT или DARK)
intentInteractor.proceedIntent(intent, sdkTheme = SdkTheme.LIGHT)
}
}
Проверка доступности работы с платежами
-
Изменился метод проверки доступности работы с платежами:
- BillingClient SDK:
RuStoreBillingClient.Companion.checkPurchasesAvailability(). - Pay SDK:
RuStorePayClient.instance.getPurchaseInteractor().getPurchaseAvailability().
- BillingClient SDK:
-
Поменялись ответы метода:
- BillingClient SDK:
FeatureAvailabilityResult.AvailableиFeatureAvailabilityResult.Unavailable(val cause: RuStoreException). - Pay SDK:
PurchaseAvailabilityResult.AvailableиPurchaseAvailabilityResult.Unavailable(val cause: Throwable).
- BillingClient SDK:
Проверка статуса авторизации пользователя
Для проверки авторизации пользователя в Pay SDK используется новый метод UserInteractor:
RuStorePayClient.instance.getUserInteractor().getUserAuthorizationStatus()
.addOnSuccessListener { result ->
when (result) {
UserAuthorizationStatus.AUTHORIZED -> {
// Пользователь авторизован в RuStore или через VK ID на платежной шторке
}
UserAuthorizationStatus.UNAUTHORIZED -> {
// Пользователь не авторизован
}
}
}
.addOnFailureListener { throwable ->
// Обработка ошибки
}