REST Resource: purchases.products

Ресурс: ProductPurchasing

Ресурс ProductPurchase указывает статус покупки пользователем товара внутри приложения.

JSON-представление
{
  "kind": string,
  "purchaseTimeMillis": string,
  "purchaseState": integer,
  "consumptionState": integer,
  "developerPayload": string,
  "orderId": string,
  "purchaseType": integer,
  "acknowledgementState": integer,
  "purchaseToken": string,
  "productId": string,
  "quantity": integer,
  "obfuscatedExternalAccountId": string,
  "obfuscatedExternalProfileId": string,
  "regionCode": string,
  "refundableQuantity": integer
}
Поля
kind

string

Этот тип представляет собой объект inappPurchase в службе androidpublisher.

purchaseTimeMillis

string ( int64 format)

Время покупки товара в миллисекундах с начала эпохи (1 января 1970 г.).

purchaseState

integer

Статус покупки заказа. Возможные значения: 0. Куплено; 1. Отменено; 2. В ожидании.

consumptionState

integer

Состояние использования внутриигрового продукта. Возможные значения: 0 — ещё не использовано, 1 — использовано.

developerPayload

string

Строка, заданная разработчиком, содержащая дополнительную информацию о заказе.

orderId

string

Идентификатор заказа, связанный с покупкой внутриигрового продукта.

purchaseType

integer

Тип покупки внутриигрового продукта. Это поле заполняется только в том случае, если покупка была совершена не с использованием стандартного процесса оплаты внутри приложения. Возможные значения: 0. Тестовая версия (т.е. покупка с тестового аккаунта); 1. Промоверсия (т.е. покупка с использованием промокода). Не включает покупки в виде Play Points; 2. Версия с вознаграждением (т.е. за просмотр видеорекламы вместо оплаты).

acknowledgementState

integer

Состояние подтверждения для внутриигрового продукта. Возможные значения: 0 — ещё не подтверждено, 1 — подтверждено.

purchaseToken

string

Токен покупки, сгенерированный для идентификации данной покупки. Может отсутствовать.

productId

string

Артикул товара в приложении. Может отсутствовать.

quantity

integer

Количество, указанное при покупке внутриигрового продукта. Если значение отсутствует, то равно 1.

obfuscatedExternalAccountId

string

Зашифрованная версия идентификатора, уникально связанного с учетной записью пользователя в вашем приложении. Присутствует только в том случае, если указан с помощью https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedaccountid при совершении покупки.

obfuscatedExternalProfileId

string

Зашифрованная версия идентификатора, уникально связанного с профилем пользователя в вашем приложении. Присутствует только в том случае, если указан с помощью https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedprofileid при совершении покупки.

regionCode

string

Код региона выставления счетов ISO 3166-1 alpha-2 пользователя на момент предоставления продукта.

refundableQuantity

integer

Количество товара, подлежащего возврату, то есть количество, которое не было возвращено. Указанная сумма отражает частичный и полный возврат средств в зависимости от количества товара.

Методы

acknowledge

Подтверждает покупку внутриигрового товара.

consume

Потребляет средства на покупку внутриигрового предмета.

get

Проверяет статус покупки и использования внутриигрового предмета.

коды ошибок

При работе с этим ресурсом возвращаются следующие коды ошибок HTTP:

Код ошибки Причина Описание Разрешение
400 invalidPurchaseState Покупка находится в недействительном состоянии для выполнения запрошенной операции. Например, вы можете пытаться подтвердить уже совершенную покупку или отменить неактивную подписку. Перед выполнением операции проверьте текущее состояние ресурса с помощью соответствующего API-запроса Get. Убедитесь, что ресурс находится в подходящем состоянии для выполнения действия.
400 invalidValue В запросе было предоставлено недопустимое значение. Такая ошибка часто возникает при получении некорректного или недействительного токена покупки. Исправьте недопустимое значение поля в теле запроса или параметрах в соответствии со справочником API.
400 productNotOwnedByUser Предоставленный токен покупки действителен, но пользователь в данный момент не является владельцем продукта. Это может произойти, если покупка была возвращена, аннулирована или истек срок ее действия до подтверждения. Перед выполнением операции проверьте текущее состояние ресурса с помощью соответствующего API-запроса Get. Убедитесь, что ресурс находится в подходящем состоянии для выполнения действия.
400 purchaseTokenMismatch Предоставленный токен покупки не соответствует покупке, названию пакета, идентификатору подписки или идентификатору продукта. Убедитесь, что все данные в запросе верны и соответствуют друг другу.
400 required В запросе отсутствует обязательное поле или параметр. Ознакомьтесь с документацией API, чтобы убедиться в наличии всех обязательных полей и параметров.
400 unsupportedIabType Данная операция не поддерживается для указанного типа внутриигровых покупок. Убедитесь, что метод API совместим с управляемым типом элемента.
403 userInsufficientPermission У пользователя недостаточно прав для выполнения запрошенной операции. Убедитесь, что авторизованный пользователь имеет необходимые разрешения в консоли Google Play. Дополнительные сведения см. в разделе «Использование служебной учетной записи» .
404 notFound Запрошенный ресурс не найден. Убедитесь в правильности идентификаторов (например, токен покупки, название пакета, идентификатор продукта, идентификатор подписки).
409 concurrentUpdate Была предпринята попытка обновить объект, который обновляется одновременно с первым. Повторите запрос с экспоненциальной задержкой. Избегайте одновременных изменений одного и того же ресурса.
5xx Generic error Общая ошибка на сервере Google Play. Повторите запрос.

Если проблема не исчезнет, ​​обратитесь к своему менеджеру аккаунта Google Play или отправьте запрос в службу поддержки. Рекомендуем проверить панель состояния Play на наличие известных сбоев.