Обновление до RuStore SDK 2.2.0: Модели покупок, зависимости и миграция
В версии 2.2.0 платежей были значительно изме нены модели результата покупки продуктовPaymentResult
.
Чтобы быстро перейти на новую версию SDK, используйте настоящую инструкцию по миграции.
Обновление зависимости
- Kotlin
- Java
Для обновления зависимости, поднимите версию у billingclient
в блоке dependencies
вашего build.gradle
.
dependencies {
implementation( "ru.rustore.sdk:billingclient:2.2.0" )
}
Для обновления зависимости, поднимите версию у billingclient
в блоке dependencies
вашего build.gradle
.
dependencies {
implementation( "ru.rustore.sdk:billingclient:2.2.0" )
}
Получение списка продуктов
- Kotlin
- Java
Изменилась модель результата получения списка продуктов. Теперь метод getProducts()
сразу возвращается список продуктов.
val productsUseCase: ProductsUseCase = billingClient.products
productsUseCase.getProducts(productIds = listOf("id1", "id2"))
.addOnSuccessListener { products: List<Product> ->
// Process success
}
.addOnFailureListener { throwable: Throwable ->
// Process error
}
Изменилась модель результата получения списка продуктов. Теперь метод getProducts()
сразу возвращается список продуктов.
ProductsUseCase productsUseCase = billingClient.getProducts();
productsUseCase.getProducts(Arrays.asList("id1" , "id2")).addOnCompleteListener( new OnCompleteListener<List<Product>>() {
@Override
public void onFailure( @NonNull Throwable throwable) {
// Process error
}
@Override
public void onSuccess(List<Product> products) {
// Process success
}
});
Покупка продукта
- Kotlin
- Java
Изменилась модель результата покупки продукта. Обновленная модель представлена ниже.
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.
Изменилась модель результата покупки продукта. Обновленная модель представлена ниже.
interface PaymentResult {
interface Success extends PaymentResult {
@Nullable
public String getOrderId();
public String getPurchaseId();
public String getProductId();
public String getInvoiceId();
@Nullable
public String getSubscriptionToken();
}
interface Failure extends PaymentResult {
@Nullable
public String getPurchaseId();
@Nullable
public String getInvoiceId();
@Nullable
public String getOrderId();
@Nullable
public Integer getQuantity();
@Nullable
public String getProductId();
@Nullable
public Integer getErrorCode();
}
interface Cancelled extends PaymentResult {
public String getPurchaseId();
}
interface InvalidPaymentState extends PaymentResult {}
}
Success
— результат успешного завершения покупки цифрового товара.Failure
— при отправке запроса на оплату или получения статуса оплаты возникла проблема, невозможно установить статус покупки.Cancelled
— запрос на покупку отправлен, при этом пользователь закрыл «платёжную шторку» на своём устройстве, и результат оплаты неизвестен.InvalidPaymentState
— ошибка работы SDK платежей. Может возникнуть, в случае некорректного обратного deeplink.
Обратите особое внимание на сценарии потребления (подтверждения) и отмены покупки.
Потребление (подтверждение) покупки
- Kotlin
- Java
Изменилась модель результата потребления (подтверждения) покупки. Теперь потребление (подтверждение) может завершиться либо успехом, либо ошибкой.
val purchasesUseCase: PurchasesUseCase = billingClient.purchases
purchasesUseCase.confirmPurchase(purchaseId = "purchaseId" , developerPayload = null )
.addOnSuccessListener {
// Process success
}.addOnFailureListener { throwable: Throwable ->
// Process error
}
Изменилась модель результата потребления (подтверждения) покупки. Теперь потребление (подтверждение) может завершиться либо успехом, либо ошибкой.
PurchasesUseCase purchasesUseCase = billingClient.getPurchases();
purchasesUseCase.confirmPurchase("purchaseId", "developerPayload").addOnCompleteListener( new OnCompleteListener<Unit>() {
@Override
public void onFailure( @NonNull Throwable throwable) {
// Process error
}
@Override
public void onSuccess(Unit result) {
// Process success
}
});
Отмена покупки
- Kotlin
- Java
Изменилась модель результата отмены покупки. Теперь отмена покупки может завершиться либо успехом, либо ошибкой.
val purchasesUseCase: PurchasesUseCase = billingClient.purchases
purchasesUseCase.deletePurchase(purchaseId = "purchaseId" )
.addOnSuccessListener {
// Process success
}.addOnFailureListener { throwable: Throwable ->
// Process error
}
Изменилась модель результата отмены покупки. Теперь отмена покупки может завершиться либо успехом, либо ошибкой.
PurchasesUseCase purchasesUseCase = billingClient.getPurchases();
purchasesUseCase.deletePurchase("purchaseId").addOnCompleteListener( new OnCompleteListener<Unit>() {
@Override
public void onFailure( @NonNull Throwable throwable) {
// Process error
}
@Override
public void onSuccess(Unit result) {
// Process success
}
});
Сценарий подтверждения и отмены покупки
В связи с тем, что изменилась модель результата покупки продукта, изменилась и логика потребления (подтверждения) и отмены покупки.
Метод отмены покупки (deletePurchase
) необходимо использовать, если:
-
метод получения списка покупок (
getPurchases
) вернул покупку со статусом:PurchaseState.CREATED
;PurchaseState.INVOICE_CREATED
;
-
метод покупки (
purchaseProduct
) вернул:PaymentResult.Cancelled
;PaymentResult.Failure
.
Метод потребления (подтверждения) продукта (confirmPurchase
) необходимо использовать, если метод получения списка покупок (getPurchases
) вернул покупку типа CONSUMABLE
и со статусом PurchaseState.PAID
.