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

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

RuStoreBillingClient.purchases.purchaseProduct(
    productId = "productId"
).addOnCompleteListener(object : OnCompleteListener<PaymentResult> {
 
    override fun onFailure(throwable: Throwable) {
        // Process error
    }
 
    override fun onSuccess(result: PaymentResult) {
        when (result) {
            // Process PaymentResult
        }
    }
})
  • productId: String — идентификатор продукта;
  • orderId: String — идентификатор заказа, создаётся на стороне AnyApp (опционально. Если не указан, то генерируется автоматически)
  • quantity: Int — количество продуктов (опционально);
  • developerPayload — дополнительная информация от разработчика AnyApp (опционально)

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

sealed class PaymentResult {
 
    data class InvoiceResult(
        val invoiceId: String,
        val finishCode: PaymentFinishCode,
    ) :  PaymentResult()
 
    data class InvalidInvoice(
        val invoiceId: String?,
    ) :  PaymentResult()
 
    data class PurchaseResult(
        val finishCode: PaymentFinishCode,
        val orderId: String,
        val purchaseId: String,
        val productId: String,
    ) :  PaymentResult()
 
    data class InvalidPurchase(
        val purchaseId: String?,
        val invoiceId: String?,
        val orderId: String?,
        val quantity: Int?,
        val productId: String?,
        val errorCode: Int?,
    ) : PaymentResult()
 
    object InvalidPaymentState : PaymentResult()
}
  • InvoiceResult — платежи завершились с результатом;
  • InvalidInvoice — платежи завершились без указания инвойса. Вероятно, они были запущены с некорректным инвойсом (пустая строка, например);
  • PurchaseResult — результат успешного завершения покупки цифрового товара;
  • InvalidPurchase — при оплате цифрового товара платежи завершились c ошибкой;
  • InvalidPaymentState — при завершении платежей отсутствует PaymentState.

Возможные статусы, которые может содержать PaymentFinishCode:

  • SUCCESSFUL_PAYMENT — успешная оплата; 
  • CLOSED_BY_USER — отменено пользователем;
  • UNHANDLED_FORM_ERROR — неизвестная ошибка;
  • PAYMENT_TIMEOUT — ошибка оплаты по таймауту;
  • DECLINED_BY_SERVER — отклонено сервером;
  • RESULT_UNKNOWN — неизвестный статус оплаты. 
Was this information helpful?