Перейти к основному содержимому

Версия SDK 4.0.0 и выше

примечание

Используйте этот метод, если работаете с версией SDK 4.0.0 и выше. Для версии ниже смотрите инструкцию.

Метод возвращает только покупки со статусами из таблицы ниже. Подробнее о других возможных состояниях покупки смотрите в разделе Получение сведений о покупке.

Тип/СтатусINVOICE_CREATEDCONFIRMEDPAIDPAUSED
consumable++
non-consumable++
subscription+++
примечание

Метод возвращает незавершённые состояния покупки и покупки потребляемых товаров, требующих обработки. Помимо этого, он показывает подтверждённые покупки для подписок и непотребляемых товаров — тех, которые нельзя купить повторно.

Для получения списка покупок пользователя используйте метод getPurchases.

val purchasesUseCase: PurchasesUseCase = billingClient.purchases
purchasesUseCase.getPurchases()
.addOnSuccessListener { purchases: List<Purchase> ->
// Process success
}
.addOnFailureListener { throwable: Throwable ->
// Process error
}

Структура покупки

data class Purchase(
val purchaseId: String?,
val productId: String,
val productType: ProductType?,
val invoiceId: String?,
val description: String?,
val language: String?,
val purchaseTime: Date?,
val orderId: String?,
val amountLabel: String?,
val amount: Int?,
val currency: String?,
val quantity: Int?,
val purchaseState: PurchaseState?,
val developerPayload: String?,
val subscriptionToken: String?
)
  • purchaseId — идентификатор покупки.
  • productId — идентификатор продукта.
  • productType — тип продукта.
  • invoiceId — идентификатор счета.
  • description — описание покупки.
  • language — язык, указанный с помощью BCP 47 кодирования.
  • purchaseTime — время покупки (в формате RFC 3339).
  • orderId — уникальный идентификатор оплаты, сформированный при покупке товара.
  • amountLable — отформатированная цена покупки, включая валютный знак на языке [language].
  • amount — цена в минимальных единицах валюты.
  • currency — код валюты ISO 4217.
  • quantity — количество продукта.
  • purchaseState — состояние покупки.
  • developerPayload — указанная разработчиком строка, содержащая дополнительную информацию о заказе.
  • subscriptionToken — токен для валидации покупки на сервере.

Структура ответа сервера на запрос покупок:

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