> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.qonversion.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Google Play Product Details

> Google Play products have a deeply nested structure of objects, containing different information. In our Android and Cross-platform SDKs, we have represented several wrapping classes, containing all the information received from Google Play Billing Library. Below are the specifications of those classes.

`QProductStoreDetails` class contains core information about the store product.

| Field                              | Type                     | Description                                                                                                                                                                                                                                                                                                                        |
| ---------------------------------- | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `originalProductDetails`           | `ProductDetails`         | Original product details received from Google Play Billing Library.                                                                                                                                                                                                                                                                |
| `basePlanId`                       | `String`                 | Identifier of the base plan to which these details relate. `Null` for in-app products or if not specified in the Qonversion Dashboard.                                                                                                                                                                                             |
| `productId`                        | `String`                 | Identifier of the subscription or the in-app product.                                                                                                                                                                                                                                                                              |
| `name`                             | `String`                 | Name of the subscription or the in-app product                                                                                                                                                                                                                                                                                     |
| `title`                            | `String`                 | Title of the subscription or the in-app product. The title includes the name of the app.                                                                                                                                                                                                                                           |
| `description`                      | `String`                 | Description of the subscription or the in-app product.                                                                                                                                                                                                                                                                             |
| `subscriptionOfferDetails`         | `QProductOfferDetails[]` | Offer details for the subscription. Offer details contain all the available variations of purchase offers, including both base plan and eligible base plan + offer combinations from Google Play Console for the current `basePlanId`. `Null` for in-app products or if `basePlanId` is not specified in the Qonversion Dashboard. |
| `defaultSubscriptionOfferDetails`  | `QProductOfferDetails`   | The most profitable subscription offer for the client in our opinion from all the available offers. We calculate the cheapest price for the client by comparing all the trial or intro phases along with the base plan.                                                                                                            |
| `basePlanSubscriptionOfferDetails` | `QProductOfferDetails`   | Subscription offer details containing only the base plan without any offer.                                                                                                                                                                                                                                                        |
| `inAppOfferDetails`                | `QProductInAppDetails`   | Offer details for the in-app product. `Null` for subscriptions.                                                                                                                                                                                                                                                                    |
| `hasTrialOffer`                    | `Boolean`                | `True`, if there is any eligible offer with a trial for this subscription and base plan combination. `False` otherwise or for an in-app product.                                                                                                                                                                                   |
| `hasIntroOffer`                    | `Boolean`                | `True`, if there is any eligible offer with an intro price for this subscription and base plan combination. `False` otherwise or for an in-app product.                                                                                                                                                                            |
| `hasTrialOrIntroOffer`             | `Boolean`                | `True`, if there is any eligible offer with a trial or an intro price for this subscription and base plan combination. `False` otherwise or for an in-app product.                                                                                                                                                                 |
| `productType`                      | `QProductType`           | The calculated type of the current product.                                                                                                                                                                                                                                                                                        |
| `isInApp`                          | `Boolean`                | `True`, if the product type is `InApp`.                                                                                                                                                                                                                                                                                            |
| `isSubscription`                   | `Boolean`                | `True`, if the product type is `Subscription`.                                                                                                                                                                                                                                                                                     |
| `isPrepaid`                        | `Boolean`                | `True`, if the subscription product is prepaid, which means that users pay in advance - they will need to make a new payment to extend their plan.                                                                                                                                                                                 |
| `isInstallment`                    | `Boolean`                | `True`, if the subscription is an installment plan (the user commits to a fixed number of upfront payments). `False` otherwise or for an in-app product.                                                                                                                                                                           |

`QProductOfferDetails` class contains all the information about the Google subscription offer details. It might be either a plain base plan details or a base plan with concrete offer details.

| Field                    | Type                             | Description                                                                                                                                              |
| ------------------------ | -------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `originalOfferDetails`   | `SubscriptionOfferDetails`       | Original subscription offer details received from Google Play Billing Library.                                                                           |
| `basePlanId`             | `String`                         | The identifier of the current base plan.                                                                                                                 |
| `offerId`                | `String`                         | The identifier of the concrete offer, to which these details belong. `Null`, if these are plain base plan details.                                       |
| `offerToken`             | `String`                         | A token to purchase the current offer.                                                                                                                   |
| `tags`                   | `String[]`                       | List of tags set for the current offer.                                                                                                                  |
| `pricingPhases`          | `QProductPricingPhase[]`         | A time-ordered list of pricing phases for the current offer.                                                                                             |
| `basePlan`               | `QProductPricingPhase`           | A base plan phase details.                                                                                                                               |
| `installmentPlanDetails` | `QProductInstallmentPlanDetails` | Installment-plan details, if the offer is an installment plan. `Null` otherwise.                                                                         |
| `trialPhase`             | `QProductPricingPhase`           | A trial phase details, if exists.                                                                                                                        |
| `introPhase`             | `QProductPricingPhase`           | An intro phase details, if exists. The intro phase is one of single or recurrent discounted payments.                                                    |
| `hasTrial`               | `Boolean`                        | `True`, if there is a trial phase in the current offer. `False` otherwise.                                                                               |
| `hasIntro`               | `Boolean`                        | `True`, if there is any intro phase in the current offer. `False` otherwise. The intro phase is one of single or recurrent discounted payments.          |
| `hasTrialOrIntro`        | `Boolean`                        | `True`, if there is any trial or intro phase in the current offer. `False` otherwise. The intro phase is one of single or recurrent discounted payments. |

