2013年5月29日水曜日

Google Play In-app Billingを訳してみる「Overview」

In-app Billingの概要

このドキュメントは基本的なIn-app Billingの構成要素や機能に関して記載している。それら構成要素や機能はあなたが開発したアプリケーションにIn-app Billingの機能を加えるために理解する必要のあるものだ。


In-app Billing API

あなたのアプリケーションはIn-app BillingサービスにAPIを用いてアクセスする。そのAPIはデバイスにインストールされたGoogle Play appによってさらされている。Google Play appはあなたのアプリケーションとGoogle Play サーバーの間の決済リクエストやレスポンスを伝搬している。実際、あなたのアプリケーションは決して直接にGoogle Playサーバーと通信を行うことはない。その代わり、あなたのアプリケーションは決済リクエストをGoogle Playアプリケーションに対してプロセス間通信(IPC)を通して行い、Google Play appからレスポンスを受け取る。あなたのアプリケーションは自分自身とGoogle Playサーバー間のネットワーク接続を管理したりはしない。

In-app billing Version 3は最新バージョンで、様々なアンドロイドデバイス間での広い互換性を維持している。In-app Billing Version 3はAndroid2.2とそれ以上で動くデバイスをサポートしている。これらのバージョンはGoogle Play ストアがインストールされた最新バージョンを所持している(アクティブデバイスの圧倒的多数を占めている)

Version 3 の特徴
・リクエストは最新のAPIを通じて送られる。そのAPIはあなたが容易にGoogle Playより商品詳細をリクエストしたり、in-app商品の注文を行ったり、あなたの所有権に基づいて迅速にアイテムを返させる
・オーダー情報は決済の完了時、同期的にデバイスに伝搬する
・すべての決済は「管理(これはGoogle Playがin-app製品のユーザーの所有権を追い続けるということ)」されている。ユーザーはin-appアイテムの複数のコピーを持つことができない。あらゆる時点で一つのコピーのみ持つことができる
・決済アイテムは消費することができる。消費されたとき、そのアイテムは「非所有」の状態に戻り、再度Google Playから購入することができる
・定期購入の機能をサポートしている

In-app Billingの他のバージョンの詳細についてはバージョンノートを参照。


In-app商品

In-app商品はデジタル商品だ。そのデジタル商品はあなたの作ったアプリケーションからユーザーに対して販売を行う際に提供するものだ。デジタル商品の例としてゲーム内通貨、ユーザー体験を高めるアプリ機能のアップグレード、あなたの作ったアプリの新コンテンツが含まれる。

あなたはIn-app Billingをデジタルコンテンツの販売にのみ使用することができる。あなたはIn-app Billingを物理的な商品の販売、個人的なサービス、物理的な配送を必要とする何かに使用することはできない。価格のついたアプリケーションとは異なり、一度ユーザーがIn-app商品を購入すると返金画面は表示されない。

Google Playはコンテンツ付与のフォームは何ら提供をしない。あなたは自分の開発したアプリ内で販売をするデジタルコンテンツの付与を担当する。In-app商品は常に明確に一対一アプリに紐付いている。それはつまり、特定のアプリケーションは他のアプリケーションによって公開されたin-app商品を購入することはできないということだ。それがたとえ統一デベロッパーによるものだったとしても。


商品タイプ

In-app Billingは異なる商品タイプをサポートしている。この商品タイプはあなたの開発したアプリケーションをマネタイズする方法に柔軟性を与えている。すべてのケースにおいて、あなたはGoogle Play Developer Consoleを使うことで商品を定義できる。

あなたはIn-app Billingアプリケーションにこれら商品タイプを規定することができる - in-app商品か定期購入かの管理を。Google playはユーザーアカウントごとにあなたのアプリケーションでin-app商品か定期購入かに関する所有権を管理、追尾する。In-app Billing Version 3でサポートされている商品タイプに関して学びたい人はこちら


Google Play Developer Console

Developer ConsoleはあなたがIn-app Billing アプリケーションを発行できる場所であり、あなたの開発したアプリで決済できるいろいろなin-app商品を管理する場所だ。

あなたはデジタルアイテムの商品リストを作ることができる。そのデジタルアイテムはあなたの開発したアプリケーションに関連し、一度きりの決済や繰り返し行われる定期購入のアイテムも含んでいる。各々のアイテムに対して、あなたはアイテムのユニークproduct ID(SKUも含む)、product type,価格、商品説明のような情報を定義することができ、またどのようにGoogle Playがその商品の決済を管理し、追尾するかも定義することができる。

