Ресурс: 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 | Этот тип представляет собой объект inappPurchase в службе androidpublisher. |
purchaseTimeMillis | Время покупки товара в миллисекундах с начала эпохи (1 января 1970 г.). |
purchaseState | Статус покупки заказа. Возможные значения: 0. Куплено; 1. Отменено; 2. В ожидании. |
consumptionState | Состояние использования внутриигрового продукта. Возможные значения: 0 — ещё не использовано, 1 — использовано. |
developerPayload | Строка, заданная разработчиком, содержащая дополнительную информацию о заказе. |
orderId | Идентификатор заказа, связанный с покупкой внутриигрового продукта. |
purchaseType | Тип покупки внутриигрового продукта. Это поле заполняется только в том случае, если покупка была совершена не с использованием стандартного процесса оплаты внутри приложения. Возможные значения: 0. Тестовая версия (т.е. покупка с тестового аккаунта); 1. Промоверсия (т.е. покупка с использованием промокода). Не включает покупки в виде Play Points; 2. Версия с вознаграждением (т.е. за просмотр видеорекламы вместо оплаты). |
acknowledgementState | Состояние подтверждения для внутриигрового продукта. Возможные значения: 0 — ещё не подтверждено, 1 — подтверждено. |
purchaseToken | Токен покупки, сгенерированный для идентификации данной покупки. Может отсутствовать. |
productId | Артикул товара в приложении. Может отсутствовать. |
quantity | Количество, указанное при покупке внутриигрового продукта. Если значение отсутствует, то равно 1. |
obfuscatedExternalAccountId | Зашифрованная версия идентификатора, уникально связанного с учетной записью пользователя в вашем приложении. Присутствует только в том случае, если указан с помощью https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedaccountid при совершении покупки. |
obfuscatedExternalProfileId | Зашифрованная версия идентификатора, уникально связанного с профилем пользователя в вашем приложении. Присутствует только в том случае, если указан с помощью https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedprofileid при совершении покупки. |
regionCode | Код региона выставления счетов ISO 3166-1 alpha-2 пользователя на момент предоставления продукта. |
refundableQuantity | Количество товара, подлежащего возврату, то есть количество, которое не было возвращено. Указанная сумма отражает частичный и полный возврат средств в зависимости от количества товара. |
Методы | |
|---|---|
| Подтверждает покупку внутриигрового товара. |
| Потребляет средства на покупку внутриигрового предмета. |
| Проверяет статус покупки и использования внутриигрового предмета. |
коды ошибок
При работе с этим ресурсом возвращаются следующие коды ошибок 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 на наличие известных сбоев. |