AI-generated Key Takeaways
- 
          A ProductPurchase resource provides information about a user's in-app product purchase status. 
- 
          The JSON representation of a ProductPurchase includes details like purchase time, state, consumption state, order ID, and product ID. 
- 
          The resource includes methods to acknowledge, consume, and get the status of an in-app item purchase. 
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 | 
 This kind represents an inappPurchase object in the androidpublisher service. | 
| purchaseTimeMillis | 
 The time the product was purchased, in milliseconds since the epoch (Jan 1, 1970). | 
| purchaseState | 
 The purchase state of the order. Possible values are: 0. Purchased 1. Canceled 2. Pending | 
| consumptionState | 
 The consumption state of the inapp product. Possible values are: 0. Yet to be consumed 1. Consumed | 
| developerPayload | 
 A developer-specified string that contains supplemental information about an order. | 
| orderId | 
 The order id associated with the purchase of the inapp product. | 
| purchaseType | 
 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 | 
 The acknowledgement state of the inapp product. Possible values are: 0. Yet to be acknowledged 1. Acknowledged | 
| purchaseToken | 
 The purchase token generated to identify this purchase. May not be present. | 
| productId | 
 The inapp product SKU. May not be present. | 
| quantity | 
 The quantity associated with the purchase of the inapp product. If not present, the quantity is 1. | 
| obfuscatedExternalAccountId | 
 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 | 
 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 | 
 ISO 3166-1 alpha-2 billing region code of the user at the time the product was granted. | 
| refundableQuantity | 
 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. | 
Error codes
The operations of this resource, return the following HTTP error codes:
| Error code | Reason | Resolution | 
|---|---|---|
| 5xx | Generic error in the Google Play server. | Retry your request. If the problem persists contact your Google Play account manager or submit a support request. Consider checking the Play Status Dashboard for any known outages. | 
| 409 | Concurrency update error. There was an attempt to update an object that is being updated. For example, a purchase
      is getting acknowledged by calling the Play Billing Library's  | Retry your request. |