| page.title=In-app Billing Overview |
| parent.title=In-app Billing |
| parent.link=index.html |
| @jd:body |
| |
| <div id="qv-wrapper"> |
| <div id="qv"> |
| <h2>Quickview</h2> |
| <ul> |
| <li>Use In-app Billing to sell digital goods, including one-time items and recurring subscriptions.</li> |
| <li>Supported for any app published on Google Play. You only need a Google Play publisher account and a Google Checkout Merchant account.</li> |
| <li>Checkout processing is automatically handled by Google Play, with the same look-and-feel as for app purchases.</li> |
| </ul> |
| <h2>In this document</h2> |
| <ol> |
| <li><a href="#api">In-app Billing API</a></li> |
| <li><a href="#products">In-app Products</a> |
| <ol> |
| <li><a href="#prodtypes">Product Types</a> |
| </ol> |
| </li> |
| <li><a href="#console">Google Play Developer Console</a></li> |
| <li><a href="#checkout">Google Play Purchase Flow</a></li> |
| <li><a href="#samples">Sample Apps</a></li> |
| <li><a href="#migration">Migration Considerations</a></li> |
| </ol> |
| <h2>Related Samples</h2> |
| <ol> |
| <li><a href="{@docRoot}training/in-app-billing/preparing-iab-app.html#GetSample">Sample Application (V3)</a></li> |
| <li><a href="{@docRoot}google/play/billing/v2/billing_integrate.html#billing-download">Sample |
| Application (V2)</a></li> |
| </ol> |
| </div> |
| </div> |
| |
| <p>This documentation describes the fundamental In-app Billing components and |
| features that you need to understand in order to add In-app |
| Billing features into your application.</p> |
| |
| <h2 id="api">In-app Billing API</h2> |
| <p>Your application accesses the In-app Billing service using an API that is |
| exposed by the Google Play app that is installed on the device. The Google Play |
| app then conveys billing requests and responses between your |
| application and the Google Play server. In practice, your application never |
| directly communicates with the Google Play server. Instead, your application |
| sends billing requests to the Google Play application over interprocess |
| communication (IPC) and receives responses from the Google Play app. |
| Your application does not manage any network connections between itself and |
| the Google Play server.</p> |
| <p>In-app Billing can be implemented only in applications that you publish |
| through Google Play. To complete in-app purchase requests, the Google Play app |
| must be able to access the Google Play server over the network.</p> |
| |
| <p>Currently, Google Play supports two versions of the In-app Billing API. |
| To determine which version you should use, see <a href="#migration">Migration |
| Considerations</a>.</p> |
| <h4><a href="{@docRoot}google/play/billing/api.html">Version 3</a> (recommended)</h4> |
| <ul> |
| <li>Requests are sent through a streamlined API that allows you to easily request |
| product details from Google Play, order in-app products, and quickly restore |
| items based on users' product ownership</li> |
| <li>Order information is synchronously propagated to the device on purchase |
| completion</li> |
| <li>All purchases are “managed” (that is, Google Play keeps track of the user's |
| ownership of in-app products). The user cannot own multiple copies of an in-app |
| item; only one copy can be owned at any point in time</li> |
| <li>Purchased items can be consumed. When consumed, the item reverts to the |
| "unowned" state and can be purchased again from Google Play</li> |
| </ul> |
| <h4><a href="{@docRoot}google/play/billing/v2/api.html">Version 2</a></h4> |
| <ul> |
| <li>Requests are sent via a single API interface ({@code sendBillingRequest})</li> |
| <li>Responses from Google Play are asynchronous, in the form of broadcast intents</li> |
| <li>No consumption model provided. You have to implement your own solution</li> |
| <li>Provides support for subscriptions and unmanaged in-app purchase items, |
| as well as managed in-app products</li> |
| </ul> |
| <p>Both versions offer very broad compatibility across the range of Android |
| devices. In-app Billing Version 3 is supported on devices running Android 2.2 or |
| higher that have the latest version of the Google Play store installed |
| (over 90% of active devices). Version 2 offers similar compatibility. See |
| <a href="{@docRoot}google/play/billing/versions.html">Version Notes</a> for |
| more details.</p> |
| |
| <h2 id="products">In-app Products</h2> |
| <p>In-app products are the digital goods that you offer for sale from inside your |
| application to users. Examples of digital goods includes in-game currency, |
| application feature upgrades that enhance the user experience, and new content |
| for your application.</p> |
| <p>You can use In-app Billing to sell only digital content. |
| You cannot use In-app Billing to sell physical goods, personal services, or |
| anything that requires physical delivery. Unlike with priced applications, once |
| the user has purchased an in-app product there is no refund window.</p> |
| <p>Google Play does not provide any form of content delivery. You are |
| responsible for delivering the digital content that you sell in your |
| applications. In-app products are always explicitly associated with one and |
| only one app. That is, one application cannot purchase an in-app product |
| published for another app, even if they are from the same developer.</p> |
| |
| <h3 id="prodtypes">Product types</h3> |
| <p>In-app Billing supports different product types to give you flexibility in |
| how you monetize your application. In all cases, you define your products using |
| the Google Play Developer Console.</p> |
| <p>You can specify these types of products for your In-app Billing application |
| — <em>managed in-app products</em>, <em>subscriptions</em>, and <em>unmanaged |
| in-app products</em>. The term “managed” indicates that Google Play handles and |
| tracks ownership for in-app products on your application on a per user account |
| basis, while “unmanaged” indicates that you will manage the ownership information yourself.</p> |
| <p>To learn more about the product types supported by the different API versions, |
| see the related documentation for <a href="{@docRoot}google/play/billing/v2/api.html#billing-types">Version 2</a> and <a href="{@docRoot}google/play/billing/api.html#producttypes">Version 3</a>.</p> |
| |
| <h2 id="console">Google Play Developer Console</h2> |
| <p>The Developer Console is where you can publish your |
| In-app Billing application, and manage the various in-app products that are |
| available for purchase from your application.</p> |
| <p>You can create a product list of |
| digital goods that are associated with your application, including items for |
| one-time purchase and recurring subscriptions. For each item, you can define |
| information such as the item’s unique product ID (also called its SKU), product |
| type, pricing, description, and how Google Play should handle and track |
| purchases for that product.</p> |
| <p>You can also create test accounts to authorize |
| access for testing applications that are unpublished.</p> |
| <p>To learn how to use the Developer Console to configure your in-app |
| products and product list, see |
| <a href="{@docRoot}google/play/billing/billing_admin.html">Administering |
| In-app Billing</a>.</p> |
| |
| <h2 id="checkout">Google Play Purchase Flow</h2> |
| <p>Google Play uses the same checkout backend service as is used for application |
| purchases, so your users experience a consistent and familiar purchase flow.</p> |
| <p class="note"><strong>Important:</strong> You must have a Google Checkout |
| Merchant account to use the In-app Billing service on Google Play.</p> |
| <p>To initiate a purchase, your application sends a billing request for a |
| specific in-app product. Google Play then handles all of the checkout details for |
| the transaction, including requesting and validating the form of payment and |
| processing the financial transaction.</p> |
| <p>When the checkout process is complete, |
| Google Play sends your application the purchase details, such as the order |
| number, the order date and time, and the price paid. At no point does your |
| application have to handle any financial transactions; that role is provided by |
| Google Play.</p> |
| <img src="{@docRoot}images/in-app-billing/v3/iab_v3_checkout_flow.png" height="382" id="figure1" /> |
| <p class="img-caption"> |
| <strong>Figure 1.</strong> Applications initiate In-app Billing requests |
| through their own UI (first screen). Google Play responds to the request by |
| providing the checkout user interface (middle screen). When checkout is |
| complete, the application resumes. |
| </p> |
| |
| <h2 id="samples">Sample Applications</h2> |
| <p>To help you integrate In-app Billing into your application, the Android SDK |
| provides two sample applications that demonstrate how to sell in-app products |
| from inside an app.</p> |
| |
| <dl> |
| <dt><a href="{@docRoot}training/in-app-billing/preparing-iab-app.html#GetSample">TrivialDrive sample for the Version 3 API</a></dt> |
| <dd>This sample shows how to use the In-app Billing Version 3 API to implement |
| in-app product purchases for a driving game. The application demonstrates how to |
| send In-app Billing requests, and handle synchronous responses from Google Play. |
| The application also shows how to record item consumption with the API. The |
| Version 3 sample includes convenience classes for processing In-app Billing |
| operations as well as perform automatic signature verification.</dd> |
| |
| <dt><a href="{@docRoot}google/play/billing/v2/billing_integrate.html#billing-download">Dungeons sample for the Version 2 API</a></dt> |
| <dd>This sample demonstrates how to use the In-app Billing Version 2 API to sell |
| standard in-app products and subscriptions for an adventuring game. It also |
| contains examples of the database, user interface, and business logic you might |
| use to implement In-app Billing.</dd> |
| </dl> |
| <p class="caution"><strong>Important</strong>: It's <em>strongly recommended</em> |
| that you obfuscate the code in your application before you publish it. For |
| more information, see |
| <a href="{@docRoot}google/play/billing/billing_best_practices.html">Security |
| and Design</a>.</p> |
| |
| <h2 id="migration">Migration Considerations</h2> |
| <p>The following considerations may be applicable if you are planning to create a new |
| in-app biling application, or migrate your existing In-app Billing implementation |
| from the <a href="{@docRoot}google/play/billing/v2/api.html">Version 2</a> or |
| earlier API to the <a href="{@docRoot}google/play/billing/api.html">Version 3</a> API.</p> |
| <p>Google Play will continue to support both the Version 2 and Version 3 APIs for |
| some time, so you can plan to migrate to Version 3 at your own pace. The Google |
| Play team will give advance notice of any upcoming changes to the support |
| status of In-app Billing Version 2.</p> |
| <p>You can use the following table to decide which version of the API to use, |
| depending on the needs of your application.</p> |
| <p class="table-caption" id="table1"> |
| <strong>Table 1.</strong> Selecting the In-app Billing API Version for Your |
| Project</p> |
| |
| <table> |
| <tr> |
| <th scope="col">Choose Version 3 if ...</th> |
| <th scope="col">Choose Version 2 if ...</th> |
| </tr> |
| <tr> |
| <td> |
| <ul> |
| <li>You want to sell in-app products only (and not subscriptions)</li> |
| <li>You need synchronous order confirmations when purchases complete</li> |
| <li>You need to synchronously restore a user's current purchases</li> |
| </ul> |
| </td> |
| <td> |
| <ul> |
| <li>You want to sell subscriptions in your app</li> |
| </ul> |
| </td> |
| </tr> |
| </table> |
| <p>If you have published apps selling in-app products, note that:</p> |
| <ul> |
| <li>Managed items that you have previously defined in the Developer Console will |
| work with Version 3 as before.</li> |
| <li>Unmanaged items that you have defined for existing applications will be |
| treated as managed products if you make a purchase request for these items using |
| the Version 3 API. You do not need to create a new product entry in Developer |
| Console for these items, and you can use the same product IDs to purchase these |
| items. They will still continue to be treated as unmanaged items if you make a |
| purchase request for them using the Version 2 or earlier API. |
| </ul> |
| |
| |
| |
| |
| |