Merge "cherrypick from mnc-io-docs docs: Updated Billing API documentation (for Project Nickel)." into mnc-io-docs
@@ -26,193 +26,164 @@ parent.link=index.html
|
||||
</div>
|
||||
|
||||
<p>In-app billing frees you from processing financial transactions, but you still need to perform a
|
||||
few administrative tasks, including setting up and maintaining your product list on the Google Play
|
||||
Developer Console, registering test accounts, and handling refunds when necessary.</p>
|
||||
few administrative tasks. These tasks include the following:</p>
|
||||
<ul>
|
||||
<li>Setting up and maintaining your product list on the Google Play Developer Console.</li>
|
||||
<li>Registering test accounts.</li>
|
||||
<li>Handling refunds when necessary.</li>
|
||||
</ul>
|
||||
</p>
|
||||
|
||||
<p>You must have a Google Play publisher account to register test accounts. And you must have a
|
||||
Google payments merchant account to create a product list and issue refunds to your users. If you
|
||||
<p>To register a test account, you must have a Google Play publisher account. If you
|
||||
already have a publisher account on Google Play, you can use your existing account. You do not
|
||||
need to register for a new account to support in-app billing.</p>
|
||||
need to register for a new account to support in-app billing. If you don't have a publisher
|
||||
account, you can register as a Google Play developer and set up a publisher account through the <a
|
||||
href="http://play.google.com/apps/publish">Google Play Developer Console</a>.</p>
|
||||
|
||||
<p>If you do not have a publisher account, you can register as a Google Play
|
||||
developer and set up a publisher account at the <a
|
||||
href="http://play.google.com/apps/publish">Google Play Developer Console</a>. If you do not
|
||||
have a Google payments merchant account, you can register for one through the
|
||||
Developer Console.</p>
|
||||
<p>If you want to create a product list and issue refunds to your users, you must have a
|
||||
Google payments merchant account. If you don't have a merchant account, you can
|
||||
register for one through the Developer Console.</p>
|
||||
|
||||
<h2 id="billing-list-setup">Creating a Product List</h2>
|
||||
|
||||
<p>The Google Play Developer Console provides a product list for each of your published
|
||||
applications. You can sell an item using Google Play's in-app billing feature only if the item is
|
||||
listed on an application's product list. Each application has its own product list; you cannot sell
|
||||
items that appear on another application's product list.</p>
|
||||
apps. You can sell an item using Google Play's in-app billing feature only if the item is
|
||||
listed on an app's product list. Each app has its own product list; you cannot sell
|
||||
items that appear on another app's product list.</p>
|
||||
|
||||
<div class="figure-right">
|
||||
<figure id="fig-iap">
|
||||
<img src="{@docRoot}images/in-app-billing/in_app_products.png" width="700"
|
||||
alt="The Mythical Journey app lists two in-app products, Invisibility Potion and Sleeping Potion.">
|
||||
<figcaption>
|
||||
<b>Figure 1. </b>You can access an application's product list by
|
||||
selecting the <strong>In-app Products</strong> link in the main Apps
|
||||
navigation.
|
||||
</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
<p>You can access an app's product list by opening the <strong>In-app Products</strong>
|
||||
page for an app that is listed in your developer account. The link to the
|
||||
<strong>In-app Products</strong> page appears only if you have a Google payments merchant
|
||||
account and the app's manifest includes the
|
||||
<code>com.android.vending.BILLING</code> permission. For more information about this
|
||||
permission, see <a href="{@docRoot}google/play/billing/billing_integrate.html#billing-permission">
|
||||
Updating Your App's Manifest</a>.</p>
|
||||
|
||||
<p>You can access an application's product list by clicking the <strong>In-App Products</strong>
|
||||
link in applications listed in your developer account (see
|
||||
figure 1). The <strong>In-App Products</strong> link appears only if you have a Google payments
|
||||
merchant account and the application's manifest includes the <code>com.android.vending.BILLING</code>
|
||||
permission.</p>
|
||||
<p>A product list specifies items you are selling in an app: in-app products,
|
||||
subscriptions, or a combination of both. For each item, the product list contains information
|
||||
such as product ID, product description, and price. You can create a product list for any
|
||||
published app, including apps published to the alpha and beta channels.</p>
|
||||
|
||||
<p>A product list specifies items you are selling in an application — in-app products,
|
||||
subscriptions, or a combination of both. For each item, the product list contains information such as a product id,
|
||||
product description, and price. The product list stores only metadata about the items
|
||||
you are selling in your application. It does not store any digital content. You are responsible for
|
||||
storing and delivering the digital content that you sell in your applications.</p>
|
||||
|
||||
<p>You can create a product list for any published application, or any
|
||||
application in the alpha or beta channels, that's been
|
||||
uploaded and saved to the Developer Console. However, you must have a Google payments merchant
|
||||
account and the application's manifest must include the <code>com.android.vending.BILLING</code>
|
||||
permission. If an application's manifest does not include this permission, you will be able to edit
|
||||
existing items in the product list, but you won't be able to add new items to the list. For more
|
||||
information about this permission, see
|
||||
<a href="{@docRoot}google/play/billing/billing_integrate.html#billing-permission">Updating Your
|
||||
Application's Manifest</a>.</p>
|
||||
<p>The product list stores only metadata about the items you are selling in your app.
|
||||
It does not store any digital content. You are responsible for storing and delivering
|
||||
the digital content that you sell in your apps.</p>
|
||||
|
||||
<p class="note"><strong>Note:</strong> Previously, you could test an app by
|
||||
uploading an unpublished "draft" version. This functionality is no longer
|
||||
uploading an unpublished draft version. This functionality is no longer
|
||||
supported; instead, you must publish it to the alpha or beta distribution
|
||||
channel. For more information, see <a
|
||||
href="{@docRoot}google/play/billing/billing_testing.html#draft_apps">Draft Apps
|
||||
are No Longer Supported</a>.
|
||||
|
||||
<p>In addition, an application package can have only one product list. If you create a product
|
||||
list for an application, and you use the <a
|
||||
<p>In addition, an app package can have only one product list. If you create a product
|
||||
list for an app, and you use the <a
|
||||
href="{@docRoot}google/play/publishing/multiple-apks.html">multiple APK feature</a> to distribute
|
||||
more than one APK for that application, the product list applies to all APK versions that are
|
||||
associated with the application listing. You cannot create individual product lists for each APK if
|
||||
more than one APK for that app, the product list applies to all APK versions that are
|
||||
associated with the app listing. You cannot create individual product lists for each APK if
|
||||
you are using the multiple APK feature.</p>
|
||||
|
||||
<p>You can add items to a product list two ways: you can add items one at a time by using the In-app
|
||||
Products UI (see figure 2), or you can add a batch of items by importing the items from a
|
||||
<p>You can add items to a product list two ways: you can add items one at a time on the <strong>In-app
|
||||
Products</strong> page, or you can add a batch of items by importing the items from a
|
||||
comma-separated values (CSV) file. Adding items one at a time is useful if your
|
||||
application has only a few in-app items or you are adding only a few items to a
|
||||
product list for testing purposes. The CSV file method is useful if your application has a large
|
||||
app has only a few in-app items or you are adding only a few items to a
|
||||
product list for testing purposes. The CSV file method is useful if your app has a large
|
||||
number of in-app items.</p>
|
||||
|
||||
<p class="note"><strong>Note:</strong> Batch upload of product lists containing subscriptions is not yet supported.
|
||||
Also, you cannot perform a batch upload containing changes to in-app products that are linked to a
|
||||
<p class="note"><strong>Note:</strong> Batch upload of product lists containing
|
||||
subscriptions is not supported. Also, when updating existing items in a batch upload,
|
||||
you cannot include changes to in-app products that are linked to a
|
||||
<a href="#pricing-template">pricing template</a>.</p>
|
||||
|
||||
<h3 id="billing-form-add">Adding items one at a time to a product list</h3>
|
||||
|
||||
<p>To add an item to a product list using the In-app Products UI, follow these steps:</p>
|
||||
<p>To add an item to a product list using the Developer Console UI, follow these steps:</p>
|
||||
|
||||
<ol>
|
||||
<li><a href="http://play.google.com/apps/publish">Log in</a> to your publisher account.</li>
|
||||
<li>In the <strong>All Applications</strong> panel, click on the
|
||||
app name, then select <strong>In-app Products</strong>.</li>
|
||||
<li>Click <strong>Add new product</strong> (see figure 2) and provide the product type and ID for the item you are
|
||||
selling. Click <strong>Continue</strong>.</li>
|
||||
<li>Enter additional information about the item, then click <strong>Save</strong> or <strong>Publish</strong>.
|
||||
<li>In the <strong>All applications</strong> panel, click on the
|
||||
app name, then open the <strong>In-app Products</strong> page.</li>
|
||||
<li><p>Click <strong>Add new product</strong>. After you provide the product type and ID for the item you are
|
||||
selling, click <strong>Continue</strong>.</p>
|
||||
<dl>
|
||||
<dt>Product Type</dt>
|
||||
<dd>
|
||||
<p>The product type can be <strong>Managed product</strong> or <strong>Subscription</strong>. You cannot
|
||||
change an item's product type after you create the item. For more information, see
|
||||
<a href="#billing-purchase-type">Choosing a Product Type</a>.</p>
|
||||
<p class="note"><strong>Note: </strong>For subscription items, you cannot change the
|
||||
item's price once you have published the item.</p>
|
||||
</dd>
|
||||
<dt>Product ID</dt>
|
||||
<dd>
|
||||
<p>Product IDs are unique across an app's namespace. A product ID must start with a
|
||||
lowercase letter or a number and must be composed of only lowercase letters (a-z), numbers
|
||||
(0-9), underscores (_), and periods (.). The product ID <code>android.test</code> is reserved, as are all
|
||||
product IDs that start with <code>android.test</code>.</p>
|
||||
<p class="note"><strong>Note: </strong>Be sure to plan your product ID namespace carefully. You
|
||||
cannot modify an item's product ID after the item is created, and you cannot reuse
|
||||
a product ID within an app.</p>
|
||||
</dd>
|
||||
</dl>
|
||||
</li>
|
||||
<li><p>Enter additional information about the item, then click <strong>Save</strong>.</p>
|
||||
<dl>
|
||||
<dt>Publishing State</dt>
|
||||
<dd>
|
||||
<p>An item's publishing state can be <strong>Active</strong> or
|
||||
<strong>Inactive</strong>. To be visible to a user during checkout, an item's publishing state must be set to
|
||||
<strong>Active</strong>, and the item's app must be published on Google Play.</p>
|
||||
<p class="note"><strong>Note:</strong> If you're using a test account, users can see active items
|
||||
within unpublished apps, as well. For more information, see <a
|
||||
href="{@docRoot}google/play/billing/billing_testing.html#billing-testing-real">Testing In-app
|
||||
Billing</a>.</p>
|
||||
</dd>
|
||||
<dt>Languages and Translations</dt>
|
||||
<dd>
|
||||
<p>By default, in-app products inherit their default language from the parent app.</p>
|
||||
<p>You can provide localized titles and descriptions for your in-app
|
||||
products by selecting <strong>Add Translations</strong>. If you want Google
|
||||
Play to translate your title and description for you, based on the title and
|
||||
description in the default language, just choose the languages that you
|
||||
want to offer. You can also provide custom translations in specific
|
||||
languages.</p>
|
||||
</dd>
|
||||
<dt>Title</dt>
|
||||
<dd>
|
||||
The title is a short descriptor for the item. An example of a title is: "Sleeping potion."
|
||||
Every item must have a title. The title is visible to users during checkout. For optimum appearance,
|
||||
titles should be no longer than 25 characters; however, titles can be up to 55 characters in length.
|
||||
</dd>
|
||||
<dt>Description</dt>
|
||||
<dd>
|
||||
The description is a long descriptor for the item. An example of a description is:
|
||||
"Instantly puts creatures to sleep. Does not work on angry elves." Every item must have a description.
|
||||
Descriptions can be up to 80 characters in length.
|
||||
</dd>
|
||||
<dt>Price</dt>
|
||||
<dd>
|
||||
<p>Provide a price in your home currency, or link the price to an existing
|
||||
pricing template. Based on the price you enter or the prices
|
||||
from the pricing template, the system autofills country-specific prices for
|
||||
different currencies. These generated prices use current exchange rates and
|
||||
locally relevant pricing patterns (see figure 1).</p>
|
||||
<p>You can also change prices for other currencies manually, but you can do
|
||||
this only if a currency is used in one of the target countries for your
|
||||
app. You can specify target countries for your app on the
|
||||
<strong>Pricing & Distribution</strong> page in the Google Play
|
||||
Developer Console.</p>
|
||||
</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ol>
|
||||
|
||||
<div class="figure-right">
|
||||
<figure id="fig-anp">
|
||||
<img src="{@docRoot}images/in-app-billing/add_new_product.png" width="300"
|
||||
alt="Adding a managed product with a Product ID of basic_sleeping_potion.">
|
||||
<figcaption>
|
||||
<b>Figure 2. </b>The <em>Add New Product</em> page lets you
|
||||
provide basic information about a paid app or in-app product.
|
||||
</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
|
||||
<div class="figure-right">
|
||||
<figure id="fig-nmp">
|
||||
<img src="{@docRoot}images/in-app-billing/new_managed_product.png" width="700"
|
||||
alt="">
|
||||
<figcaption>
|
||||
<b>Figure 3. </b>The <em>New Managed Product</em> page lets you finish
|
||||
adding items to an app’s product list.
|
||||
</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
|
||||
<div class="figure-right">
|
||||
<figure id="fig-elp">
|
||||
<img src="{@docRoot}images/in-app-billing/edit_local_prices.png" width="700"
|
||||
alt="An item that costs 1.99 in USD usually costs a different amount in AUD,
|
||||
EUR, or BOB. Some countries also add tax to the price.">
|
||||
<figcaption>
|
||||
<b>Figure 4. </b>Specifying additional currencies for an in-app product.
|
||||
</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
|
||||
<p>You must enter the following information for each item in a product list (see
|
||||
figures 2 and 3):</p>
|
||||
<ul>
|
||||
<li><strong>In-app Product ID</strong>
|
||||
<p>Product IDs are unique across an application's namespace. A product ID must start with a
|
||||
lowercase letter or a number, and must be composed using only lowercase letters (a-z), numbers
|
||||
(0-9), underscores (_), and dots (.). The product ID <code>"android.test"</code> is reserved, as are all
|
||||
product IDs that start with <code>"android.test"</code>.</p>
|
||||
<p class="note"><strong>Note: </strong>Be sure to plan your product ID namespace carefully. You
|
||||
cannot modify an item's product ID after it is created, and you cannot reuse
|
||||
a product ID.</p>
|
||||
</li>
|
||||
<li><strong>Product Type</strong>
|
||||
<p>The product type can be <strong>Managed product</strong> or <strong>Subscription</strong>. You cannot
|
||||
change an item's product type after you set it. For more information, see
|
||||
<a href="#billing-purchase-type">Choosing a product type</a>.</p>
|
||||
<p class="note"><strong>Note: </strong>For subscription items, note that you cannot change the
|
||||
item's price once you have published it.</p>
|
||||
</li>
|
||||
<li><strong>Publishing State</strong>
|
||||
<p>An item's publishing state can be <strong>Published</strong> or <strong>Unpublished
|
||||
</strong>. To be visible to a user during checkout, an item's publishing state must be set to
|
||||
<strong>Published</strong>, and the item's application must be published on Google Play.</p>
|
||||
<p class="note"><strong>Note:</strong> This is not true for test accounts. An item is visible to
|
||||
a test account if the application is not published and the item is published. See <a
|
||||
href="{@docRoot}google/play/billing/billing_testing.html#billing-testing-real">Testing In-app
|
||||
Billing</a> for more information.</p>
|
||||
</li>
|
||||
<li><strong>Languages and Translations</strong>
|
||||
<p>You can provide localized titles and descriptions for your in-app
|
||||
products by selecting <strong>Add Translations</strong>. If you want Google
|
||||
Play to translate your title and description for you, based on the title and
|
||||
description in the default language, just choose the languages that you
|
||||
want to offer. If you want to provide custom translations in specific
|
||||
languages, you can also do that. By default, an in-app product inherits its
|
||||
default language from the parent application.</p>
|
||||
</li>
|
||||
<li><strong>Title</strong>
|
||||
<p>The title is a short descriptor for the item. For example, "Sleeping potion."
|
||||
Every item must have a title. The title is visible to
|
||||
users during checkout. For optimum appearance, titles should be no longer than 25 characters;
|
||||
however, titles can be up to 55 characters in length.</p>
|
||||
</li>
|
||||
<li><strong>Description</strong>
|
||||
<p>The description is a long descriptor for the item. For example, "Instantly puts creatures to
|
||||
sleep. Does not work on angry elves." Every item must have a description. Descriptions can be
|
||||
up to 80 characters in length.</p>
|
||||
</li>
|
||||
<li><strong>Price</strong>
|
||||
<p>Provide a price in your home currency, or link the price to an existing
|
||||
pricing template (see figure 4). Based on the price you enter or the prices
|
||||
from the pricing template, the system autofills country-specific prices for
|
||||
different currencies. These generated prices use today's exchange rates and
|
||||
locally-relevant pricing patterns.</p>
|
||||
<p>You can also change prices for other currencies manually, but you can do
|
||||
this only if a currency is used in one of the target countries for your
|
||||
application. You can specify target countries for your app on the
|
||||
<strong>Pricing & Distribution</strong> page in the Google Play
|
||||
Developer Console.</p>
|
||||
</li>
|
||||
</ul>
|
||||
<figure id="fig-elp">
|
||||
<img class="border-img" src="{@docRoot}images/in-app-billing/edit_local_prices.png"
|
||||
width="700" alt="An item that costs 1.99 in USD usually costs a different
|
||||
amount in AUD, EUR, or BOB. Some countries also add tax to the price.">
|
||||
<figcaption>
|
||||
<b>Figure 1. </b>Specifying additional currencies for an in-app product.
|
||||
</figcaption>
|
||||
</figure>
|
||||
|
||||
<h3 id="billing-bulk-add">Adding a batch of items to a product list</h3>
|
||||
|
||||
@@ -227,18 +198,16 @@ tax-exclusive default price, and tax-inclusive prices will be auto-filled. If yo
|
||||
do not use auto-fill, prices you provide must include tax.</p>
|
||||
|
||||
<p class="note"><strong>Note:</strong> Batch upload of product lists containing
|
||||
subscriptions is not yet supported. Also, you cannot perform a batch upload
|
||||
containing changes to in-app products that are linked to a
|
||||
subscriptions is not supported. Also, when updating existing items in a batch
|
||||
upload, you cannot include changes to in-app products that are linked to a
|
||||
<a href="#pricing-template">pricing template</a>.</p>
|
||||
|
||||
|
||||
|
||||
<p>To import the items that are specified in your CSV file, do the following:</p>
|
||||
|
||||
<ol>
|
||||
<li><a href="http://play.google.com/apps/publish">Log in</a> to your publisher account.</li>
|
||||
<li>In the <strong>All Applications</strong> panel, click on the app
|
||||
name, then select <strong>In-app Products</strong>.</li>
|
||||
<li>In the <strong>All applications</strong> panel, select the app
|
||||
name, then open the <strong>In-app Products</strong> page.</li>
|
||||
<li>On the In-app Products List page, click <strong>Import/Export</strong>
|
||||
> <strong>Import in-app products from CSV file</strong>, then select your
|
||||
CSV file.
|
||||
@@ -260,8 +229,8 @@ a product list and you want to start managing the product list through a CSV fil
|
||||
|
||||
<h4 id="billing-bulk-format">Formatting batches of items</h4>
|
||||
|
||||
<p>The CSV file uses commas (,) and semi-colons (;) to separate data values.
|
||||
Commas are used to separate primary data values, and semi-colons are used to
|
||||
<p>The CSV file uses commas (,) and semicolons (;) to separate data values.
|
||||
Commas are used to separate primary data values, and semicolons are used to
|
||||
separate subvalues. For example, the syntax for the CSV file is as follows:</p>
|
||||
|
||||
<p>"<em>product_id</em>","<em>publish_state</em>","<em>purchase_type</em>","<em>autotranslate</em>
|
||||
@@ -271,86 +240,108 @@ separate subvalues. For example, the syntax for the CSV file is as follows:</p>
|
||||
|
||||
<p>Descriptions and usage details are provided below.</p>
|
||||
|
||||
<ul>
|
||||
<li><em>product_id</em>
|
||||
<p>This is equivalent to the In-app Product ID setting in the In-app Products UI. If you specify
|
||||
<dl>
|
||||
<dt>product_id</dt>
|
||||
<dd>
|
||||
This is equivalent to the In-app Product ID setting in the In-app Products UI. If you specify
|
||||
a <em>product_id</em> that already exists in a product list, and you choose to overwrite
|
||||
the product list while importing the CSV file, the data for the existing item is overwritten with
|
||||
the values specified in the CSV file. The overwrite feature does not delete items that are on a
|
||||
product list but not present in the CSV file.</p>
|
||||
</li>
|
||||
<li><em>publish_state</em>
|
||||
<p>This is equivalent to the Publishing State setting in the In-app Products UI. Can be <code>
|
||||
published</code> or <code>unpublished</code>.</p>
|
||||
</li>
|
||||
<li><em>purchase_type</em>
|
||||
<p>This is equivalent to the Product Type setting in the In-app Products UI. Can be <code>
|
||||
product list but not present in the CSV file.
|
||||
</dd>
|
||||
<dt>publish_state</dt>
|
||||
<dd>
|
||||
This is equivalent to the Publishing State setting in the In-app Products UI. Can be <code>
|
||||
published</code> or <code>unpublished</code>.
|
||||
</dd>
|
||||
<dt>purchase_type</dt>
|
||||
<dd>
|
||||
This is equivalent to the Product Type setting in the In-app Products UI. Can be <code>
|
||||
managed_by_android</code>, which is equivalent to <strong>Managed per user account
|
||||
</strong> in the In-app Products UI, or <code>managed_by_publisher</code>, which is equivalent
|
||||
to <strong>Unmanaged</strong> in the In-app Products UI.</p>
|
||||
</li>
|
||||
<li><em>autotranslate</em>
|
||||
<p>This is equivalent to selecting the <strong>Fill fields with auto translation</strong>
|
||||
checkbox in the In-app Products UI. Can be <code>true</code> or <code>false</code>.</p>
|
||||
</li>
|
||||
<li><em>locale</em>
|
||||
to <strong>Unmanaged</strong> in the In-app Products UI.
|
||||
</dd>
|
||||
<dt>autotranslate</dt>
|
||||
<dd>
|
||||
This is equivalent to selecting the <strong>Fill fields with auto translation</strong>
|
||||
checkbox in the In-app Products UI. Can be <code>true</code> or <code>false</code>.
|
||||
</dd>
|
||||
<dt>locale</dt>
|
||||
<dd>
|
||||
<p>This is equivalent to the Language setting in the In-app Products UI. You must have an entry
|
||||
for the default locale. The default locale must be the first entry in the list of
|
||||
locales, and it must include a <em>title</em> and <em>description</em>. If you want to provide
|
||||
translated versions of the <em>title</em> and <em>description</em> in addition to the default,
|
||||
you must use the following syntax rules:</p>
|
||||
<p>If <em>autotranslate</em> is <code>true</code>, you must specify the default locale,
|
||||
default title, default description, and other locales using the following format:</p>
|
||||
<p>"true,"<em>default_locale</em>; <em>default_locale_title</em>;
|
||||
<em>default_locale_description</em>; <em>locale_2</em>; <em>locale_3</em>, ..."</p>
|
||||
<p>If <em>autotranslate</em> is <code>false</code>, you must specify the default locale,
|
||||
default title, and default description as well as the translated titles and descriptions using
|
||||
the following format:</p>
|
||||
<p>"false,"<em>default_locale</em>; <em>default_locale_title</em>;
|
||||
<em>default_locale_description</em>; <em>locale_2</em>; <em>locale_2_title</em>;
|
||||
<em>local_2_description</em>; <em>locale_3</em>; <em>locale_3_title</em>;
|
||||
<em>locale_3_description</em>; ..."</p>
|
||||
<ul>
|
||||
<li>
|
||||
<p>If <em>autotranslate</em> is <code>true</code>, you must specify the default locale,
|
||||
default title, default description, and other locales using the following format:</p>
|
||||
<p>"true,"<em>default_locale</em>; <em>default_locale_title</em>;
|
||||
<em>default_locale_description</em>; <em>locale_2</em>; <em>locale_3</em>, ..."</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>If <em>autotranslate</em> is <code>false</code>, you must specify the default locale,
|
||||
default title, and default description as well as the translated titles and descriptions using
|
||||
the following format:</p>
|
||||
<p>"false,"<em>default_locale</em>; <em>default_locale_title</em>;
|
||||
<em>default_locale_description</em>; <em>locale_2</em>; <em>locale_2_title</em>;
|
||||
<em>local_2_description</em>; <em>locale_3</em>; <em>locale_3_title</em>;
|
||||
<em>locale_3_description</em>; ..."</p>
|
||||
</li>
|
||||
</ul>
|
||||
<p>See table 1 for a list of the language codes you can use with the <em>locale</em> field.</p>
|
||||
</li>
|
||||
<li><em>title</em>
|
||||
<p>This is equivalent to the Title setting in the In-app Products UI. If the <em>title</em>
|
||||
contains a semicolon, it must be escaped with a backslash (for example, "\;"). A backslash
|
||||
should also be escaped with a backslash (for example, "\\").</p>
|
||||
</li>
|
||||
<li><em>description</em>
|
||||
<p>This is equivalent to the Description in the In-app Products UI. If the <em>description</em>
|
||||
contains a semicolon, it must be escaped with a backslash (for example, "\;"). A backslash
|
||||
should also be escaped with a backslash (for example, "\\").</p>
|
||||
</li>
|
||||
<li><em>autofill</em>
|
||||
</dd>
|
||||
<dt>title</dt>
|
||||
<dd>
|
||||
This is equivalent to the Title setting in the In-app Products UI. If the <em>title</em>
|
||||
contains a semicolon, it must be escaped with a backslash (for example, <code>\;</code>). Also, a backslash
|
||||
must be escaped with a backslash (for example, <code>\\</code>).
|
||||
</dd>
|
||||
<dt>description</dt>
|
||||
<dd>
|
||||
This is equivalent to the Description in the In-app Products UI. If the <em>description</em>
|
||||
contains a semicolon, it must be escaped with a backslash (for example, <code>\;</code>). Also, a backslash
|
||||
must be escaped with a backslash (for example, <code>\\</code>).
|
||||
</dd>
|
||||
<dt>autofill</dt>
|
||||
<dd>
|
||||
<p>This is equivalent to clicking <strong>Auto Fill</strong> in the In-app Products UI. Can be
|
||||
<code>true</code> or <code>false</code>. The syntax for specifying the <em>country</em>
|
||||
and <em>price</em> varies depending on which <em>autofill</em> setting you use.</p>
|
||||
<p>If <em>autofill</em> is set to <code>true</code>, you need to specify only the default
|
||||
price in your home currency, and you must use this syntax:</p>
|
||||
<p>"true","<em>default_price_in_home_currency</em>"
|
||||
<p>If <em>autofill</em> is set to <code>false</code>, you need to specify a <em>country</em>
|
||||
and a <em>price</em> for each currency, and you must use the following syntax:</p>
|
||||
<p>"false", "<em>home_country</em>; <em>default_price_in_home_currency</em>; <em>country_2</em>;
|
||||
<em>country_2_price</em>; <em>country_3</em>; <em>country_3_price</em>; ..."</p>
|
||||
and <em>price</em> varies depending on which <em>autofill</em> setting you use:</p>
|
||||
<ul>
|
||||
<li>
|
||||
<p>If <em>autofill</em> is set to <code>true</code>, you need to specify only the default
|
||||
price in your home currency, and you must use this syntax:</p>
|
||||
<p>"true","<em>default_price_in_home_currency</em>"
|
||||
</li>
|
||||
<li>
|
||||
<p>If <em>autofill</em> is set to <code>false</code>, you need to specify a <em>country</em>
|
||||
and a <em>price</em> for each currency, and you must use the following syntax:</p>
|
||||
<p>"false", "<em>home_country</em>; <em>default_price_in_home_currency</em>; <em>country_2</em>;
|
||||
<em>country_2_price</em>; <em>country_3</em>; <em>country_3_price</em>; ..."</p>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="note"><strong>Note: </strong>If you use an <em>autofill</em> value of <code>false</code>
|
||||
and set country prices manually, you must incorporate country-specific
|
||||
pricing patterns, including tax rates, into the prices you provide.</p>
|
||||
</li>
|
||||
<li><em>country</em>
|
||||
<p>The country for which you are specifying a price. You can only list countries that your
|
||||
application is targeting. The country codes are two-letter uppercase
|
||||
</dd>
|
||||
<dt>country</dt>
|
||||
<dd>
|
||||
The country for which you are specifying a price. You can only list countries that your
|
||||
app is targeting. The country codes are two-letter uppercase
|
||||
ISO country codes (such as "US"), as defined by
|
||||
<a href="http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2">ISO 3166-2</a>.</p>
|
||||
</li>
|
||||
<li><em>price</em>
|
||||
<p>This is equivalent to the Price in the In-app Products UI. The price must be specified in
|
||||
<a href="http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2">ISO 3166-2</a>.
|
||||
</dd>
|
||||
<dt>price</dt>
|
||||
<dd>
|
||||
This is equivalent to the Price in the In-app Products UI. The price must be specified in
|
||||
micro-units. To convert a currency value to micro-units, you multiply the real value by
|
||||
1,000,000.
|
||||
For example, if you want to sell an in-app item for $1.99, you specify <code>1990000</code> in the
|
||||
<em>price</em> field.</p>
|
||||
</li>
|
||||
</ul>
|
||||
<em>price</em> field.
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<p class="table-caption" id="language-table"><strong>Table 1.</strong> Language codes you can use
|
||||
with the <em>locale</em> field.</p>
|
||||
@@ -430,8 +421,8 @@ with the <em>locale</em> field.</p>
|
||||
</h2>
|
||||
|
||||
<p>
|
||||
If you sell multiple apps at the same price—or multiple in-app products at
|
||||
the same price across one or more apps—you can add <em>pricing
|
||||
If you sell multiple apps at the same price, or if you sell multiple in-app
|
||||
products at the same price across one or more apps, you can add <em>pricing
|
||||
templates</em>. These templates make it easier to manage shared prices.
|
||||
</p>
|
||||
|
||||
@@ -440,25 +431,9 @@ with the <em>locale</em> field.</p>
|
||||
</h3>
|
||||
|
||||
<p>
|
||||
When creating a template, you can provide new pricing information, or you can
|
||||
apply pricing information from an existing paid app or in-app product.
|
||||
</p>
|
||||
|
||||
<div class="figure-right">
|
||||
<figure id="fig-npt">
|
||||
<img src="{@docRoot}images/in-app-billing/new_pricing_template.png"
|
||||
srcset="{@docRoot}images/in-app-billing/new_pricing_template.png 1x, {@docRoot}images/in-app-billing/new_pricing_template_2x.png 2x"
|
||||
width="400" alt="A template with the name Basic inventory uses a price of
|
||||
USD 0.99.">
|
||||
<figcaption>
|
||||
<b>Figure 5. </b>The <em>Pricing template</em> page, where you add pricing
|
||||
details for the new template you're creating.
|
||||
</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
To add a pricing template, do the following:
|
||||
When creating a pricing template, you provide new pricing information that you
|
||||
can apply to paid apps and in-app products. To add a pricing template, do the
|
||||
following:
|
||||
</p>
|
||||
|
||||
<ol>
|
||||
@@ -467,21 +442,20 @@ with the <em>locale</em> field.</p>
|
||||
account.
|
||||
</li>
|
||||
|
||||
<li>In the <strong>Settings</strong> panel, select <strong>Pricing
|
||||
template</strong>.
|
||||
<li>In the <strong>Settings</strong> panel, open the <strong>Pricing
|
||||
template</strong> page.
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<p>
|
||||
If you are adding your first pricing template, the <strong>Add a Pricing
|
||||
Template</strong> banner appears. Select <strong>Add template</strong> to
|
||||
create a new template. The <strong>Pricing Template</strong> page
|
||||
appears.
|
||||
create a new template. The new template's <em>Pricing</em> tab appears.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Otherwise, you see a list of your pricing templates. Select <strong>New
|
||||
pricing template</strong>. The <strong>Pricing Template</strong> page
|
||||
pricing template</strong>. The new template's <em>Pricing</em> tab
|
||||
appears.
|
||||
</p>
|
||||
</li>
|
||||
@@ -494,7 +468,7 @@ with the <em>locale</em> field.</p>
|
||||
</p>
|
||||
<p>
|
||||
Based on the price and tax option you provide, the Developer Console
|
||||
generates prices for international currencies using today's exchange
|
||||
generates prices for international currencies using current exchange
|
||||
rates and country-specific pricing patterns.
|
||||
</p>
|
||||
</li>
|
||||
@@ -507,43 +481,25 @@ with the <em>locale</em> field.</p>
|
||||
</h3>
|
||||
|
||||
<p>
|
||||
You can link shared prices across paid apps or in-app products to a pricing
|
||||
template. To complete the linking process, use either the template's
|
||||
<em>Linked Items</em> tab or the Price section within a paid app or in-app
|
||||
product's pricing page.
|
||||
You can create links between pricing templates and sets of paid apps and
|
||||
in-app products that share the same price. After completing this linking
|
||||
process, any changes you make to the pricing template are applied to the
|
||||
prices of items that you've linked to the template. To complete the linking
|
||||
process, use either the pricing template's <em>Linked Items</em> tab or the
|
||||
Price section within a paid app or in-app product's pricing page.
|
||||
</p>
|
||||
|
||||
<p class="note">
|
||||
<strong>Note:</strong> Since a subscription within your app has a constant
|
||||
price, you cannot link a subscription with a pricing template. You can,
|
||||
however, import the prices from a template and apply them to a new
|
||||
however, import the prices from a pricing template and apply them to a new
|
||||
subscription.
|
||||
</p>
|
||||
|
||||
<h4>
|
||||
Linking a pricing template or paid app to an in-app product
|
||||
Linking a pricing template to in-app products and paid apps
|
||||
</h4>
|
||||
|
||||
<p>
|
||||
After you create a pricing template, you can link the prices of in-app
|
||||
products and paid apps to that template. After completing this linking
|
||||
process, any changes you make to the pricing template are applied to the
|
||||
prices of items that you've linked to the template.
|
||||
</p>
|
||||
|
||||
<div class="figure-right">
|
||||
<figure id="fig-lpt">
|
||||
<img src="{@docRoot}images/in-app-billing/link_pricing_template.png"
|
||||
width="700" alt="The Sleeping Potion in-app product is linked to the Basic
|
||||
Inventory item, but the Invisibility Potion is not.">
|
||||
<figcaption>
|
||||
<b>Figure 6. </b>Use the Linked Items tab of the
|
||||
<em>Pricing Template</em> page to change which in-app products and paid
|
||||
apps are linked to a pricing template.
|
||||
</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
To link a pricing template to an in-app product, do the following:
|
||||
</p>
|
||||
@@ -554,23 +510,24 @@ with the <em>locale</em> field.</p>
|
||||
account.
|
||||
</li>
|
||||
|
||||
<li>In the <strong>Settings</strong> panel, select <strong>Pricing
|
||||
template</strong>. The <strong>Pricing Template</strong> page appears,
|
||||
showing the list of pricing templates you have created for your account.
|
||||
<li>In the <strong>Settings</strong> panel, open the <strong>Pricing
|
||||
template</strong> page. This page shows the list of pricing templates you have
|
||||
created for your account.
|
||||
</li>
|
||||
|
||||
<li>Choose the pricing template that you want to link to an in-app product,
|
||||
then select the <em>Linked Items</em> tab. A page appears, showing options to
|
||||
link your pricing template to in-app products and paid apps.
|
||||
<li>Choose an existing pricing template that you want to link to an in-app
|
||||
product, then select the template's <em>Linked Items</em> tab. This tab shows
|
||||
options to link your pricing template to in-app products and paid apps
|
||||
(see figure 2).
|
||||
</li>
|
||||
|
||||
<li>In the Link In-App Products section of the page, enter or choose the name
|
||||
<li>In the Link In-App Products section of the tab, enter or choose the name
|
||||
of an app. This app should contain the in-app product that you want to link
|
||||
to your pricing template.
|
||||
</li>
|
||||
|
||||
<li>Based on the app that you selected, you see a list of in-app products
|
||||
that are active and are not yet linked to a pricing template. Select the
|
||||
that are active and are not yet linked to a pricing template. Choose the
|
||||
in-app product that you want to link to the pricing template by selecting the
|
||||
<strong>Link</strong> button that appears in the same row as the in-app
|
||||
product.
|
||||
@@ -588,26 +545,22 @@ with the <em>locale</em> field.</p>
|
||||
app in the Link Paid Apps section.
|
||||
</p>
|
||||
|
||||
<figure id="fig-lpt">
|
||||
<img class="border-img"
|
||||
src="{@docRoot}images/in-app-billing/link_pricing_template.png" width="700"
|
||||
alt="The Sleeping Potion in-app product is linked to the Basic Inventory item,
|
||||
but the Invisibility Potion is not.">
|
||||
<figcaption>
|
||||
<b>Figure 2. </b>On a pricing template's <em>Linked Items</em> tab, you can
|
||||
change which in-app products and paid apps are linked to the pricing
|
||||
template.
|
||||
</figcaption>
|
||||
</figure>
|
||||
|
||||
<h4>
|
||||
Linking an in-app product or paid app with a pricing template
|
||||
Linking an in-app product or paid app to a pricing template
|
||||
</h4>
|
||||
|
||||
<p>
|
||||
After you create a paid app or in-app product, you can link its pricing
|
||||
information to a pricing template.
|
||||
</p>
|
||||
|
||||
<div class="figure-right">
|
||||
<figure id="fig-spt">
|
||||
<img src="{@docRoot}images/in-app-billing/select_pricing_template.png"
|
||||
width="700" alt="">
|
||||
<figcaption>
|
||||
<b>Figure 7. </b>Choosing a pricing template to link to a particular
|
||||
in-app product or paid app.
|
||||
</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
To link an in-app product to a pricing template, do the following:
|
||||
</p>
|
||||
@@ -618,20 +571,16 @@ with the <em>locale</em> field.</p>
|
||||
account.
|
||||
</li>
|
||||
|
||||
<li>In the <strong>All Applications</strong> panel, choose the app that
|
||||
contains the in-app product that you want to link to a pricing template.
|
||||
</li>
|
||||
|
||||
<li>Within the app's panel, choose the <strong>In-app Products</strong>
|
||||
sub-panel.
|
||||
<li>In the <strong>All applications</strong> panel, select the app name, then
|
||||
open the <strong>In-app Products</strong> page.
|
||||
</li>
|
||||
|
||||
<li>Choose the in-app product that you want to link to a pricing template.
|
||||
The <em>Managed Product Details</em> page appears.
|
||||
The item's details page appears.
|
||||
</li>
|
||||
|
||||
<li>In the Pricing section, choose the pricing template that you want to link
|
||||
to the price of this in-app product (see figure 7).
|
||||
to the price of this in-app product.
|
||||
</li>
|
||||
|
||||
<li>The price of the in-app product is now linked to the pricing template you
|
||||
@@ -642,8 +591,7 @@ with the <em>locale</em> field.</p>
|
||||
|
||||
<p>
|
||||
To link the price of a paid app to a pricing template, you follow a similar
|
||||
process within the app's <strong>Pricing & Distribution</strong>
|
||||
sub-panel.
|
||||
process on the app's <strong>Pricing & Distribution</strong> page.
|
||||
</p>
|
||||
|
||||
<h3 id="delete-linked-item">
|
||||
@@ -652,27 +600,16 @@ with the <em>locale</em> field.</p>
|
||||
|
||||
<p>
|
||||
As your app evolves, you may find it useful to remove older versions of
|
||||
in-app products or apps, some of which may be linked to pricing templates. To
|
||||
delete an in-app product or app that is linked to a pricing template, simply
|
||||
remove it by completing the following steps. You don't need to unlink the
|
||||
in-app product or app from the pricing template beforehand.
|
||||
in-app products or unpublish paid apps, some of which may be linked to pricing
|
||||
templates. To delete an in-app product or unpublish a paid app that is linked
|
||||
to a pricing template, complete the following steps. You don't need to unlink
|
||||
the in-app product or paid app from the pricing template beforehand.
|
||||
</p>
|
||||
|
||||
<h4>
|
||||
Deleting an in-app product that is linked to a template
|
||||
</h4>
|
||||
|
||||
<div class="figure-right">
|
||||
<figure id="fig-diap">
|
||||
<img src="{@docRoot}images/in-app-billing/delete_iap.png"
|
||||
width="700" alt="">
|
||||
<figcaption>
|
||||
<b>Figure 8. </b>Deleting an in-app product that is linked to a pricing
|
||||
template.
|
||||
</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
To delete an in-app product that is linked to a template, do the following:
|
||||
</p>
|
||||
@@ -683,8 +620,7 @@ with the <em>locale</em> field.</p>
|
||||
account.
|
||||
</li>
|
||||
|
||||
<li>In the Google Play Developer Console, navigate to the app that contains
|
||||
the in-app product you want to delete.
|
||||
<li>Select the app that contains the in-app product you want to delete.
|
||||
</li>
|
||||
|
||||
<li>Open the app's <strong>In-app Products</strong> page.
|
||||
@@ -694,16 +630,25 @@ with the <em>locale</em> field.</p>
|
||||
</li>
|
||||
|
||||
<li>Select the button that indicates whether the in-app product is active or
|
||||
inactive (enclosed in a box within figure 8). The drop-down menu includes a
|
||||
inactive (enclosed in a box within figure 3). The drop-down menu includes a
|
||||
<strong>Delete</strong> option.
|
||||
</li>
|
||||
<li>Select <strong>Delete</strong>, then select <strong>Yes</strong> in the
|
||||
<li>Select <strong>Delete</strong>, then choose <strong>Yes</strong> in the
|
||||
confirmation dialog that appears.
|
||||
</li>
|
||||
</ol>
|
||||
|
||||
<figure id="fig-diap">
|
||||
<img class="border-img" src="{@docRoot}images/in-app-billing/delete_iap.png"
|
||||
width="500" alt="">
|
||||
<figcaption>
|
||||
<b>Figure 3. </b>Deleting an in-app product that is linked to a pricing
|
||||
template.
|
||||
</figcaption>
|
||||
</figure>
|
||||
|
||||
<h4>
|
||||
Deleting a paid app that is linked to a template
|
||||
Unpublishing a paid app that is linked to a template
|
||||
</h4>
|
||||
|
||||
<div class="figure-right">
|
||||
@@ -711,14 +656,15 @@ with the <em>locale</em> field.</p>
|
||||
<img src="{@docRoot}images/in-app-billing/unpublish_paid_app.png"
|
||||
width="700" alt="">
|
||||
<figcaption>
|
||||
<b>Figure 9. </b>Unpublishing an app that has already been published and is
|
||||
<b>Figure 4. </b>Unpublishing an app that has already been published and is
|
||||
linked to a pricing template.
|
||||
</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
To delete a paid app that is linked to a template, do the following:
|
||||
To unpublish a paid app that is already published and is linked to a template,
|
||||
do the following:
|
||||
</p>
|
||||
|
||||
<ol>
|
||||
@@ -727,15 +673,12 @@ with the <em>locale</em> field.</p>
|
||||
account.
|
||||
</li>
|
||||
|
||||
<li>In the Google Play Developer Console, choose the app that you want to
|
||||
delete.
|
||||
<li>Select the app that you want to unpublish.
|
||||
</li>
|
||||
|
||||
<li>Choose either <strong>Unpublish app</strong> (enclosed in a box within
|
||||
figure 9) if you have already published the app, or
|
||||
<strong>Delete app</strong> if your app is still in the "draft" state.
|
||||
</li>
|
||||
<li>Confirm your choice in the dialog that appears.
|
||||
<li>Select <strong>Unpublish app</strong> (enclosed in a box within figure 4),
|
||||
then choose <strong>Unpublish</strong> in the confirmation dialog that
|
||||
appears.
|
||||
</li>
|
||||
</ol>
|
||||
|
||||
@@ -754,17 +697,16 @@ with the <em>locale</em> field.</p>
|
||||
account.
|
||||
</li>
|
||||
|
||||
<li>In the <strong>Settings</strong> panel, select <strong>Pricing
|
||||
template</strong>. The <strong>Pricing Template</strong> page appears,
|
||||
showing the list of pricing templates you have created for your account.
|
||||
<li>In the <strong>Settings</strong> panel, open the <strong>Pricing
|
||||
template</strong> page, which shows the list of pricing templates you have
|
||||
created for your account.
|
||||
</li>
|
||||
|
||||
<li>Select the pricing template that you wish to delete.
|
||||
</li>
|
||||
|
||||
<li>In the <em>Linked Items</em> tab on the pricing template details page,
|
||||
unlink the pricing template from all in-app products and paid apps.
|
||||
</li>
|
||||
<li>On the pricing template's <em>Linked Items</em> tab, unlink all in-app
|
||||
products that are linked to the template.</li>
|
||||
|
||||
<li>Select <strong>Delete template</strong>.
|
||||
</li>
|
||||
@@ -772,23 +714,21 @@ with the <em>locale</em> field.</p>
|
||||
|
||||
<h2 id="billing-purchase-type">Choosing a Product Type</h3>
|
||||
|
||||
<p>An item's product type controls how Google Play manages the purchase of the item. There are
|
||||
several product types, including "managed per user account", "unmanaged," and "subscription." However,
|
||||
note that the product types supported vary
|
||||
across In-app Billing Version, so you should always choose a product type that's valid for the
|
||||
version of In-app BIlling that your app uses. </p>
|
||||
<p>An item's product type controls how Google Play manages the purchase of the item. The supported
|
||||
product types include "managed product" and "subscription." Since support for different product
|
||||
types can vary among versions of the In-app Billing API, make sure that you choose a product
|
||||
type that's valid for the version of the In-app Billing API that your app uses. </p>
|
||||
|
||||
<p>For details, refer to the documentation for <a
|
||||
href="{@docRoot}google/play/billing/api.html#producttype">In-app Billing Version
|
||||
3</a>.
|
||||
<p>For details, refer to the documentation for the <a
|
||||
href="{@docRoot}google/play/billing/api.html#producttype">In-app Billing API</a>.
|
||||
|
||||
<h2 id="billing-refunds">Handling Refunds</h2>
|
||||
|
||||
<p>In-app billing does not allow users to send a refund request to Google Play. Refunds for
|
||||
in-app purchases must be directed to you (the application developer). You can then process the
|
||||
in-app purchases must be directed to you (the app developer). You can then process the
|
||||
refund through your Google payments merchant account. When you do this, Google Play receives a
|
||||
refund notification from Google payments, and Google Play sends a refund message to your
|
||||
application. For more information, see <a
|
||||
app. For more information, see <a
|
||||
href="{@docRoot}google/play/billing/v2/api.html#billing-action-notify">Handling
|
||||
IN_APP_NOTIFY messages</a> and <a
|
||||
href="http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&answer=1153485">
|
||||
@@ -834,22 +774,22 @@ Google Order Number:</p>
|
||||
<p>The Google Play Developer Console lets you set up one or more test accounts.
|
||||
A test account is a regular Google account that you register on the Developer
|
||||
Console as a test account. Test accounts are authorized to make in-app purchases
|
||||
from applications that you have uploaded to the Google Play Developer Console
|
||||
from apps that you have uploaded to the Google Play Developer Console
|
||||
but have not yet published.</p>
|
||||
|
||||
<p>You can use any Google account as a test account. Test accounts are useful if you want to let
|
||||
multiple people test In-app Billing on applications without giving them access to your publisher
|
||||
multiple people test In-app Billing on apps without giving them access to your publisher
|
||||
account's sign-in credentials. If you want to own and control the test accounts, you can create the
|
||||
accounts yourself and distribute the credentials to your developers or testers.</p>
|
||||
|
||||
<p>Test accounts have three limitations:</p>
|
||||
|
||||
<ul>
|
||||
<li>Test account users can make purchase requests only within applications that are already
|
||||
uploaded to your publisher account (although the application doesn't need to be published).</li>
|
||||
<li>Test account users can make purchase requests only within apps that are already
|
||||
uploaded to your publisher account (although the app doesn't need to be published).</li>
|
||||
<li>Test accounts can only be used to purchase items that are listed (and published) in an
|
||||
application's product list.</li>
|
||||
<li>Test account users do not have access to your publisher account and cannot upload applications
|
||||
app's product list.</li>
|
||||
<li>Test account users do not have access to your publisher account and cannot upload apps
|
||||
to your publisher account.</li>
|
||||
</ul>
|
||||
|
||||
@@ -869,29 +809,28 @@ accounts yourself and distribute the credentials to your developers or testers.<
|
||||
<p>The Google Play Developer Console provides a public licensing key for each
|
||||
app.</p>
|
||||
|
||||
<div class="figure-right">
|
||||
<figure id="fig-bak">
|
||||
<img src="{@docRoot}images/in-app-billing/billing_app_key.png"
|
||||
width="700" alt="">
|
||||
<figcaption>
|
||||
<b>Figure 10. </b>You can find the license key for each app in the
|
||||
<strong>Services & APIs</strong> panel.
|
||||
</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
|
||||
<p>To get the key for an app, follow these steps:</p>
|
||||
<p>To locate the key for an app, follow these steps:</p>
|
||||
<ol>
|
||||
<li>Open the <strong>All Applications</strong> panel.</li>
|
||||
<li>Click on the app name, then select <strong>Services & APIs</strong>.</li>
|
||||
<li>Scroll down to the <strong>Your License Key for this Application</strong>
|
||||
field to locate the key for the app, as shown in figure 10.</li>
|
||||
<li>Open the <strong>All applications</strong> panel.</li>
|
||||
<li>Click on the app name, then open the <strong>Services & APIs</strong>
|
||||
page.</li>
|
||||
<li>Scroll down to the section of the page labeled Your License Key for This
|
||||
Application, as shown in figure 5.</li>
|
||||
</ol>
|
||||
<p>Previously, the Developer Console provided a single public key per developer
|
||||
account. To transition apps to the new per-app public key, the Developer Console
|
||||
set the app-specific key as the former developer key. This ensures compatibility
|
||||
sets the app-specific key as the former developer key. This ensures compatibility
|
||||
for apps that depend on the (former) developer key. </p>
|
||||
|
||||
<figure id="fig-bak">
|
||||
<img class="border-img" src="{@docRoot}images/in-app-billing/billing_app_key.png"
|
||||
width="700" alt="">
|
||||
<figcaption>
|
||||
<b>Figure 5. </b>You can find the license key for each app on the
|
||||
<strong>Services & APIs</strong> page.
|
||||
</figcaption>
|
||||
</figure>
|
||||
|
||||
<h2 id="billing-support">Where to Get Support</h2>
|
||||
|
||||
<p>If you have questions or encounter problems while implementing In-app Billing, contact the
|
||||
|
||||
@@ -111,13 +111,13 @@ method calls.</p>
|
||||
<li>Select <strong>File > New > Directory</strong> and enter {@code aidl} in the
|
||||
<em>New Directory</em> window, then select <strong>OK</strong>.
|
||||
|
||||
<li>Select <strong>File > New > Package</strong> and enter
|
||||
<li>Select <strong>File > New > Package</strong> and enter
|
||||
{@code com.android.vending.billing} in the <em>New Package</em> window, then select
|
||||
<strong>OK</strong>.</li>
|
||||
|
||||
<li>Using your operating system file explorer, navigate to
|
||||
{@code <sdk>/extras/google/play_billing/}, copy the
|
||||
{@code IInAppBillingService.aidl} file, and paste it into the
|
||||
<li>Using your operating system file explorer, navigate to
|
||||
{@code <sdk>/extras/google/play_billing/}, copy the
|
||||
{@code IInAppBillingService.aidl} file, and paste it into the
|
||||
{@code com.android.vending.billing} package in your project.
|
||||
</li>
|
||||
</ol>
|
||||
@@ -137,7 +137,7 @@ method calls.</p>
|
||||
</li>
|
||||
</ol>
|
||||
|
||||
<h2 id="billing-permission">Updating Your Application's Manifest</h2>
|
||||
<h2 id="billing-permission">Updating Your App's Manifest</h2>
|
||||
|
||||
<p>
|
||||
In-app billing relies on the Google Play application, which handles all
|
||||
|
||||
@@ -132,11 +132,11 @@ type, pricing, description, and how Google Play should handle and track
|
||||
purchases for that product.</p>
|
||||
<p>If you sell several of your apps or in-app products at the same price, you
|
||||
can add <em>pricing templates</em> to manage these price points from a
|
||||
centralized location. When using pricing templates, you can include the local
|
||||
tax within the prices you provide, or you can provide prices and have the system
|
||||
centralized location. When using pricing templates, you can include local taxes
|
||||
within the prices you provide, or you can provide prices and have the system
|
||||
add local taxes to these prices. You can make changes to the prices in your
|
||||
templates—such as refreshing the exchange rates for certain
|
||||
countries—and your changes are applied to the apps and in-app products
|
||||
pricing templates, such as refreshing the exchange rates for certain
|
||||
countries, and your changes are applied to the apps and in-app products
|
||||
that you link to the template.</p>
|
||||
<p>You can also create test accounts to authorize
|
||||
access for testing applications that are unpublished.</p>
|
||||
|
||||
@@ -18,7 +18,8 @@ and features, and more. You can use In-app Billing to sell products as</p>
|
||||
apps and in-app products that they distribute to multiple countries, the
|
||||
system automatically sets local prices for different currencies using
|
||||
today’s exchange rates and country-specific pricing patterns. To satisfy
|
||||
specific pricing needs, developers can also adjust these prices manually.</li>
|
||||
particular pricing needs, developers can also adjust these prices manually.
|
||||
</li>
|
||||
<li><strong>Pricing Templates</strong>—Developers can add pricing
|
||||
templates and link these templates to app prices or in-app product prices.
|
||||
These templates include local prices across all markets. By using a
|
||||
|
||||
|
Before Width: | Height: | Size: 90 KiB |
|
Before Width: | Height: | Size: 132 KiB After Width: | Height: | Size: 135 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 82 KiB |
|
Before Width: | Height: | Size: 66 KiB |
|
Before Width: | Height: | Size: 51 KiB |
|
Before Width: | Height: | Size: 159 KiB |
|
Before Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 51 KiB |