Получение списка покупок пользователя

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

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

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

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 — список запрошенных покупок.

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

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

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

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

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

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 — уникальный идентификатор оплаты, сформированный приложением (uuid);
  • amountLable — отформатированная цена покупки, включая валютный знак на языке [language];
  • amount — цена в минимальных единицах валюты;
  • currency — код валюты ISO 4217;
  • quantity — количество продукта;
  • purchaseState — состояние покупки:
    • возможные значения состояния покупки

      • CREATED — создана;
      • INVOICE_CREATED — создана, ожидает оплаты; 
      • CONFIRMED — подтверждена;
      • PAID — оплачена;
      • CANCELLED — покупка отменена; 
      • CONSUMED — потребление покупки подтверждено; 
      • CLOSED — подписка была отменена.
  • developerPayload — указанная разработчиком строка, содержащая дополнительную информацию о заказе;
  • subscriptionToken — токен для валидации покупки на сервере. Подробнее о валидации покупки на сервере.

Статусная модель (purchaseState):

Статусная модель покупки подписок (SUBSCRIPTIONS): 

image                          

    Статусная модель покупки непотребляемых продуктов (NON-CONSUMABLES):

image

   Статусная модель покупки потребляемых продуктов (CONSUMABLES):

image

Обновлено 12 апреля 2023 г.
Was this information helpful?