Потребление (подтверждение) покупки

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

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

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

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

val purchasesUseCase: PurchasesUseCase = billingClient.purchases
purchasesUseCase.confirmPurchase(purchaseId = "purchaseId")
    .addOnSuccessListener { response: ConfirmPurchaseResponse ->
        // Process success
    }.addOnFailureListener { throwable: Throwable ->
        // Process error
    }
  • purchaseId — идентификатор покупки;
  • developerPayload — указанная разработчиком строка, содержащая дополнительную информацию о заказе (опционально). 

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

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

Структура дополнительной информации о запросе:

data class RequestMeta(
    val traceId: String,
)
  • traceId — метка запроса.

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

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