あなたはリリースしていないテストアプリへのアクセスを許可するテストアカウントの作成も行うことができる。

Developer Consoleを使ってどのようにin-app商品や商品リストを設定するのかを学びたければ、In-app Billingの管理を参照。


Google Play決済フロー

Google Playはアプリケーションの決済で使われているものと同じ精算バックエンドを使用している。だから、あなたの開発したアプリのユーザーは一貫した馴染みのある決済フローを経験する。

重要:Google Play上でIn-app Billingサービスを使うためにはGoogle Wallet merchantアカウントを持たなければならない。

決済を開始するにあたり、あなたの開発したアプリケーションは特定のin-app商品に対するリクエストを送る。Google Playはその時決済に関する精算詳細のすべてを管理する。その決済というのは、リクエスト、決済フォームのバリデート、決済トランザクションのプロセスを含む。

精算プロセスが完了したとき、Google Playはあなたのアプリケーションに決済詳細を送る。決済詳細はorder番号、注文日と時間、払われた金額などだ。決済のどのポイントでも、あなたの開発したアプリケーションは決済トランザクションの管理をする必要はない。その役割はGoogle Playによって行われる。

図1.アプリケーションはIn-app Billingリクエストを自身の独自URを通して始める(最初の画像)。Google Playは精算ユーザーインターフェースを提供することでリクエストの処理を行う(真ん中の画像)。精算が完了したとき、アプリケーションは再開される。


サンプルアプリケーション

あなたの開発したアプリケーションにIn-app Billingを組み込む助けになるよう、Android SDKはサンプルアプリケーションを提供している。そのサンプルアプリはどのようにin-app商品や定期購入をアプリの中から販売するのかの実演をしている。

バージョン3APIのためのTrivialDriveサンプルアプリはドライビングゲームのおけるin-app商品や定期購入決済を実装するために、In-app Billing Version 3 APIをどのように使えばよいかを示している。そのアプリケーションはIn-app Billingリクエストをどのように送るか、そしてGoogle Playからの同期レスポンスをどう管理するかの実演をしている。そのアプリケーションはどのようにAPIでアイテム消費が記録されるかも示している。バージョン3サンプルは自動署名検証の実行機能と同様のIn-app Billing管理に便利なクラスも含んでいる。

推奨:アプリケーションをリリースする前にはコードの難読化処理を行ったほうがよい。さらなる情報は、セキュリティと設計を参照。


バージョン移行の判断について

もしあなたがバージョン2やそれ以前の既に存在しているIn-app Billing実装を使用しているのであれば、都合がつく最も早い段階で、In-app Billing Version 3への移行を強く推奨する。

もしあなたがin-app商品を売るアプリを既にリリースしているのであれば、以下に留意のこと。
・あなたが以前Developer Consoleで定義していた商品や定期購入の管理はバージョン3でも以前と同様に動く
・現在のアプリケーションで定義していたあなたの開発したアプリから直で動く(unmanaged)アイテムはGoogle Play管理の(managedな)商品として扱われる。もしあなたがバージョン3APIを使ってこれらのアイテムに関する決済リクエストを起こった場合は。あなたはこれらのアイテムに関して、新たな商品登録をDeveloper Consoleで作る必要はない。そして、あなたはこれらのアイテムの決済を行う際に、同じプロダクトIDを使うことができる。もしあなたがバージョン2やそれ以前のAPIを使ってこれらアイテムの決済を行う場合はunmanagedとして取り扱い続けることができる。


In-app Billing Overview

Quickview

  • Use In-app Billing to sell digital goods, including one-time items and recurring subscriptions.
  • Supported for any app published on Google Play. You only need a Google Play Developer Console account and a Google Wallet merchant account.
  • Checkout processing is automatically handled by Google Play, with the same look-and-feel as for app purchases.

In this document

  1. In-app Billing API
  2. In-app Products
    1. Product Types
  3. Google Play Developer Console
  4. Google Play Purchase Flow
  5. Sample App
  6. Migration Considerations

Related Samples

  1. Sample Application (V3)
This documentation describes the fundamental In-app Billing components and features that you need to understand in order to add In-app Billing features into your application.

In-app Billing API


