• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1page.title=In-app Billing Overview
2parent.title=In-app Billing
3parent.link=index.html
4@jd:body
5
6<div id="qv-wrapper">
7<div id="qv">
8  <h2>Quickview</h2>
9  <ul>
10    <li>Use In-app Billing to sell digital goods, including one-time items and
11recurring subscriptions.</li>
12    <li>Supported for any app published on Google Play. You only need a Google
13Play Developer Console account and a Google Wallet merchant account.</li>
14    <li>Checkout processing is automatically handled by Google Play, with the
15same look-and-feel as for app purchases.</li>
16  </ul>
17  <h2>In this document</h2>
18  <ol>
19    <li><a href="#api">In-app Billing API</a></li>
20    <li><a href="#products">In-app Products</a>
21       <ol>
22       <li><a href="#prodtypes">Product Types</a>
23       </ol>
24    </li>
25    <li><a href="#console">Google Play Developer Console</a></li>
26    <li><a href="#checkout">Google Play Purchase Flow</a></li>
27    <li><a href="#samples">Sample App</a></li>
28    <li><a href="#migration">Migration Considerations</a></li>
29  </ol>
30   <h2>Related Samples</h2>
31  <ol>
32    <li><a href="{@docRoot}training/in-app-billing/preparing-iab-app.html#GetSample">Sample Application (V3)</a></li>
33  </ol>
34</div>
35</div>
36
37<p>This documentation describes the fundamental In-app Billing components and
38features that you need to understand in order to add In-app
39Billing features into your application.</p>
40
41<h2 id="api">In-app Billing API</h2>
42<p>Your application accesses the In-app Billing service using an API that is
43exposed by the Google Play app that is installed on the device. The Google Play
44app then conveys billing requests and responses between your
45application and the Google Play server. In practice, your application never
46directly communicates with the Google Play server. Instead, your application
47sends billing requests to the Google Play application over interprocess
48communication (IPC) and receives responses from the Google Play app.
49Your application does not manage any network connections between itself and
50the Google Play server.</p>
51<p>In-app Billing can be implemented only in applications that you publish
52through Google Play. To complete in-app purchase requests, the Google Play app
53must be able to access the Google Play server over the network.</p>
54
55<p>In-app billing Version 3 is the latest version, and maintains very broad
56compatibility across the range of Android devices. In-app Billing Version 3 is
57supported on devices running Android 2.2 or higher that have the latest version
58of the Google Play store installed (<a href="{@docRoot}about/dashboards/index.html">a vast majority</a> of active devices).</p>
59
60<h4>Version 3 features</h4>
61<ul>
62<li>Requests are sent through a streamlined API that allows you to easily request
63product details from Google Play, order in-app products, and quickly restore
64items based on users' product ownership</li>
65<li>Order information is synchronously propagated to the device on purchase
66completion</li>
67<li>All purchases are “managed” (that is, Google Play keeps track of the user's
68ownership of in-app products). The user cannot own multiple copies of an in-app
69item; only one copy can be owned at any point in time</li>
70<li>Purchased items can be consumed. When consumed, the item reverts to the
71"unowned" state and can be purchased again from Google Play</li>
72<li>Provides support for <a
73  href="{@docRoot}google/play/billing/billing_subscriptions.html">subscriptions</a></li>
74</ul>
75<p>For details about other versions of In-app Billing, see the
76<a href="{@docRoot}google/play/billing/versions.html">Version Notes</a>.</p>
77
78<h2 id="products">In-app Products</h2>
79<p>In-app products are the digital goods that you offer for sale from inside your
80application to users. Examples of digital goods includes in-game currency,
81application feature upgrades that enhance the user experience, and new content
82for your application.</p>
83<p>You can use In-app Billing to sell only digital content.
84You cannot use In-app Billing to sell physical goods, personal services, or
85anything that requires physical delivery. Unlike with priced applications, once
86the user has purchased an in-app product there is no refund window.</p>
87<p>Google Play does not provide any form of content delivery. You are
88responsible for delivering the digital content that you sell in your
89applications. In-app products are always explicitly associated with one and
90only one app. That is, one application cannot purchase an in-app product
91published for another app, even if they are from the same developer.</p>
92
93<h3 id="prodtypes">Product types</h3>
94<p>In-app Billing supports different product types to give you flexibility in
95how you monetize your application. In all cases, you define your products using
96the Google Play Developer Console.</p>
97<p>You can specify these types of products for your In-app Billing application
98— <em>managed in-app products</em> and <em>subscriptions</em>. Google Play
99handles and tracks ownership for in-app products and subscriptions on your
100application on a per user account basis. <a href="{@docRoot}google/play/billing/api.html#producttypes">Learn more about the product types supported by In-app Billing Version 3</a>.</p>
101
102<h2 id="console">Google Play Developer Console</h2>
103<p>The Developer Console is where you can publish your
104In-app Billing application, and manage the various in-app products that are
105available for purchase from your application.</p>
106<p>You can create a product list of
107digital goods that are associated with your application, including items for
108one-time purchase and recurring subscriptions. For each item, you can define
109information such as the item’s unique product ID (also called its SKU), product
110type, pricing, description, and how Google Play should handle and track
111purchases for that product.</p>
112<p>You can also create test accounts to authorize
113access for testing applications that are unpublished.</p>
114<p>To learn how to use the Developer Console to configure your in-app
115products and product list, see
116<a href="{@docRoot}google/play/billing/billing_admin.html">Administering
117In-app Billing</a>.</p>
118
119<h2 id="checkout">Google Play Purchase Flow</h2>
120<p>Google Play uses the same checkout backend service as is used for application
121purchases, so your users experience a consistent and familiar purchase flow.</p>
122<p class="note"><strong>Important:</strong> You must have a Google Wallet
123merchant account to use the In-app Billing service on Google Play.</p>
124<p>To initiate a purchase, your application sends a billing request for a
125specific in-app product. Google Play then handles all of the checkout details for
126the transaction, including requesting and validating the form of payment and
127processing the financial transaction.</p>
128<p>When the checkout process is complete,
129Google Play sends your application the purchase details, such as the order
130number, the order date and time, and the price paid. At no point does your
131application have to handle any financial transactions; that role is provided by
132Google Play.</p>
133<img src="{@docRoot}images/in-app-billing/v3/iab_v3_checkout_flow.png" height="382" id="figure1" />
134<p class="img-caption">
135  <strong>Figure 1.</strong> Applications initiate In-app Billing requests
136through their own UI (first screen). Google Play responds to the request by
137providing the checkout user interface (middle screen). When checkout is
138complete, the application resumes.
139</p>
140
141<h2 id="samples">Sample Application</h2>
142<p>To help you integrate In-app Billing into your application, the Android SDK
143provides a sample application that demonstrates how to sell in-app products and subscriptions
144from inside an app.</p>
145
146<p>The <a href="{@docRoot}training/in-app-billing/preparing-iab-app.html#GetSample">TrivialDrive sample for the Version 3 API</a> sample shows how to use the In-app Billing Version 3 API
147to implement in-app product and subscription purchases for a driving game. The
148application demonstrates how to send In-app Billing requests, and handle
149synchronous responses from Google Play. The application also shows how to record
150item consumption with the API. The Version 3 sample includes convenience classes
151for processing In-app Billing operations as well as perform automatic signature
152verification.</p>
153
154<p class="caution"><strong>Recommendation</strong>: Make sure to obfuscate the
155code in your application before you publish it. For more information, see
156<a href="{@docRoot}google/play/billing/billing_best_practices.html">Security
157and Design</a>.</p>
158
159<h2 id="migration">Migration Considerations</h2>
160<p>If you have an existing In-app Billing implementation that uses Version 2 or
161earlier, it is strongly recommended that you migrate to <a href="{@docRoot}google/play/billing/api.html">In-app Billing Version 3</a> at your earliest convenience.</p>
162
163<p>If you have published apps selling in-app products, note that:</p>
164<ul>
165<li>Managed items and subscriptions that you have previously defined in the Developer Console will
166work with Version 3 as before.</li>
167<li>Unmanaged items that you have defined for existing applications will be
168treated as managed products if you make a purchase request for these items using
169the Version 3 API. You do not need to create a new product entry in Developer
170Console for these items, and you can use the same product IDs to purchase these
171items. They will still continue to be treated as unmanaged items if you make a
172purchase request for them using the Version 2 or earlier API.
173</ul>
174
175
176
177
178
179