Home | History | Annotate | Download | only in billing
      1 page.title=In-app Billing Overview
      2 parent.title=In-app Billing
      3 parent.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 
     11 recurring subscriptions.</li>
     12     <li>Supported for any app published on Google Play. You only need a Google 
     13 Play Developer Console account and a Google Wallet merchant account.</li>
     14     <li>Checkout processing is automatically handled by Google Play, with the 
     15 same 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 
     38 features that you need to understand in order to add In-app 
     39 Billing 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 
     43 exposed by the Google Play app that is installed on the device. The Google Play 
     44 app then conveys billing requests and responses between your 
     45 application and the Google Play server. In practice, your application never 
     46 directly communicates with the Google Play server. Instead, your application 
     47 sends billing requests to the Google Play application over interprocess 
     48 communication (IPC) and receives responses from the Google Play app. 
     49 Your application does not manage any network connections between itself and 
     50 the Google Play server.</p>
     51 <p>In-app Billing can be implemented only in applications that you publish 
     52 through Google Play. To complete in-app purchase requests, the Google Play app 
     53 must 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 
     56 compatibility across the range of Android devices. In-app Billing Version 3 is 
     57 supported on devices running Android 2.2 or higher that have the latest version 
     58 of 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 
     63 product details from Google Play, order in-app products, and quickly restore 
     64 items based on users' product ownership</li>
     65 <li>Order information is synchronously propagated to the device on purchase 
     66 completion</li>
     67 <li>All purchases are managed (that is, Google Play keeps track of the user's 
     68 ownership of in-app products). The user cannot own multiple copies of an in-app 
     69 item; 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 
     80 application to users. Examples of digital goods includes in-game currency, 
     81 application feature upgrades that enhance the user experience, and new content 
     82 for your application.</p>
     83 <p>You can use In-app Billing to sell only digital content. 
     84 You cannot use In-app Billing to sell physical goods, personal services, or 
     85 anything that requires physical delivery. Unlike with priced applications, once 
     86 the 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 
     88 responsible for delivering the digital content that you sell in your 
     89 applications. In-app products are always explicitly associated with one and 
     90 only one app. That is, one application cannot purchase an in-app product 
     91 published 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 
     95 how you monetize your application. In all cases, you define your products using 
     96 the 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 
     99 handles and tracks ownership for in-app products and subscriptions on your 
    100 application 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 
    104 In-app Billing application, and manage the various in-app products that are 
    105 available for purchase from your application.</p>
    106 <p>You can create a product list of 
    107 digital goods that are associated with your application, including items for 
    108 one-time purchase and recurring subscriptions. For each item, you can define 
    109 information such as the items unique product ID (also called its SKU), product 
    110 type, pricing, description, and how Google Play should handle and track 
    111 purchases for that product.</p>
    112 <p>You can also create test accounts to authorize 
    113 access for testing applications that are unpublished.</p>
    114 <p>To learn how to use the Developer Console to configure your in-app 
    115 products and product list, see 
    116 <a href="{@docRoot}google/play/billing/billing_admin.html">Administering 
    117 In-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 
    121 purchases, so your users experience a consistent and familiar purchase flow.</p>
    122 <p class="note"><strong>Important:</strong> You must have a Google Wallet
    123 merchant 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 
    125 specific in-app product. Google Play then handles all of the checkout details for 
    126 the transaction, including requesting and validating the form of payment and 
    127 processing the financial transaction.</p> 
    128 <p>When the checkout process is complete, 
    129 Google Play sends your application the purchase details, such as the order 
    130 number, the order date and time, and the price paid. At no point does your 
    131 application have to handle any financial transactions; that role is provided by 
    132 Google 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 
    136 through their own UI (first screen). Google Play responds to the request by 
    137 providing the checkout user interface (middle screen). When checkout is 
    138 complete, 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 
    143 provides a sample application that demonstrates how to sell in-app products and subscriptions 
    144 from 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 
    147 to implement in-app product and subscription purchases for a driving game. The 
    148 application demonstrates how to send In-app Billing requests, and handle 
    149 synchronous responses from Google Play. The application also shows how to record 
    150 item consumption with the API. The Version 3 sample includes convenience classes 
    151 for processing In-app Billing operations as well as perform automatic signature 
    152 verification.</p>
    153 
    154 <p class="caution"><strong>Recommendation</strong>: Make sure to obfuscate the 
    155 code in your application before you publish it. For more information, see
    156 <a href="{@docRoot}google/play/billing/billing_best_practices.html">Security 
    157 and 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
    161 earlier, 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 
    166 work with Version 3 as before.</li>
    167 <li>Unmanaged items that you have defined for existing applications will be 
    168 treated as managed products if you make a purchase request for these items using 
    169 the Version 3 API. You do not need to create a new product entry in Developer 
    170 Console for these items, and you can use the same product IDs to purchase these 
    171 items. They will still continue to be treated as unmanaged items if you make a 
    172 purchase request for them using the Version 2 or earlier API. 
    173 </ul>
    174 
    175 
    176 
    177 
    178 
    179