2013年2月8日金曜日

課金APIの概略 - Androidのアプリ内課金(In-App Billing)のまとめ (その2)

課金API概略


開発者のアプリは、端末にインストールされているGoogle Playアプリによって公開されているAPIを使って、課金サービスにアクセスする。
Google Playアプリは、課金リクエストとその応答を、Google Playサーバーと開発者のアプリの間で運ぶ。開発者のアプリは直接Google Playのサーバーと通信する事はなく、課金要求は、プロセス間通信(IPC)を介して、Google Playアプリへ送られる。

アプリ課金は、Google Playを介して配布されたアプリの中でのみ実装できる。また、課金要求を完了するには、Google Playアプリがネットワークを通じてGoogle Playサーバーにアクセスする必要がある。

APIの仕様は、Version 2とVersion 3とで大きく異なる。大きな相違点は以下の通り。

  • Version 2は非同期で処理されるが、Version 3では同期で処理される点である。
  • Version 2は、Android 1.6以降でサポートされるが、Version 3は、Android 2.2以降でサポートされる。

Version 3 APIの概略


購入フロー


購入の典型的な流れは以下の通り。
  1. IInAppBillingService#isBillingSupportedのリクエストをGoogle Playに送って、端末がアプリ課金APIをサポートしているかどうかを決定する。
  2. 次に、アプリ開始時もしくはユーザーがログインしたタイミングで、IInAppBillingService#getPurchasesのリクエストを送って、ユーザーが製品を購入済みかどうかをチェックする。Google Playは、購入済みの製品のIDを含むBundleを返す。
  3. 大抵の場合、購入可能なアイテムの情報をユーザーに示す必要がある。Google PlayのDevelopper Consoleで定義した製品の詳細情報を問い合わせるには、IInAppBillingService#getSkuDetailsを送ればよい。Google Playは、価格、タイトル、説明、製品タイプを含むBundleを返す。
  4. 製品がユーザーによって購入されていなければ、即座に購入を開始できる。購入するには、まず、product ID等を含むIInAppBillingService#getBuyIntentを送って購入のためのIntentをGoogle Playから取得する。product IDを指定するため、開発者はDevelopper Consoleで新しい製品を定義したときに、product IDをメモしておく必要がある。その後の流れは以下の通り。
    1. Google Playは購入を開始するためのPendingIntentを含むBundleを返す。
    2. アプリは、PendingIntentをActivity#startIntentSenderForResultを呼び出して、開始させる。
    3. 購入のフローが完了したら、Google Playは、Activity#onActivityResultに応答のIntentを送ってくる。

購入製品の消費


    ユーザーが購入した製品を消費した事にした場合の流れは以下の通り。
    1. IInAppBillingService#getPurchasesのリクエストを送って、ユーザーが製品を購入済みかどうかをチェックする。
    2. 購入していれば、IInAppBillingService#consumePurchaseを呼び出して、消費した事にする。


    0 件のコメント:

    コメントを投稿