238 lines
11 KiB
Plaintext
238 lines
11 KiB
Plaintext
page.title=Google Play Developer API
|
||
page.tags="In-app Billing", "Google Play", "inapp billing", "in app billing", "iab", "billing", "publishing"
|
||
page.image=/images/play_dev.jpg
|
||
page.metaDescription=A REST-based web service for remote app publishing and catalog management through Google Play.
|
||
|
||
|
||
@jd:body
|
||
|
||
<div id="qv-wrapper">
|
||
<div id="qv">
|
||
<h2>In this document</h2>
|
||
<!-- TODO: Update TOC -->
|
||
<ol>
|
||
<li><a href="#publishing_api_overview">Publishing API</a>
|
||
<li><a href="#subscriptions_api_overview">Subscriptions and In-App
|
||
Purchases API</a></li>
|
||
<li><a href="#using">Using the API</a>
|
||
<li><a href="#edits">Staged Edits</a></li>
|
||
<li><a href="#practices">Using the API Efficiently</a>
|
||
<ol>
|
||
<li><a href="#quota">Quota</a></li>
|
||
</ol>
|
||
</li>
|
||
</ol>
|
||
|
||
<h2>See also</h2>
|
||
<ol>
|
||
<li><a href="https://developers.google.com/android-publisher/">
|
||
Developer API reference</a></li>
|
||
<li><a href="https://support.google.com/googleplay/android-developer/answer/6071616">Google
|
||
Help Center</a> overview of the Google Play Developer API</li>
|
||
</ol>
|
||
</div>
|
||
</div>
|
||
|
||
<p>The Google Play Developer API is a REST-based web service that allows you to perform publishing
|
||
and app-management tasks. You can use this API to integrate your publishing
|
||
operations with your release-management process.</p>
|
||
|
||
<p>Not all developers will need to use these APIs—in most cases you will
|
||
continue to manage your apps directly using the Google Play Developer Console.
|
||
However, if you have a large number of APKs to manage, or have to track user
|
||
purchases and subscriptions, you may find this API very useful.</p>
|
||
|
||
<p>Using the Google Play Developer API, you can automate a variety of
|
||
app-management tasks, including:</p>
|
||
|
||
<ul>
|
||
<li>Uploading and releasing new versions of your app</li>
|
||
<li>Editing your app Google Play Store listings, including localized text and
|
||
graphics</li>
|
||
<li>Managing your in-app product catalog, your products purchase status and your
|
||
app subscriptions</li>
|
||
</li>
|
||
</ul>
|
||
|
||
<p>The Google Play Developer API lets you focus on designing and developing your
|
||
app, while spending less time and effort managing your releases, even as you
|
||
grow to new markets.</p>
|
||
|
||
<p>The Google Play Developer API includes two components:</p>
|
||
|
||
<ul>
|
||
<li>The <a href="#publishing_api_overview">Publishing API</a> lets you upload and publish
|
||
apps, and perform other publishing-related tasks.</li>
|
||
<li>The <a href="#subscriptions_api_overview">Subscriptions and In-App Purchases
|
||
API</a> lets you manage in-app purchases and subscriptions. (This was
|
||
previously known as the "Purchase Status API".)</li>
|
||
</ul>
|
||
|
||
<h2 id="publishing_api_overview">Publishing API</h2>
|
||
|
||
<p>
|
||
The Google Play Developer Publishing API allows you to automate frequent tasks
|
||
having to do with app distribution. This provides functions
|
||
similar to those available to a developer through the Google Play
|
||
Developer Console, such
|
||
as:
|
||
</p>
|
||
|
||
<ul><li>Uploading new versions of an app</li>
|
||
<li>Releasing apps, by assigning APKs to various <em>Tracks</em> (alpha, beta,
|
||
staged rollout, or production)</li>
|
||
<li>Creating and modifying Google Play Store listings, including localized text
|
||
and graphics and multi-device screenshots</li></ul>
|
||
|
||
<p>Those tasks are performed using the
|
||
<a href="#edits">edits</a>
|
||
functionality, which takes a transactional approach to making changes —
|
||
you bundle several changes into a single draft edit, then commit the changes all
|
||
at once. (None of the changes take effect until the edit is committed.)</p>
|
||
|
||
<p class="note"><strong>Note:</strong> Not all developers will need to use this
|
||
API. All the functionality provided by the API is also available through the
|
||
Google Play
|
||
Developer Console. However, this API lets you integrate your app and listing
|
||
update process with your existing tools, which will be very useful for some
|
||
developers. In particular, if you have a large number of APKs to manage, or
|
||
localized listings in many different locales, you may find this API invaluable.
|
||
</p>
|
||
|
||
<h2 id="subscriptions_api_overview">Subscriptions and In-App Purchases API</h2>
|
||
|
||
<p>The API allows you to manage your app's catalog of in-app products and
|
||
subscriptions. In addition, with the Subscriptions and In-App Purchases API you
|
||
can quickly retrieve the
|
||
details of any purchase using a standard GET request. In the request you supply
|
||
information about the purchase — app package name, purchase or
|
||
subscription ID, and the purchase token. The server responds with a JSON object
|
||
describing the associated purchase details, order status, developer payload, and
|
||
other information.</p>
|
||
|
||
<p>You can use the Purchase Status API in several ways, such as for reporting
|
||
and reconciliation of individual orders and for verifying purchases and
|
||
subscription expirations. You can also use the API to learn about cancelled
|
||
orders and confirm whether in-app products have been consumed, including
|
||
whether they were consumed before being cancelled.</p>
|
||
|
||
<p class="note"><strong>Note:</strong> The Subscriptions and In-App
|
||
Purchases API does not use the new, transactional "edits" functionality used by
|
||
the <a href="#publishing_api_overview">Publishing API</a>. Methods for the
|
||
<a href="https://developers.google.com/android-publisher/api-ref/inappproducts">Inappproducts</a>,
|
||
<a href="https://developers.google.com/android-publisher/api-ref/purchases/products">Purchases.products</a>,
|
||
and <a href="https://developers.google.com/android-publisher/api-ref/purchases/subscriptions">Purchases.subscriptions</a>
|
||
resources take effect immediately. Each resource's API reference page notes
|
||
specifically whether the methods for that resource use the "edits"
|
||
model.</p>
|
||
|
||
<p>The Purchase Status API is part of the <a
|
||
href="https://developers.google.com/android-publisher/">Google Play Developer
|
||
API</a> v. 2.0, available through the Google Developers Console.</p>
|
||
|
||
<h2 id="using">Using the API</h2>
|
||
|
||
<p>To start making API calls, you’ll set up and manage the Google Play Developer
|
||
API directly from the <a href="https://play.google.com/apps/publish/">Google
|
||
Play Developer Console</a>. The API can only be managed by the owner of your
|
||
Google Play Developer account.</p>
|
||
|
||
<p>To access the API, you'll need to:</p>
|
||
|
||
<ol><li>Set up a new or existing API project</li>
|
||
<li>Set up one or more authorized clients, which can be either:
|
||
<ul>
|
||
<li><a href="https://developers.google.com/accounts/docs/OAuth2">OAuth
|
||
clients</a></li>
|
||
<li><a href="https://developers.google.com/accounts/docs/OAuth2ServiceAccount">
|
||
service account</a></li>
|
||
</ul></li></ol>
|
||
|
||
<p>For full details, see the Google Play Developer API
|
||
<a href="https://developers.google.com/android-publisher/getting_started">Getting
|
||
Started</a> page.</p>
|
||
|
||
<h2 id="edits">Staged Edits</h2>
|
||
|
||
<p>The Google Play Developer Publishing API Edits methods allow you to prepare
|
||
and commit changes to your Google Play apps. Once your update is ready to go,
|
||
you can deploy it with a single operation. The changes you can make include:</p>
|
||
|
||
<ul>
|
||
<li>Uploading one or more APKs</li>
|
||
<li>Assigning different APKs to different “tracks”: alpha, beta, staged
|
||
rollout, and production</li>
|
||
<li>Creating and modifying localized store listings for the app</li>
|
||
<li>Uploading screenshots and other images for the app’s store listings</li>
|
||
</ul>
|
||
|
||
<p>Once all the desired changes have been staged, they are all committed with a
|
||
single operation.</p>
|
||
|
||
<p>For full details on staged edits, see the Google Play Developer API
|
||
<a href="https://developers.google.com/android-publisher/edits/">Edits</a>
|
||
page.</p>
|
||
|
||
<p class="note"><strong>Note:</strong> The new, transactional "edits"
|
||
functionality is only used by the <a href="#publishing_api_overview">Publishing
|
||
API</a>. Methods for the <a href="#subscriptions_api_overview">Subscriptions and
|
||
In-App Purchases API</a> take effect immediately. Each resource's API reference
|
||
page notes specifically whether the methods for that resource use the "edits"
|
||
model.</p>
|
||
|
||
<h2 id="practices">Using the API Efficiently</h2>
|
||
|
||
<p>Access to the Google Play Developer API is regulated to help ensure a
|
||
high-performance environment for all applications that use it (as described in
|
||
<a href="#quota">Quota</a>). While you can
|
||
request a higher daily quota for your application, we highly recommend that you
|
||
minimize your access using these techniques: </p>
|
||
|
||
<ul>
|
||
<li><em>Limit the number of app updates</em> — Do not publish alpha or beta
|
||
updates more frequently than once a day. (Production apps should be updated
|
||
even less frequently than that.) Every update costs your users time and
|
||
possibly money. If you update too frequently, users will start ignoring
|
||
updates, or even uninstall the product. (Of course, if there's a major problem
|
||
with your app, go ahead and fix it.)</li>
|
||
<li><em>Query the Purchase Status API for new purchases only</em> — At
|
||
purchase, your app can pass the purchase token and other details to your backend
|
||
servers, which can use the Purchase Status API to verify the purchase.</li>
|
||
<li><em>Cache purchase details on your servers</em> — To the extent possible,
|
||
cache the purchase details for in-app products and subscriptions on your backend
|
||
servers. If your app contacts your backend servers at runtime to verify purchase
|
||
validity, your server can verify the purchase based on the cached details, to
|
||
minimize use of the Purchase Status API and to provide the fastest possible response
|
||
(and best experience) for the user.</li>
|
||
<li><em>Store subscription expiry on your servers</em> — Your servers should
|
||
use the Purchase Status API to query the expiration date for new subscription tokens,
|
||
then store the expiration date locally. This allows you to check the status of
|
||
subscriptions only at or after the expiration (see below).</li>
|
||
<li><em>Query for subscription status only at expiration</em> — Once your
|
||
server has retrieved the expiration date of subscription tokens, it should not query
|
||
the Google Play servers for the subscription status again until the subscription is
|
||
reaching or has passed the expiration date. Typically, your servers would run a batch
|
||
query each day to check the status of expiring subscriptions, then update the database.
|
||
Note that:
|
||
<ul>
|
||
<li>Your servers should not query all subscriptions every day.</li>
|
||
<li>Your servers should never query subscription status dynamically, based on
|
||
individual requests from your Android application.</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
|
||
<p>By following those general guidelines, your implementation will offer the
|
||
best possible performance for users.</p>
|
||
|
||
<h3 id="quota">Quota</h3>
|
||
|
||
<p>Applications using the Google Play Developer API are limited to an
|
||
initial courtesy usage quota of <strong>200,000 requests per day</strong> (per
|
||
application). This should provide enough access for publishing activities and
|
||
normal subscription-validation needs.</p>
|
||
|
||
<p>If you need to request a higher limit for your application, use the "Request
|
||
more" link on the <strong>Quotas</strong>
|
||
pane of the Google Developers Console.</p>
|