Покупка продукта
Для вызова покупки продукта используйте метод 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 (опционально).
Структура результата покупки:
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, val invoiceId: String, val subscriptionToken: String? = null , ) : 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 — неизвестный статус оплаты.
Чтобы провести валидацию покупки на сервере, используйте subscriptionToken. Подробнее о валидации покупки на сервере.
Обновлено 21 апреля 2023 г.
Was this information helpful?