`QProductPricingPhase` class represents a pricing phase, describing how a user pays at a point in time.

| Field                  | Type                                  | Description                                                                                                                          |
| ---------------------- | ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| `originalPricingPhase` | `PricingPhase`                        | Original pricing phase received from Google Play Billing Library                                                                     |
| `price`                | `QProductPrice`                       | Price for the current phase.                                                                                                         |
| `billingPeriod`        | `QSubscriptionPeriod`                 | The billing period for which the given price applies.                                                                                |
| `billingCycleCount`    | `Int`                                 | Number of cycles for which the billing period is applied.                                                                            |
| `recurrenceMode`       | `QProductPricingPhase.RecurrenceMode` | Recurrence mode for the pricing phase.                                                                                               |
| `type`                 | `QProductPricingPhase.Type`           | Type of the pricing phase.                                                                                                           |
| `isTrial`              | `Boolean`                             | `True`, if the current phase is a trial period. `False` otherwise.                                                                   |
| `isIntro`              | `Boolean`                             | `True`, if the current phase is an intro period. False otherwise. The intro phase is one of single or recurrent discounted payments. |
| `isBasePlan`           | `Boolean`                             | `True`, if the current phase represents the base plan. `False` otherwise.                                                            |

`QSubscriptionPeriod` class describes a subscription period.

| Field       | Type                       | Description                                                               |
| ----------- | -------------------------- | ------------------------------------------------------------------------- |
| `unitCount` | `Int`                      | A count of subsequent intervals.                                          |
| `unit`      | `QSubscriptionPeriod.Unit` | Interval unit.                                                            |
| `iso`       | `String`                   | ISO 8601 representation of the period, e.g. "P7D", meaning 7 days period. |

`QProductInstallmentPlanDetails` class describes the installment plan for a subscription offer (Google Play installment plans, where the user commits to a fixed number of upfront payments before the subscription falls back to a regular renewable plan).

| Field                               | Type                     | Description                                                                                                                                                     |
| ----------------------------------- | ------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `originalInstallmentPlanDetails`    | `InstallmentPlanDetails` | Original `InstallmentPlanDetails` received from Google Play Billing Library.                                                                                    |
| `commitmentPaymentsCount`           | `Int`                    | Committed payments count after a user signs up for this subscription plan.                                                                                      |
| `subsequentCommitmentPaymentsCount` | `Int`                    | Subsequent committed payments count after this subscription plan renews. `0` if the plan has no subsequent commitment and falls back to a regular monthly plan. |

`QProductInAppDetails` class contains all the information about the Google in-app product details.

| Field                                 | Type                          | Description                                                                         |
| ------------------------------------- | ----------------------------- | ----------------------------------------------------------------------------------- |
| `originalOneTimePurchaseOfferDetails` | `OneTimePurchaseOfferDetails` | Original one-time purchase offer details received from Google Play Billing Library. |
| `price`                               | `QProductPrice`               | The price of the in-app product.                                                    |

`QProductPrice` class contains information about the product's price.

| Field               | Type       | Description                                                                                       |
| ------------------- | ---------- | ------------------------------------------------------------------------------------------------- |
| `priceAmountMicros` | `Long`     | Total amount of money in micro-units, where 1,000,000 micro-units equal one unit of the currency. |
| `priceCurrencyCode` | `String`   | ISO 4217 currency code for price.                                                                 |
| `formattedPrice`    | `String`   | Formatted price for the payment, including its currency sign.                                     |
| `isFree`            | `Boolean`  | `True`, if the price is zero. `False` otherwise.                                                  |
| `currency`          | `Currency` | Currency object from the `priceCurrencyCode`. `Null` if failed to parse.                          |
| `currencySymbol`    | `String`   | Price currency symbol. `Null` if failed to parse.                                                 |

`QSubscriptionPeriod.Unit` is the enumeration of the following values: `Day`, `Week`, `Month`, `Year`, `Unknown`.

`QProductPricingPhase.RecurrenceMode` describes the recurrence mode of the pricing phase and contains the following values.

| Value               | Description                                                                   |
| ------------------- | ----------------------------------------------------------------------------- |
| `InfiniteRecurring` | The billing plan payment recurs for infinite billing periods unless canceled. |
| `FiniteRecurring`   | The billing plan payment recurs for a fixed number of billing periods.        |
| `NonRecurring`      | The billing plan payment is a one-time charge that does not repeat.           |
| `Unknown`           | Unknown recurrence mode.                                                      |

`QProductPricingPhase.Type` describes the type of the pricing phase and contains the following values.

| Value                        | Description                                                            |
| ---------------------------- | ---------------------------------------------------------------------- |
| `Regular`                    | Regular subscription without any discounts like trial or intro offers. |
| `FreeTrial`                  | A free phase.                                                          |
| `DiscountedSinglePayment`    | A phase with a discounted payment for a single period.                 |
| `DiscountedRecurringPayment` | A phase with a discounted payment for several periods.                 |
| `Unknown`                    | Unknown pricing phase type.                                            |

***

[Restore behavior](transferring)

[Stripe Integration](stripe-integration)