Your application accesses the In-app Billing service using an API that is exposed by the Google Play app that is installed on the device. The Google Play app then conveys billing requests and responses between your application and the Google Play server. In practice, your application never directly communicates with the Google Play server. Instead, your application sends billing requests to the Google Play application over interprocess communication (IPC) and receives responses from the Google Play app. Your application does not manage any network connections between itself and the Google Play server.
In-app Billing can be implemented only in applications that you publish through Google Play. To complete in-app purchase requests, the Google Play app must be able to access the Google Play server over the network.
In-app billing Version 3 is the latest version, and maintains very broad compatibility across the range of Android devices. In-app Billing Version 3 is supported on devices running Android 2.2 or higher that have the latest version of the Google Play store installed (a vast majority of active devices).

Version 3 features

  • Requests are sent through a streamlined API that allows you to easily request product details from Google Play, order in-app products, and quickly restore items based on users' product ownership
  • Order information is synchronously propagated to the device on purchase completion
  • All purchases are “managed” (that is, Google Play keeps track of the user's ownership of in-app products). The user cannot own multiple copies of an in-app item; only one copy can be owned at any point in time
  • Purchased items can be consumed. When consumed, the item reverts to the "unowned" state and can be purchased again from Google Play
  • Provides support for subscriptions
For details about other versions of In-app Billing, see the Version Notes.

In-app Products


In-app products are the digital goods that you offer for sale from inside your application to users. Examples of digital goods includes in-game currency, application feature upgrades that enhance the user experience, and new content for your application.
You can use In-app Billing to sell only digital content. You cannot use In-app Billing to sell physical goods, personal services, or anything that requires physical delivery. Unlike with priced applications, once the user has purchased an in-app product there is no refund window.
Google Play does not provide any form of content delivery. You are responsible for delivering the digital content that you sell in your applications. In-app products are always explicitly associated with one and only one app. That is, one application cannot purchase an in-app product published for another app, even if they are from the same developer.

Product types

In-app Billing supports different product types to give you flexibility in how you monetize your application. In all cases, you define your products using the Google Play Developer Console.
You can specify these types of products for your In-app Billing application — managed in-app products and subscriptions. Google Play handles and tracks ownership for in-app products and subscriptions on your application on a per user account basis. Learn more about the product types supported by In-app Billing Version 3.

Google Play Developer Console


The Developer Console is where you can publish your In-app Billing application, and manage the various in-app products that are available for purchase from your application.
You can create a product list of digital goods that are associated with your application, including items for one-time purchase and recurring subscriptions. For each item, you can define information such as the item’s unique product ID (also called its SKU), product type, pricing, description, and how Google Play should handle and track purchases for that product.
You can also create test accounts to authorize access for testing applications that are unpublished.
To learn how to use the Developer Console to configure your in-app products and product list, see Administering In-app Billing.

Google Play Purchase Flow


Google Play uses the same checkout backend service as is used for application purchases, so your users experience a consistent and familiar purchase flow.
Important: You must have a Google Wallet merchant account to use the In-app Billing service on Google Play.
To initiate a purchase, your application sends a billing request for a specific in-app product. Google Play then handles all of the checkout details for the transaction, including requesting and validating the form of payment and processing the financial transaction.
When the checkout process is complete, Google Play sends your application the purchase details, such as the order number, the order date and time, and the price paid. At no point does your application have to handle any financial transactions; that role is provided by Google Play.

Figure 1. Applications initiate In-app Billing requests through their own UI (first screen). Google Play responds to the request by providing the checkout user interface (middle screen). When checkout is complete, the application resumes.

Sample Application


To help you integrate In-app Billing into your application, the Android SDK provides a sample application that demonstrates how to sell in-app products and subscriptions from inside an app.
The TrivialDrive sample for the Version 3 API sample shows how to use the In-app Billing Version 3 API to implement in-app product and subscription purchases for a driving game. The application demonstrates how to send In-app Billing requests, and handle synchronous responses from Google Play. The application also shows how to record item consumption with the API. The Version 3 sample includes convenience classes for processing In-app Billing operations as well as perform automatic signature verification.
Recommendation: Make sure to obfuscate the code in your application before you publish it. For more information, see Security and Design.

Migration Considerations


If you have an existing In-app Billing implementation that uses Version 2 or earlier, it is strongly recommended that you migrate to In-app Billing Version 3 at your earliest convenience.
If you have published apps selling in-app products, note that:
  • Managed items and subscriptions that you have previously defined in the Developer Console will work with Version 3 as before.
  • Unmanaged items that you have defined for existing applications will be treated as managed products if you make a purchase request for these items using the Version 3 API. You do not need to create a new product entry in Developer Console for these items, and you can use the same product IDs to purchase these items. They will still continue to be treated as unmanaged items if you make a purchase request for them using the Version 2 or earlier API.