以下はアプリ内課金を実装するうえで必要な定数定義や値の意味のリファレンスです。
以下のリストは、アプリに送られるAndroid Marketからのサーバレスポンスコードの一覧です。Android Marketはcom.android.vending.billing.RESPONSE_CODEブロードキャストインテントのresponse_codeエクストラで非同期にレスポンスコードを送信します。アプリは、これらのレスポンスコードをハンドリングしなければいけません。
以下に、Android Marketアプリ内課金サービスのインターフェイスについて述べます。インターフェイスはアプリ内課金サンプルアプリに含まれるIMarketBillingService.aidlファイルで定義されます。
インターフェイスは1つの引数を取るsendBillingRequest()メソッドで構成されます。このメソッドはBundleを引数に取ります。Bundleに示されるいくつかの主要なキーと値のペアを含みます。
表2 主要なキーと値 | ||||||||||||||||||||||||||||||||||||||||
|
開発者固有文字列は、REQUEST_PURCHASEリクエストを作成する際に指定できます。このフィールドは注文のためのトランザクション情報に含まれるJSON文字列で返されます。開発者は、このキーを使用して注文のための補助情報を送信できます。
例えば、このキーを注文のインデックスとして使用した場合、購入情報をデータベースに格納する際に便利です。このキーを使用してデータやコンテンツを送信しないことを推奨します。
表3はそれぞれのリクエストタイプのために戻されるキーを示しています。
リクエストタイプ | 戻されるキー | レスポンスコードの取り得る値 |
---|---|---|
CHECK_BILLING_SUPPORTED | RESPONSE_CODE | RESULT_OK RESULT_BILLING_UNAVAILABLE RESULT_ERROR RESULT_DEVELOPER_ERROR |
REQUEST_PURCHASE | RESPONSE_CODE PURCHASE_INTENT REQUEST_ID |
RESULT_OK RESULT_ERROR RESULT_DEVELOPER_ERROR |
GET_PURCHASE_INFORMATION | RESPONSE_CODE REQUEST_ID |
RESULT_OK RESULT_ERROR RESULT_DEVELOPER_ERROR |
CONFIRM_NOTIFICATIONS | RESPONSE_CODE REQUEST_ID |
RESULT_OK RESULT_ERROR RESULT_DEVELOPER_ERROR |
RESTORE_TRANSACTIONS | RESPONSE_CODE REQUEST_ID |
RESULT_OK RESULT_ERROR RESULT_DEVELOPER_ERROR |
Android Marketアプリが送信するアプリ内課金ブロードキャストインテントについて説明します。これらのブロードキャストインテントはアプリ内課金で発生したイベントをアプリに通知します。アプリはアプリ内課金のサンプルアプリに含まれるBillingReceiverのようなBroadcastReceiverを実装しなければいけません。
● com.android.vending.billing.RESPONSE_CODE
このブロードキャストインテントはAndroid Marketレスポンスコードを含み、アプリ内課金リクエストを作成した後に送信されます。サーバレスポンスコードは課金リクエストがAndroid Marketに送信成功したことを、または課金リクエスト中にいくつかのエラーが発生したことを示します。
このインテントは購入状態変更(払い戻しや購入情報など)を報告するために使用されません。このレスポンスで送信されたレスポンスコードの詳細な情報については、「アプリ内課金のためのAndroid Marketレスポンスコード」を参照してください。サンプルアプリはACTION_RESPONSE_CODEと命名された定数に、このブロードキャストインテントが割り当てられています。
エクストラは、以下です。
● com.android.vending.billing.IN_APP_NOTIFY
このレスポンスは購入状態が変更されたことを示します。つまり、購入成功、キャンセル、払い戻しを意味します。このレスポンスは1つ以上の通知IDを含みます。それぞれの通知IDはサーバサイドメッセージと一致し、それぞれのメッセージは1つ以上のトランザクション情報を含みます。
アプリがIN_APP_NOTIFYブロードキャストインテントを受信した後、GET_PURCHASE_INFORMATIONリクエストを通知IDと一緒にメッセージの詳細を受信するために送ります。サンプルアプリでは、ACTION_NOTIFYと命名された定数が、このブロードキャストインテントに割り当てられています。
エクストラは、以下です。
● com.android.vending.billing.PURCHASE_STATE_CHANGED
このブロードキャストインテントは1つ以上のトランザクション情報の詳細を含みます。トランザクション情報はJSON文字列を含みます。JSON文字列は署名されていて、シグネチャは(暗号化されていない)JSON文字列と一緒にアプリに送信されます。
アプリ内課金メッセージの安全性を確立する補助として、アプリはJSON文字列のシグネチャを検証できます。サンプルアプリではこのブロードキャストインテントはACTION_PURCHASE_STATE_CHANGEDと命名された定数に割り当てられています。
エクストラは、以下です。
アプリはブロードキャストインテントとエクストラをアプリ内でユニークな定数にマッピングするべきです。サンプルアプリのConsts.javaを参照すれば、その方法が分かります。
JSON文字列のフィールドは以下のようになっています。
サンプルを通じてアプリ内課金の実装方法と、開発者自身のアプリへのアプリ内課金を実装する方法を見てきました。もし、マッシュアップによるアプリ開発を経験したことがあるなら、「アプリ内課金はマッシュアップによる開発だ」ということを理解していただけたのではないかと思います。
また、開発に必要なリファレンスもまとめたので、実際に開発を行う際に参照してください。
次回は、アプリ内課金の管理、テスト方法、セキュリティと設計に関して説明します。
Copyright © ITmedia, Inc. All Rights Reserved.