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

Для вызова покупки продукта используйте метод purchaseProduct:

val purchasesUseCase: PurchasesUseCase = billingClient.purchases
purchasesUseCase.purchaseProduct(
    productId = productId,
    orderId = UUID.randomUUID().toString(),
    quantity = 1,
    developerPayload = null,
).addOnSuccessListener { paymentResult: PaymentResult ->
    when (paymentResult) {
        // Process PaymentResult
    }
}.addOnFailureListener { throwable: Throwable ->
    // Process error
}
  • productId: String — идентификатор продукта;
  • orderId: String — идентификатор заказа, создаётся на стороне AnyApp (опционально. Если не указан, то генерируется автоматически)
  • quantity: Int — количество продуктов (опционально);
  • developerPayload — дополнительная информация от разработчика AnyApp (опционально)

Структура результата покупки:

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.
Обновлено 5 декабря 2023 г.
Was this information helpful?