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