2012年12月22日土曜日

アプリ内課金概要 (In-app Billing Overview for Android)

Android DevelopersのIn-appBilling Overviewのページを訳しました。
アプリ内課金のバージョン2と3の違いとそれぞれの商品タイプについて説明されています。今後バージョン3での開発を勧めています。

アプリ内課金概要 (In-app Billing Overview)
ここでは、アプリ内にアプリ内課金(In-app Billing)を加えるために理解しておくべき、基本的なアプリ内課金の概念と特徴について説明します。

In-app Billing API

アプリはディバイスにインストールされているGoogle PlayアプリにあるAPIを使ってアプリ内課金サービスにアクセスします。Google PlayアプリはアプリとGoogle Playサーバ間の課金リクエスト(billing requests)とレスポンス(billing responses)を送ります。実際に、アプリはGoogle Playサーバと直接コミュニケーションを取ることはありません。代わりにアプリは課金リクエストをプロセス間通信によってGoogle Playアプリに送り、Google Playアプリからレスポンスを受け取ります。アプリはGoogle Play サーバ間のネットワーク通信の管理は一切しません。

アプリ内課金はGoogle Playで公開されたアプリにのみ実装することができます。アプリ内購入リクエスト( in-app purchase requests)を完了するために、Google PlayアプリはGoogle Playサーバにネットワークを通してアクセスする必要があります。


現在、Google Playはアプリ内課金APIに関して2つのバージョンを提供しています。どちらのバージョンを使うかはMigration Considerationsを参照してください。


Version 3 (Recommended)

  • Google Playからのプロダクト詳細のリクエスト、プロダクトのオーダー、ユーザのプロダクト所有に基づいたアイテムの復元などを簡単に行うため、簡素化されたAPIを通してリクエストは送られる。
  • オーダー情報は購入完了をディバイスに同期的に伝える。
  • 全ての購入は管理("managed")される。(Google Playはアプリ内プロダクトのユーザの所有を管理している。)ユーザはアプリ内アイテムのコピーを複数所有することはできない。いずれの時点でも1つのコピーだけ所有することができる。
  • 購入されたアイテムは消費することができる。消費された場合、そのアイテムは非所有状態("unowned")に戻り、Google Playから再び購入することができる。

Version 2

  • リクエストは単体APIインタフェース(sendBillingRequest)を通して送られる。
  • Google Playからのレスポンスは非同期で、Broadcast Intentの形で行われる。
  • 消費モデルは提供されない。自身で実装しなければいけません。
  • 非管理アプリ内購入アイテム (unmanaged)を管理アプリ内購入アイテム (managed) と同様サポートしている。
どちらのバージョンも幅広いAndroid端末に互換性があります。アプリ内課金Version 3はGoogle Play ストアーの最新バージョンが搭載されているAndroid 2.2以上を搭載の機種をサポートしています。Version 2も同じように互換性があります。詳細はVersion Notesを見てください。

In-app Products

アプリ内プロダクトはアプリ内からユーザに販売するために提供するデジタル商品です。デジタル商品の例は、ゲーム内の通貨、ユーザの経験を強化するアプリのアップグレード、新しいコンテンツなどが含まれます。

デジタルコンテンツを売ることだけにアプリ内課金を使うことができます。物理的商品、個人的サービス、物理的な配送を要求すものを売るためにアプリ内課金を使用することはできません。有料アプリとは違い、ユーザがアプリ内プロダクトを一度購入すると払い戻し画面は表示されません。


Google Playはコンテンツ配信の形で提供はしません。開発者にはアプリの中で売るデジタルコンテンツを配信する責任があります。アプリ内プロダクトは1つのアプリのみ明確に関連づけられています。たとえ同じ開発元であっても、他のアプリで発行されたアプリ内プロダクトを購入することはできません。


Product types

アプリの収益化の仕方に柔軟性を持たせるために、アプリ内課金は異なる商品タイプをサポートしています。全ての場合において、Google Play Developer Consoleを使って製品を定義することができます。

管理商品(managed)、非管理商品(unmanaged)、定期購買商品(subscriptions)の商品タイプをアプリ内課金で指定することができます。管理("managed")とは
Google Play がユーザのアカウントを元にアプリ内商品の所有情報を管理し記録することを示しています。一方非管理("unmanaged")とは、開発者自身で所有情報を管理しなければいけません。

