BillingClient SDK помечён как устаревший. BillingClient SDK продолжает свою работу, но устранение неисправностей, влияющих на работу платежей, может занимать больше времени. Новая функциональность добавляться не будет.
Рекомендуем использовать Pay SDK в проектах. Для перехода на Pay SDK воспользуйтесь инструкцией по миграции
Обновление RuStore SDK до версии 3.2.0: Изменения в платежах и миграция для Kotlin и Java
Примеры кода представлены для Kotlin.
PaymentResult.
Чтобы быстро перейти на новую версию SDK, используйте настоящую инструкцию по миграции.
Обновление зависимости
Для обновления зависимости, поднимите версию у billingclient в блоке dependencies вашего build.gradle.
dependencies {
implementation( "ru.rustore.sdk:billingclient:3.2.0" )
}
Модель продукта и модель ошибок не изменились.
Получение списка продуктов
Изменилась модель результата получения списка продуктов. Теперь метод getProducts() сразу возвращается список продуктов.
val productsUseCase: ProductsUseCase = billingClient.products
productsUseCase.getProducts(productIds = listOf("id1", "id2"))
.addOnSuccessListener { products: List<Product> ->
// Process success
}
.addOnFailureListener { throwable: Throwable ->
// Process error
}
Модель продукта и модель ошибок не изменились.
Получение списка покупок
Изменилась модель результата получения информации о покупке. Теперь метод getPurchasecaution() сразу возвращается модель покупки.
Получение списка покупок
val purchasesUseCase: PurchasesUseCase = billingClient.purchases
purchasesUseCase.getPurchasecaution("purchaseId")
.addOnSuccessListener { purchase: Purchase ->
// Process success
}
.addOnFailureListener { throwable: Throwable ->
// Process error
}
Модели ошибок не изменились.
Покупка продукта
Изменилась модель результата покупки продукта. Обновленная модель представлена ниже.
public sealed interface PaymentResult {
public data class Success(
val orderId: String?,
val purchaseId: String,
val productId: String,
val invoiceId: String,
val subscriptionToken: String? = null ,
) : PaymentResult
public data class Cancelled(
val purchaseId: String,
) : PaymentResult
public data class Failure(
val purchaseId: String?,
val invoiceId: String?,
val orderId: String?,
val quantity: Int?,
val productId: String?,
val errorCode: Int?,
) : PaymentResult
public object InvalidPaymentState : PaymentResult()
}
Success— результат успешного завершения покупки цифрового товара.Failure— при отправке запроса на оплату или получения статуса оплаты возникла проблема, невозможно установить статус покупки.Cancelled— запрос на покупку отправлен, при этом пользователь закрыл «платёжную шторку» на своём устройстве, и результат оплаты неизвестен.InvalidPaymentState— ошибка работы SDK платежей. Может возникнуть, в случае некорректного обратного deeplink.
Please, note the purchase confirmation and cancellation scenarios.