- Ресурс: ProductPurchaseV2
- PurchaseStateContext
- PurchaseState
- TestPurchaseContext
- FopType
- Товарная линейка
- Информация о предложении продукта
- Подробности предложения по аренде
- Состояние потребления
- Состояние подтверждения
- Методы
Ресурс: ProductPurchaseV2
Ресурс ProductPurchaseV2 указывает на статус покупки пользователем товара внутри приложения.
| JSON-представление |
|---|
{ "productLineItem": [ { object ( |
| Поля | |
|---|---|
productLineItem[] | Содержит информацию на уровне отдельных товаров для ProductPurchaseV2. |
kind | Этот тип представляет собой объект ProductPurchaseV2 в службе androidpublisher. |
purchaseStateContext | Информация о состоянии покупки. |
testPurchaseContext | Информация, относящаяся к тестовым покупкам. Эта настройка будет применяться только к тестовым покупкам. |
orderId | Идентификатор заказа, связанный с покупкой внутриигрового продукта. Может не указываться, если с покупкой не связан никакой заказ. |
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 пользователя на момент предоставления продукта. |
purchaseCompletionTime | Время, когда покупка была успешной, то есть когда состояние покупки изменилось на «ПОКУПКА». Это поле не будет отображаться до завершения платежа. Например, если пользователь инициировал ожидающую транзакцию ( https://developer.android.com/google/play/billing/integrate#pending) , это поле не будет заполнено до тех пор, пока пользователь успешно не выполнит необходимые для завершения транзакции шаги. Используется RFC 3339, согласно которому сгенерированный вывод всегда будет Z-нормализован и будет содержать 0, 3, 6 или 9 дробных знаков. Допускаются также смещения, отличные от "Z". Примеры: |
acknowledgementState | Только вывод. Состояние подтверждения покупки. |
PurchaseStateContext
Контекст, касающийся состояния покупки.
| JSON-представление |
|---|
{
"purchaseState": enum ( |
| Поля | |
|---|---|
purchaseState | Только вывод. Состояние покупки. |
PurchaseState
Возможные штаты для покупки.
| Перечисления | |
|---|---|
PURCHASE_STATE_UNSPECIFIED | Место покупки не указано. Это значение никогда не следует устанавливать. |
PURCHASED | Покупка успешно завершена. |
CANCELLED | Покупка отменена. |
PENDING | Покупка находится в состоянии ожидания и еще не завершена. Для получения дополнительной информации об обработке ожидающих покупок см. https://developer.android.com/google/play/billing/integrate#pending . |
TestPurchaseContext
Контекст: тестовая покупка.
| JSON-представление |
|---|
{
"fopType": enum ( |
| Поля | |
|---|---|
fopType | Тип покупки для тестирования. |
FopType
Возможные типы франта.
| Перечисления | |
|---|---|
FOP_TYPE_UNSPECIFIED | Тип FOP не указан. Это значение никогда не следует устанавливать. |
TEST | Покупка была совершена с использованием тестовой карты. |
Товарная линейка
Содержит информацию на уровне отдельных товаров для ProductPurchaseV2.
| JSON-представление |
|---|
{
"productId": string,
"productOfferDetails": {
object ( |
| Поля | |
|---|---|
productId | Идентификатор приобретенного товара (например, 'monthly001'). |
productOfferDetails | Подробности предложения по данному товару. |
Информация о предложении продукта
Предоставьте подробную информацию по каждой позиции заказа.
| JSON-представление |
|---|
{ "offerTags": [ string ], "offerId": string, "purchaseOptionId": string, "rentOfferDetails": { object ( |
| Поля | |
|---|---|
offerTags[] | Последние теги предложения, связанные с данным предложением. Включают теги, унаследованные от варианта покупки. |
offerId | Идентификатор предложения. Указывается только для предложений. |
purchaseOptionId | Идентификатор варианта покупки. |
rentOfferDetails | Предлагайте подробную информацию об условиях аренды. Эта опция будет доступна только для пунктов, относящихся к арендной плате. |
offerToken | Токен предложения, используемый для каждой транзакции при оформлении данной позиции покупки. |
quantity | Количество, связанное с покупкой внутриигрового продукта. |
refundableQuantity | Количество товара, подлежащего возврату, то есть количество, которое не было возвращено. Указанная сумма отражает частичный и полный возврат средств в зависимости от количества товара. |
consumptionState | Только выходные данные. Состояние потребления после покупки. |
Подробности предложения по аренде
Этот тип не содержит полей.
Предложение содержит подробную информацию по позиции в договоре аренды.
Состояние потребления
Возможные состояния потребления.
| Перечисления | |
|---|---|
CONSUMPTION_STATE_UNSPECIFIED | Состояние потребления не указано. Это значение никогда не следует устанавливать. |
CONSUMPTION_STATE_YET_TO_BE_CONSUMED | Ещё не съедено. |
CONSUMPTION_STATE_CONSUMED | Уже съедено. |
Состояние подтверждения
Состояние подтверждения получения разового продукта.
| Перечисления | |
|---|---|
ACKNOWLEDGEMENT_STATE_UNSPECIFIED | Состояние подтверждения не указано. |
ACKNOWLEDGEMENT_STATE_PENDING | Покупка пока не подтверждена. |
ACKNOWLEDGEMENT_STATE_ACKNOWLEDGED | Покупка подтверждена. |
Методы | |
|---|---|
| Проверяет статус покупки и использования внутриигрового предмета. |
коды ошибок
При работе с этим ресурсом возвращаются следующие коды ошибок 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 на наличие известных сбоев. |