Home | History | Annotate | Download | only in billing
      1 page.title=Administering In-app Billing
      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>In this document</h2>
      9   <ol>
     10     <li><a href="#billing-list-setup">Creating a Product List</a></li>
     11     <li><a href="#billing-purchase-type">Choosing a Product Type</a></li>
     12     <li><a href="#billing-testing-setup">Setting up Test Accounts</a></li>
     13     <li><a href="#billing-refunds">Handling Refunds</a></li>
     14     <li><a href="#billing-refunds">Working with Order Numbers</a></li>
     15     <li><a href="#billing-support">Where to Get Support</a></li>
     16   </ol>
     17 
     18   </ol>
     19   <h2>See also</h2>
     20   <ol>
     21     <li><a href="{@docRoot}google/play/billing/billing_overview.html">Overview of In-app
     22     Billing</a></li>
     23   </ol>
     24 </div>
     25 </div>
     26 
     27 <p>In-app billing frees you from processing financial transactions, but you still need to perform a
     28 few administrative tasks, including setting up and maintaining your product list on the Google Play
     29 Developer Console, registering test accounts, and handling refunds when necessary.</p>
     30 
     31 <p>You must have a Google Play publisher account to register test accounts. And you must have a
     32 Google Wallet merchant account to create a product list and issue refunds to your users. If you
     33 already have a publisher account on Google Play, you can use your existing account. You do not
     34 need to register for a new account to support in-app billing.</p>
     35 
     36 <p>If you do not have a publisher account, you can register as a Google Play
     37 developer and set up a publisher account at the <a
     38 href="http://play.google.com/apps/publish">Google Play Developer Console</a>. If you do not
     39 have a Google Wallet merchant account, you can register for one through the
     40 Developer Console.</p>
     41 
     42 <h2 id="billing-list-setup">Creating a Product List</h2>
     43 
     44 <p>The Google Play Developer Console provides a product list for each of your published
     45 applications. You can sell an item using Google Play's in-app billing feature only if the item is
     46 listed on an application's product list. Each application has its own product list; you cannot sell
     47 items that are listed in another application's product list.</p>
     48 
     49 <p>You can access an application's product list by clicking the <strong>In-App Products</strong>
     50 link in applications listed in your developer account (see
     51 figure 1). The <strong>In-App Products</strong> link appears only if you have a Google Wallet
     52 merchant account and the application's manifest includes the <code>com.android.vending.BILLING</code>
     53 permission.</p>
     54 
     55 <p>A product list specifies items you are selling in an application &mdash; in-app products,
     56 subscriptions, or a combination of both. For each item, the product list contains information such as a product id,
     57 product description, and price. The product list stores only metadata about the items
     58 you are selling in your application. It does not store any digital content. You are responsible for
     59 storing and delivering the digital content that you sell in your applications.</p>
     60 
     61 <div style="margin:1em;">
     62 <img style="border:1px solid #ddd;padding-bottom:.5em" src="{@docRoot}images/in-app-billing/billing_product_list.png" xheight="548" id="figure1" />
     63 <p class="img-caption" style="padding-left:.5em;">
     64   <strong>Figure 1.</strong> You can access an application's product list by clicking the
     65   <strong>In-App Products</strong> link in the main Apps navigation.
     66 </p>
     67 </div>
     68 
     69 <p>You can create a product list for any published application, or any
     70 application in the alpha or beta channels, that's been
     71 uploaded and saved to the Developer Console. However, you must have a Google Wallet merchant
     72 account and the application's manifest must include the <code>com.android.vending.BILLING</code>
     73 permission. If an application's manifest does not include this permission, you will be able to edit
     74 existing items in the product list but you will not be able to add new items to the list. For more
     75 information about this permission, see
     76 <a href="{@docRoot}google/play/billing/billing_integrate.html#billing-permission">Updating Your
     77 Application's Manifest</a>.</p>
     78 
     79 <p class="note"><strong>Note:</strong> Previously you could test an app by
     80 uploading an unpublished "draft" version. This functionality is no longer
     81 supported; instead, you must publish it to the alpha or beta distribution
     82 channel. For more information, see <a
     83 href="{@docRoot}google/play/billing/billing_testing.html#draft_apps">Draft Apps
     84 are No Longer Supported</a>.
     85 
     86 <p>In addition, an application package can have only one product list. If you create a product
     87 list for an application, and you use the <a
     88 href="{@docRoot}google/play/publishing/multiple-apks.html">multiple APK feature</a> to distribute
     89 more than one APK for that application, the product list applies to all APK versions that are
     90 associated with the application listing. You cannot create individual product lists for each APK if
     91 you are using the multiple APK feature.</p>
     92 
     93 <p>You can add items to a product list two ways: you can add items one at a time by using the In-app
     94 Products UI (see figure 2), or you can add a batch of items by importing the items from a
     95 comma-separated values (CSV) file. Adding items one at a time is useful if your
     96 application has only a few in-app items or you are adding only a few items to a
     97 product list for testing purposes. The CSV file method is useful if your application has a large
     98 number of in-app items.</p>
     99 
    100 <p class="note"><strong>Note:</strong> Batch upload of product lists containing subscriptions is not yet supported.</p>
    101 
    102 <h3 id="billing-form-add">Adding items one at a time to a product list</h3>
    103 
    104 <p>To add an item to a product list using the In-app Products UI, follow these steps:</p>
    105 
    106 <ol>
    107   <li><a href="http://play.google.com/apps/publish">Log in</a> to your publisher account.</li>
    108   <li>In the <strong>All Applications</strong> panel, click on the
    109   app name, then select <strong>In-app Products</strong>.</li>
    110   <li>Click <strong>Add new product</strong> (see figure 2) and provide details about the item you are
    111   selling and then click <strong>Save</strong> or <strong>Publish</strong>.</li>
    112 </ol>
    113 
    114 <div style="margin:1em;">
    115 <img style="border:1px solid #ddd;padding-bottom:.5em;" src="{@docRoot}images/in-app-billing/billing_add.png" height="300" id="figure2" />
    116 <p class="img-caption" style="padding-left:.5em;">
    117   <strong>Figure 2.</strong> The Add New Product page lets you add items to an
    118   application's product list.
    119 </p>
    120 </div>
    121 
    122 <p>You must enter the following information for each item in a product list:</p>
    123 <ul>
    124   <li><strong>In-app Product ID</strong>
    125     <p>Product IDs are unique across an application's namespace. A product ID must start with a
    126     lowercase letter or a number, and must be composed using only lowercase letters (a-z), numbers
    127     (0-9), underlines (_), and dots (.). The product ID "android.test" is reserved, as are all
    128     product IDs that start with "android.test."</p>
    129     <p>In addition, you cannot modify an item's product ID after it is created, and you cannot reuse
    130     a product ID.</p>
    131   </li>
    132   <li><strong>Product Type</strong>
    133     <p>The product type can be <strong>Managed per user account</strong>, <strong>Unmanaged</strong>,
    134     or <strong>Subscription</strong>. You can never change an item's product type after you set it. For more
    135     information, see <a href="#billing-purchase-type">Choosing a product type</a> later in this
    136     document.</p>
    137   </li>
    138   <li><strong>Publishing State</strong>
    139     <p>An item's publishing state can be <strong>Published</strong> or <strong>Unpublished
    140     </strong>. To be visible to a user during checkout, an item's publishing state must be set to
    141     <strong>Published</strong> and the item's application must be published on Google Play.</p>
    142     <p class="note"><strong>Note:</strong> This is not true for test accounts. An item is visible to
    143     a test account if the application is not published and the item is published. See <a
    144     href="{@docRoot}google/play/billing/billing_testing.html#billing-testing-real">Testing In-app
    145     Billing</a> for more information.</p>
    146   </li>
    147   <li><strong>Languages and Translations</strong>
    148     <p>You can provide localized titles and descriptions for your in-app
    149     products using the Add Translations button. If you want Google Play to translate
    150     your title and description for you, based on the title and description in the
    151     default language, just click the languages that you want to offer. If you want
    152     to provide custom translations in specific languages, you can also do that. By
    153     default, an in-app product inherits its default language from the parent
    154     application.</p>
    155   </li>
    156   <li><strong>Title</strong>
    157     <p>The title is a short descriptor for the item. For example, "Sleeping potion." Titles must be
    158     unique across an application's namespace. Every item must have a title. The title is visible to
    159     users during checkout. For optimum appearance, titles should be no longer than 25 characters;
    160     however, titles can be up to 55 characters in length.</p>
    161   </li>
    162   <li><strong>Description</strong>
    163     <p>The description is a long descriptor for the item. For example, "Instantly puts creatures to
    164     sleep. Does not work on angry elves." Every item must have a description. Descriptions can be up to 80 characters in length.</p>
    165   </li>
    166   <li><strong>Price</strong>
    167     <p>You must provide a default price in your home currency. You can also provide prices in other
    168     currencies, but you can do this only if a currency's corresponding country is listed as a
    169     target country for your application. You can specify target countries on the Edit Application
    170     page in the Google Play developer console.</p>
    171     <p>To specify prices in other currencies, you can manually enter the price for each
    172     currency or you can click <strong>Auto Fill</strong> and let Google Play do a one-time
    173     conversion from your home currency to the currencies you are targeting (see figure 3).</p>
    174     <p>For subscription items, note that you can not change the item's price once you have published it. </p>
    175   </li>
    176 </ul>
    177 
    178 <div style="margin:1em;">
    179 <img style="border:1px solid #ddd;padding-bottom:.5em" src="{@docRoot}images/in-app-billing/billing_list_form_2.png" xheight="1226" id="figure3" />
    180 <p class="img-caption" style="padding-left:.5em;">
    181   <strong>Figure 3.</strong> Specifying additional currencies for an in-app product.
    182 </p>
    183 </div>
    184 
    185 <p>For more information about product IDs and product lists, see <a
    186 href="http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&answer=1072599">Creating In-App Product
    187 IDs</a>. For more information about pricing, see <a
    188 href="http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&answer=1153485">In-App Billing
    189 Pricing</a>.</p>
    190 
    191 <p class="note"><strong>Note</strong>: Be sure to plan your product ID namespace. You cannot reuse
    192 or modify product IDs after you save them.</p>
    193 
    194 <h3 id="billing-bulk-add">Adding a batch of items to a product list</h3>
    195 
    196 <p>To add a batch of items to a product list using a CSV file, you first need to create your CSV
    197 file. The data values that you specify in the CSV file represent the same data values you specify
    198 manually through the In-app Products UI (see <a href="#billing-form-add">Adding items one at a time
    199 to a product list</a>). 
    200 
    201 <p>If you are importing and exporting CSV files with in-app products, please
    202 keep tax-inclusive pricing in mind. If you use auto-fill, you can provide a
    203 tax-exclusive default price and tax-inclusive prices will be auto-filled. If you
    204 do not use auto-fill, prices you provide must include tax.</p>
    205 
    206 <p class="note"><strong>Note:</strong> Batch upload of product lists containing subscriptions is not yet supported.</p>
    207 
    208 The CSV file uses commas (,) and semi-colons (;) to separate data values.
    209 Commas are used to separate primary data values, and semi-colons are used to separate subvalues. For
    210 example, the syntax for the CSV file is as follows:</p>
    211 
    212 <p>"<em>product_id</em>","<em>publish_state</em>","<em>purchase_type</em>","<em>autotranslate</em>
    213 ","<em>locale</em>; <em>title</em>; <em>description</em>","<em>autofill</em>","<em>country</em>;
    214 <em>price</em>"
    215 </p>
    216 
    217 <p>Descriptions and usage details are provided below.</p>
    218 
    219 <ul>
    220   <li><em>product_id</em>
    221     <p>This is equivalent to the In-app Product ID setting in the In-app Products UI. If you specify
    222     a <em>product_id</em> that already exists in a product list, and you choose to overwrite
    223     the product list while importing the CSV file, the data for the existing item is overwritten with
    224     the values specified in the CSV file. The overwrite feature does not delete items that are on a
    225     product list but not present in the CSV file.</p>
    226   </li>
    227   <li><em>publish_state</em>
    228     <p>This is equivalent to the Publishing State setting in the In-app Products UI. Can be <code>
    229     published</code> or <code>unpublished</code>.</p>
    230   </li>
    231   <li><em>purchase_type</em>
    232     <p>This is equivalent to the Product Type setting in the In-app Products UI. Can be <code>
    233     managed_by_android</code>, which is equivalent to <strong>Managed per user account
    234     </strong> in the In-app Products UI, or <code>managed_by_publisher</code>, which is equivalent
    235     to <strong>Unmanaged</strong> in the In-app Products UI.</p>
    236   </li>
    237   <li><em>autotranslate</em>
    238     <p>This is equivalent to selecting the <strong>Fill fields with auto translation</strong>
    239     checkbox in the In-app Products UI. Can be <code>true</code> or <code>false</code>.</p>
    240   </li>
    241   <li><em>locale</em>
    242     <p>This is equivalent to the Language setting in the In-app Products UI. You must have an entry
    243     for the default locale. The default locale must be the first entry in the list of
    244     locales, and it must include a <em>title</em> and <em>description</em>. If you want to provide
    245     translated versions of the <em>title</em> and <em>description</em> in addition to the default,
    246     you must use the following syntax rules:</p>
    247     <p>If <em>autotranslate</em> is <code>true</code>, you must specify the default locale,
    248     default title, default description, and other locales using the following format:</p>
    249     <p>"true,"<em>default_locale</em>; <em>default_locale_title</em>;
    250     <em>default_locale_description</em>; <em>locale_2</em>;    <em>locale_3</em>, ..."</p>
    251     <p>If <em>autotranslate</em> is <code>false</code>, you must specify the default locale,
    252     default title, and default description as well as the translated titles and descriptions using
    253     the following format:</p>
    254     <p>"false,"<em>default_locale</em>; <em>default_locale_title</em>;
    255     <em>default_locale_description</em>; <em>locale_2</em>; <em>locale_2_title</em>;
    256     <em>local_2_description</em>; <em>locale_3</em>; <em>locale_3_title</em>;
    257      <em>locale_3_description</em>; ..."</p>
    258     <p>See table 1 for a list of the language codes you can use with the <em>locale</em> field.</p>
    259   </li>
    260   <li><em>title</em>
    261     <p>This is equivalent to the Title setting in the In-app Products UI. If the <em>title</em>
    262     contains a semicolon, it must be escaped with a backslash (for example, "\;"). A backslash
    263     should also be escaped with a backslash (for example, "\\">.</p>
    264   </li>
    265   <li><em>description</em>
    266     <p>This is equivalent to the Description in the In-app Products UI. If the <em>description</em>
    267     contains a semicolon, it must be escaped with a backslash (for example, "\;"). A backslash
    268     should also be escaped with a backslash (for example, "\\">.</p>
    269   </li>
    270   <li><em>autofill</em>
    271     <p>This is equivalent to clicking <strong>Auto Fill</strong> in the In-app Products UI. Can be
    272     <code>true</code> or <code>false</code>. The syntax for specifying the <em>country</em>
    273     and <em>price</em> varies depending on which <em>autofill</em> setting you use.</p>
    274     <p>If <em>autofill</em> is set to <code>true</code>, you need to specify only the default
    275     price in your home currency and you must use this syntax:</p>
    276     <p>"true","<em>default_price_in_home_currency</em>"
    277     <p>If <em>autofill</em> is set to <code>false</code>, you need to specify a <em>country</em>
    278     and a <em>price</em> for each currency and you must use the following syntax:</p>
    279     <p>"false", "<em>home_country</em>; <em>default_price_in_home_currency</em>; <em>country_2</em>;
    280     <em>country_2_price</em>; <em>country_3</em>; <em>country_3_price</em>; ..."</p>
    281   </li>
    282   <li><em>country</em>
    283     <p>The country for which you are specifying a price. You can only list countries that your
    284     application is targeting. The country codes are two-letter uppercase
    285     ISO country codes (such as "US") as defined by
    286     <a href="http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2">ISO 3166-2</a>.</p>
    287   </li>
    288   <li><em>price</em>
    289     <p>This is equivalent to the Price in the In-app Products UI. The price must be specified in
    290     micro-units. To convert a currency value to micro-units, you multiply the real value by 1,000,000.
    291     For example, if you want to sell an in-app item for $1.99 you specify 1990000 in the
    292     <em>price</em> field.</p>
    293   </li>
    294 </ul>
    295 
    296 <p class="table-caption" id="language-table"><strong>Table 1.</strong> Language codes you can use
    297 with the <em>locale</em> field.</p>
    298 
    299 <table>
    300 
    301 <tr>
    302 <th>Language</th>
    303 <th>Code</th>
    304 <th>Language</th>
    305 <th>Code</th>
    306 </tr>
    307 <tr>
    308 <td>Chinese</td>
    309 <td>zh_TW</td>
    310 <td>Italian</td>
    311 <td>it_IT</td>
    312 </tr>
    313 <tr>
    314 <td>Czech</td>
    315 <td>cs_CZ</td>
    316 <td>Japanese</td>
    317 <td>ja_JP</td>
    318 </tr>
    319 <tr>
    320 <td>Danish</td>
    321 <td>da_DK</td>
    322 <td>Korean</td>
    323 <td>ko_KR</td>
    324 </tr>
    325 <tr>
    326 <td>Dutch</td>
    327 <td>nl_NL</td>
    328 <td>Norwegian</td>
    329 <td>no_NO</td>
    330 </tr>
    331 <tr>
    332 <td>English</td>
    333 <td>en_US</td>
    334 <td>Polish</td>
    335 <td>pl_PL</td>
    336 </tr>
    337 <tr>
    338 <td>French</td>
    339 <td>fr_FR</td>
    340 <td>Portuguese</td>
    341 <td>pt_PT</td>
    342 </tr>
    343 <tr>
    344 <td>Finnish</td>
    345 <td>fi_FI</td>
    346 <td>Russian</td>
    347 <td>ru_RU</td>
    348 </tr>
    349 <tr>
    350 <td>German</td>
    351 <td>de_DE</td>
    352 <td>Spanish</td>
    353 <td>es_ES</td>
    354 </tr>
    355 <tr>
    356 <td>Hebrew</td>
    357 <td>iw_IL</td>
    358 <td>Swedish</td>
    359 <td>sv_SE</td>
    360 </tr>
    361 <tr>
    362 <td>Hindi</td>
    363 <td>hi_IN</td>
    364 <td>--</td>
    365 <td>--</td>
    366 </tr>
    367 </table>
    368 
    369 <p>To import the items that are specified in your CSV file, do the following:</p>
    370 
    371 <ol>
    372   <li><a href="http://play.google.com/apps/publish">Log in</a> to your publisher account.</li>
    373   <li>In the <strong>All Applications</strong> panel, click on the app
    374   name, then select <strong>In-app Products</strong>.</li>
    375   <li>On the In-app Products List page, click <strong>Import/Export</strong>
    376   &gt; <strong>Import in-app products from CSV file</strong>, then select your
    377   CSV file.
    378     <p>The CSV file must be on your local computer or on a local disk that is connected to your
    379     computer.</p>
    380   </li>
    381   <li>Select the <strong>Overwrite</strong> checkbox if you want to overwrite existing items in
    382   your product list.
    383     <p>This option overwrites values of existing items only if the value of the <em>product_id</em>
    384     in the CSV file matches the In-app Product ID for an existing item in the product list.
    385     Overwriting does not delete items that are on a product list but not present in the CSV
    386     file.</p>
    387   </li>
    388 </ol>
    389 
    390 <p>You can also export an existing product list to a CSV file by clicking <strong>Export to CSV
    391 </strong> on the In-app Product List page. This is useful if you have manually added items to
    392 a product list and you want to start managing the product list through a CSV file.</p>
    393 
    394 <h3 id="billing-purchase-type">Choosing a Product Type</h3>
    395 
    396 <p>An item's product type controls how Google Play manages the purchase of the item. There are
    397 several product types, including "managed per user account", "unmanaged," and "subscription." However,
    398 note that the product types supported vary
    399 across In-app Billing Version, so you should always choose a product type that's valid for the
    400 version of In-app BIlling that your app uses. </p>
    401 
    402 <p>For details, refer to the documentation for <a
    403 href="{@docRoot}google/play/billing/api.html#producttype">In-app Billing Version
    404 3</a> or <a href="{@docRoot}google/play/billing/v2/api.html#producttype">In-app
    405 Billing Version 2</a>.
    406 
    407 <h2 id="billing-refunds">Handling Refunds</h2>
    408 
    409 <p>In-app billing does not allow users to send a refund request to Google Play. Refunds for
    410 in-app purchases must be directed to you (the application developer). You can then process the
    411 refund through your Google Wallet merchant account. When you do this, Google Play receives a
    412 refund notification from Google Wallet, and Google Play sends a refund message to your
    413 application. For more information, see <a
    414 href="{@docRoot}google/play/billing/v2/api.html#billing-action-notify">Handling
    415 IN_APP_NOTIFY messages</a> and <a
    416 href="http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&answer=1153485">In-app Billing
    417 Pricing</a>.</p>
    418 
    419 <p class="caution"><strong>Important:</strong> You cannot use the Google Wallet API to issue
    420 refunds or cancel In-app Billing transactions. You must do this manually through your Google
    421 Wallet merchant account. However, you can use the Google Wallet API to retrieve order
    422 information.</p>
    423 
    424 <h2 id="orderId">Working with Order Numbers</h2>
    425 
    426 <p>When a user purchases an in-app item, Google Wallet assigns the transaction
    427 a unique and permanent order number. Google Play provides that order number to
    428 you at the conclusion of the purchase flow, as the value of the
    429 <code>orderId</code> field of the <code>PURCHASE_STATE_CHANGED</code>
    430 intent.</p>
    431 
    432 <p>In your app, you can use the order number as a general-purpose identifier for
    433 the in-app purchase transaction. After the purchase, you can use the order
    434 number as a means of tracking the transaction in reconciliation reports and for
    435 customer support.</p>
    436 
    437 <p>The order number itself is a string consisting of numbers only, with a format
    438 assigned and managed by Google Wallet.</p>
    439 
    440 <p>For transactions dated 5 December 2012 or later, Google Wallet assigns a
    441 Merchant Order Number (rather than a Google Order Number) and reports the Merchant
    442 Order Number as the value of <code>orderID</code>. Here's an
    443 example:</p>
    444 
    445 <pre>"orderId" : "12999556515565155651.5565135565155651"</pre>
    446 
    447 <p>For transactions dated previous to 5 December 2012, Google checkout assigned
    448 a Google Order Number and reported that number as the value of
    449 <code>orderID</code>. Here's an example of an <code>orderID</code> holding a
    450 Google Order Number:</p>
    451 
    452 <pre>"orderId" : "556515565155651"</pre>
    453 
    454 <h2 id="billing-testing-setup">Setting Up Test Accounts</h2>
    455 
    456 <p>The Google Play Developer Console lets you set up one or more test accounts. A test account is a
    457 regular Google account that you register on the Developer Console as a test account. Test accounts are
    458 authorized to make in-app purchases from applications that you have uploaded to the Google Play
    459 Developer Console but have not yet published.</p>
    460 
    461 <p>You can use any Google account as a test account. Test accounts are useful if you want to let
    462 multiple people test In-app Billing on applications without giving them access to your publisher
    463 account's sign-in credentials. If you want to own and control the test accounts, you can create the
    464 accounts yourself and distribute the credentials to your developers or testers.</p>
    465 
    466 <p>Test accounts have three limitations:</p>
    467 
    468 <ul>
    469   <li>Test account users can make purchase requests only within applications that are already
    470   uploaded to your publisher account (although the application doesn't need to be published).</li>
    471   <li>Test accounts can only be used to purchase items that are listed (and published) in an
    472   application's product list.</li>
    473   <li>Test account users do not have access to your publisher account and cannot upload applications
    474   to your publisher account.</li>
    475 </ul>
    476 
    477 <p>To add test accounts to your publisher account, follow these steps:</p>
    478 
    479 <ol>
    480   <li><a href="http://play.google.com/apps/publish">Log in</a> to your publisher account.</li>
    481   <li>Click the <strong>Settings</strong> icon.</li>
    482   <li>Locate the License Testing panel.</li>
    483   <li>Add the email addresses for the test accounts you want to register,
    484   separating each account with a comma.</li>
    485   <li>Click <strong>Save</strong> to save your profile changes.</li>
    486 </ol>
    487 
    488 <h3 id="license_key">Getting an app's license key</h3>
    489 
    490 <p>The Google Play Developer Console provides a public licensing key for each
    491 app. To get the key for an app, follow these steps:</p>
    492 <ol>
    493   <li>Open the <strong>All Applications</strong> panel.</li>
    494   <li>Click on the app name, then select <strong>Services &amp; APIs</strong>.</li>
    495   <li>Scroll down to the <strong>Your License Key for this Application</strong>
    496 field to locate the key for the app, as shown in the figure below.</li>
    497 </ol>
    498 <p>Previously, the Developer Console provided a single public key per developer
    499 account. To transition apps to the new per-app public key, the Developer Console
    500 set the app-specific key as the former developer key. This ensures compatibility
    501 for apps that depend on the (former) developer key. </p>
    502 
    503 <div style="margin:1em;">
    504 <img style="border:1px solid #ddd;padding-bottom:.5em" src="{@docRoot}images/in-app-billing/billing_app_key.png" xheight="510" id="figure4" />
    505 <p class="img-caption" style="padding-left:.5em;">
    506   <strong>Figure 4.</strong> You can find the license key for each app in the
    507   <strong>Services &amp; APIs</strong> panel.
    508 </p>
    509 </div>
    510 
    511 <h2 id="billing-support">Where to Get Support</h2>
    512 
    513 <p>If you have questions or encounter problems while implementing In-app Billing, contact the
    514 support resources listed in the following table (see table 2). By directing your queries to the
    515 correct forum, you can get the support you need more quickly.</p>
    516 
    517 <p class="table-caption" id="support-table"><strong>Table 2.</strong> Developer support resources
    518 for Google Play In-app Billing.</p>
    519 
    520 <table>
    521 
    522 <tr>
    523 <th>Support Type</th>
    524 <th>Resource</th>
    525 <th>Range of Topics</th>
    526 </tr>
    527 <tr>
    528 <td rowspan="2">Development and testing issues</td>
    529 <td>Google Groups: <a
    530 href="http://groups.google.com/group/android-developers">android-developers</a> </td>
    531 <td rowspan="2">In-app billing integration questions, user experience ideas, handling of responses,
    532 obfuscating code, IPC, test environment setup.</td>
    533 </tr>
    534 <tr>
    535 <td>Stack Overflow: <a
    536 href="http://stackoverflow.com/questions/tagged/android">http://stackoverflow.com/questions/tagged/
    537 android</a></td>
    538 </tr>
    539 <tr>
    540 <td>Billing issue tracker</td>
    541 <td><a href="http://code.google.com/p/marketbilling/issues/">Billing
    542 project issue tracker</a></td>
    543 <td>Bug and issue reports related specifically to In-app Billing sample code.</td>
    544 </tr>
    545 </table>
    546 
    547 <p>For general information about how to post to the groups listed above, see <a
    548 href="{@docRoot}resources/community-groups.html">Developer Forums</a> document in the Resources
    549 tab.</p>
    550 
    551 
    552 
    553