Потребление покупки

Приложение RuStore содержит продукты следующих типов:

  • CONSUMABLE — потребляемый (можно купить много раз, например, кристаллы в приложении);
  • NON_CONSUMABLE — непотребляемый (можно купить один раз, например отключение рекламы в приложении);
  • SUBSCRIPTION — подписка (можно купить на период времени, например подписка в стриминговом сервисе).

Потребления требуют только продукты типа CONSUMABLE, если они находятся в состоянии PurchaseState.PAID.

Для потребления покупки вы можете использовать метод confirmPurchase:

RuStoreBillingClient.purchases.confirmPurchase(purchaseId = "")
    .addOnCompleteListener(object : OnCompleteListener<ConfirmPurchaseResponse> {
        override fun onFailure(throwable: Throwable) {
            // Process error
        }
 
        override fun onSuccess(result: ConfirmPurchaseResponse) {
            // Process success
        }
    })
  • purchaseId — идентификатор покупки;
  • developerPayload — указанная разработчиком строка, содержащая дополнительную информацию о заказе (опционально). 

Метод возвращает:

data class ConfirmPurchaseResponse(
    override val code: Int,
    override val errorMessage: String?,
    override val errorDescription: String?,
    override val traceId: String?,
    override val errors: List<DigitalShopGeneralError>?,
) : ResponseWithCode
  • code — код ответа;
  • errorMessage — сообщение об ошибке для пользователя; 
  • errorDescription — расшифровка сообщения об ошибке; 
  • traceId — идентификатор ошибочного сообщения; 
  • errors — список ошибок.

Структура ошибки:

data class DigitalShopGeneralError(
    val name: String?,
    val code: Int?,
    val description: String?,
)
  • name — наименование атрибута ошибки;
  • code — код ошибки;
  • description — описание ошибки.
Was this information helpful?