REST Resource: purchases.products
Stay organized with collections
Save and categorize content based on your preferences.
Resource: ProductPurchase
A ProductPurchase resource indicates the status of a user's inapp product purchase.
JSON representation |
{
"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
} |
Fields |
kind |
string
This kind represents an inappPurchase object in the androidpublisher service.
|
purchaseTimeMillis |
string (int64 format)
The time the product was purchased, in milliseconds since the epoch (Jan 1, 1970).
|
purchaseState |
integer
The purchase state of the order. Possible values are: 0. Purchased 1. Canceled 2. Pending
|
consumptionState |
integer
The consumption state of the inapp product. Possible values are: 0. Yet to be consumed 1. Consumed
|
developerPayload |
string
A developer-specified string that contains supplemental information about an order.
|
orderId |
string
The order id associated with the purchase of the inapp product.
|
purchaseType |
integer
The type of purchase of the inapp product. This field is only set if this purchase was not made using the standard in-app billing flow. Possible values are: 0. Test (i.e. purchased from a license testing account) 1. Promo (i.e. purchased using a promo code). Does not include Play Points purchases. 2. Rewarded (i.e. from watching a video ad instead of paying)
|
acknowledgementState |
integer
The acknowledgement state of the inapp product. Possible values are: 0. Yet to be acknowledged 1. Acknowledged
|
purchaseToken |
string
The purchase token generated to identify this purchase. May not be present.
|
productId |
string
The inapp product SKU. May not be present.
|
quantity |
integer
The quantity associated with the purchase of the inapp product. If not present, the quantity is 1.
|
obfuscatedExternalAccountId |
string
An obfuscated version of the id that is uniquely associated with the user's account in your app. Only present if specified using https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedaccountid when the purchase was made.
|
obfuscatedExternalProfileId |
string
An obfuscated version of the id that is uniquely associated with the user's profile in your app. Only present if specified using https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedprofileid when the purchase was made.
|
regionCode |
string
ISO 3166-1 alpha-2 billing region code of the user at the time the product was granted.
|
refundableQuantity |
integer
The quantity eligible for refund, i.e. quantity that hasn't been refunded. The value reflects quantity-based partial refunds and full refunds.
|
Methods |
|
Acknowledges a purchase of an inapp item. |
|
Consumes a purchase for an inapp item. |
|
Checks the purchase and consumption status of an inapp item. |
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-05-21 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-05-21 UTC."],[[["\u003cp\u003eThe \u003ccode\u003eProductPurchase\u003c/code\u003e resource provides information about a user's in-app product purchase, including purchase time, state, and consumption status.\u003c/p\u003e\n"],["\u003cp\u003eIt contains details like the product ID, order ID, purchase token, and quantity, along with developer-specified payload and user account identifiers if provided.\u003c/p\u003e\n"],["\u003cp\u003eYou can use methods like \u003ccode\u003eacknowledge\u003c/code\u003e, \u003ccode\u003econsume\u003c/code\u003e, and \u003ccode\u003eget\u003c/code\u003e to manage the purchase and its state.\u003c/p\u003e\n"],["\u003cp\u003eThe resource includes fields for purchase state (purchased, canceled, pending), consumption state (consumed, not consumed), and acknowledgement state (acknowledged, not acknowledged).\u003c/p\u003e\n"]]],["The `ProductPurchase` resource details a user's in-app product purchase status, represented in JSON format with fields like `purchaseTimeMillis`, `purchaseState`, and `consumptionState`. It includes identifiers such as `orderId`, `purchaseToken`, and `productId`. Key actions involve using the methods `acknowledge` to confirm a purchase, `consume` to mark an item as used, and `get` to check the purchase status. The purchase also indicates quantity, purchase types, and refundable amounts.\n"],null,["# REST Resource: purchases.products\n\n- [Resource: ProductPurchase](#ProductPurchase)\n - [JSON representation](#ProductPurchase.SCHEMA_REPRESENTATION)\n- [Methods](#METHODS_SUMMARY)\n\nResource: ProductPurchase\n-------------------------\n\nA ProductPurchase resource indicates the status of a user's inapp product purchase.\n\n| JSON representation |\n|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| ``` { \"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 } ``` |\n\n| Fields ||\n|-------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `kind` | `string` This kind represents an inappPurchase object in the androidpublisher service. |\n| `purchaseTimeMillis` | `string (`[int64](https://developers.google.com/discovery/v1/type-format)` format)` The time the product was purchased, in milliseconds since the epoch (Jan 1, 1970). |\n| `purchaseState` | `integer` The purchase state of the order. Possible values are: 0. Purchased 1. Canceled 2. Pending |\n| `consumptionState` | `integer` The consumption state of the inapp product. Possible values are: 0. Yet to be consumed 1. Consumed |\n| `developerPayload` | `string` A developer-specified string that contains supplemental information about an order. |\n| `orderId` | `string` The order id associated with the purchase of the inapp product. |\n| `purchaseType` | `integer` The type of purchase of the inapp product. This field is only set if this purchase was not made using the standard in-app billing flow. Possible values are: 0. Test (i.e. purchased from a license testing account) 1. Promo (i.e. purchased using a promo code). Does not include Play Points purchases. 2. Rewarded (i.e. from watching a video ad instead of paying) |\n| `acknowledgementState` | `integer` The acknowledgement state of the inapp product. Possible values are: 0. Yet to be acknowledged 1. Acknowledged |\n| `purchaseToken` | `string` The purchase token generated to identify this purchase. May not be present. |\n| `productId` | `string` The inapp product SKU. May not be present. |\n| `quantity` | `integer` The quantity associated with the purchase of the inapp product. If not present, the quantity is 1. |\n| `obfuscatedExternalAccountId` | `string` An obfuscated version of the id that is uniquely associated with the user's account in your app. Only present if specified using \u003chttps://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedaccountid\u003e when the purchase was made. |\n| `obfuscatedExternalProfileId` | `string` An obfuscated version of the id that is uniquely associated with the user's profile in your app. Only present if specified using \u003chttps://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedprofileid\u003e when the purchase was made. |\n| `regionCode` | `string` ISO 3166-1 alpha-2 billing region code of the user at the time the product was granted. |\n| `refundableQuantity` | `integer` The quantity eligible for refund, i.e. quantity that hasn't been refunded. The value reflects quantity-based partial refunds and full refunds. |\n\n| Methods ------- ||\n|--------------------------------------------------------------------------------------|--------------------------------------------------------------|\n| ### [acknowledge](/android-publisher/api-ref/rest/v3/purchases.products/acknowledge) | Acknowledges a purchase of an inapp item. |\n| ### [consume](/android-publisher/api-ref/rest/v3/purchases.products/consume) | Consumes a purchase for an inapp item. |\n| ### [get](/android-publisher/api-ref/rest/v3/purchases.products/get) | Checks the purchase and consumption status of an inapp item. |"]]