APIバージョンの違いによる製品のタイプのサポートについて更に知りたい場合、以下の資料を見てください。Version2, Version3


Google Play Developer Console

Developer Consoleではアプリ内課金を実装したアプリを公開し、そのアプリから購入できる様々な商品を管理することが出来ます。

1度のみの購入や定期購入の自動更新といったアイテムを含む、
アプリに関連したデジタル商品のリストを作ることができます。各アイテムに対し、ユニーク商品ID (SKU),商品タイプ、値段、説明、商品の購入履歴をGoogle Playが管理をすべきかなどの情報を定義することができます。

また非公開のテストアプリにアクセス許可を持たせたテストアカウントを作ることができます。


商品や商品リストの設定に関してDeveloper Consoleの使い方を学ぶには、Administering in_app Billingを見て下さい。


Google Play Purchase Flow

Google Playはアプリ購入に使われるバックエンド精算サービスを使用するので、ユーザにとって一貫性のある親しみやすい購入の流れになっています。

重要:Google Play上でアプリ内課金サービスを使用する
にはGoogle Checkout Merchant のアカウントを持たなければいけません。

購入を開始するために、アプリは特有のアプリ内商品の課金リクエストを送ります。google Playは支払い形式のリクエストや認証、
ファイナンシャル取引の処理などを含む取引に関する精算の詳細をすべて管理します。

精算処理が完了すると、Google Playは注文番号、注文日時、そして支払いなどの購入の詳細をアプリに送ります。アプリはファイナンシャル取引を管理する必要はありません。それはGoogle Playによって提供されます。


The Sample Applications

アプリにアプリ内課金を統合する手助けとして、Android SDKはアプリ内で商品を売るための方法をデモした、2つのサンプルアプリを提供しています。

TrivialDrive sample for the Version 3 API

このサンプルはドライブゲームで商品購入を実装し、アプリ内課金 Version 3 APIの使い方を示しています。このアプリはアプリ内課金のレクエストの送り方、Google Playからの同期したレスポンスの管理の仕方をデモしています。また、APIを使ったアイテムの消費の記録の仕方なども紹介しています。Version 3のサンプルはアプリ内課金処理の方法と同様に自動署名認証の仕方も含まれています。

Dungeons sample for the version 2 API

このサンプルはアドベンチャーゲームのための商品と定期購買を販売するためのアプリない課金 Version 2 APIの使い方をデモしています。またデータベース、ユーザインタフェースそしてアプリ内課金の実装に使える基本的ロジックを含んでいます。

重要:アプリを公開する前にアプリのコードを難読化することを進めます。詳細情報は

Security and Designを見てください。

Migration Considerations

アプリ内課金を含んだアプリを新しく作る際やVersion 2 やそれよりも前のAPIからVersion 3のAPIにアプリ内課金の実装を移行する際に考慮するべきことは以下のとおりです。

Google PlayはVersion2とVersion3 APIどちらも同時にサポートを続ける予定です。自身のペースでVersion3に移行してください。アプリ内課金 Version 2のサポート状態の変更はGoogle Play チームから前もってお知らせします。

必要性によってどちらのAPIのバージョンを使えばいいか以下のテーブルを参照してください。
Table 1. Selecting the In-app Billing API Version for Your Project

Choose Version 3 if ...
  • You want to sell in-app products only (and not subscriptions)
  • You need synchronous order confirmations when purchases complete
  • You need to synchronously restore a user's current purchases
Choose Version 2 if ...

  • You want to sell subscriptions in your app


もし、アプリ内で商品を売っているアプリを既に公開している場合以下に注意してください。


  • Developer Consoleで前持って定義した管理アイテム("managed items")はVersion 3で使用できます。
  • Version 3 APIを使ってアイテムの購入リクエストを行う場合、既存アプリで非管理アイテム("unmanaged items")と定義されているものは管理アイテム("managed items")として扱われます。このアイテムのためにDeveloper Consoleに新しいプロダクトを作る必要はありません。このアイテムの購入のために同じプロダクトIDを使用することができます。Version2 もしくはその前のAIPを使ってその購入リクエストを作る場合、非管理アイテム("unmanaged items")としてそのまま扱われます。

0 件のコメント:

コメントを投稿