2012年12月31日月曜日

In-app Billing Version3 翻訳(In-app Billing Reference編)

EGGの曽川です。

リファレンスの翻訳です。
原文はこちらです。
まだ幾つかドキュメントはありますが、In-app Billing Version3に関するドキュメントは一旦終了します。

アプリ内課金リファレンス
このドキュメントはアプリ内課金バージョン3を使った技術的なリファレンスです。

サーバのレスポンスコード

次の表はGooglePlayからアプリに対して送られる、サーバのレスポンスコードの全てです。
GooglePlayは同期的にレスポンスコードを送ります。(レスポンスBundleRESPONSE_CODEキーにマッピングされているint型の値)
アプリは全てのレスポンスコードを処理しなければなりません。

表1.アプリ内課金バージョン3のAPI呼び出しのレスポンスコード一覧
レスポンスコード 説明
BILLING_RESPONSE_RESULT_OK 0 成功
BILLING_RESPONSE_RESULT_USER_CANCELED 1 ユーザがバックキーを押した、またはダイアログをキャンセルした
BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE 3 課金APIのバージョンがリクエストしたタイプをサポートしていない
BILLING_RESPONSE_RESULT_ITEM_UNAVAILABLE 4 リクエストされたサービスは購入できない状態にある
BILLING_RESPONSE_RESULT_DEVELOPER_ERROR 5 APIに与えられた引数が無効。このエラーは署名が正しくない、アプリ内課金の設定がGooglePlayで行われていない、AndroidManifestに必要な権限がない。
BILLING_RESPONSE_RESULT_ERROR 6 APIの動作中に致命的なエラーが起こった。
BILLING_RESPONSE_RESULT_ITEM_ALREADY_OWNED 7 アイテムが既に購入されているので失敗した。
BILLING_RESPONSE_RESULT_ITEM_NOT_OWNED 8 アイテムを所有していないために消費に失敗した。


APIリファレンス

アプリ内課金バージョン3のAPIは、バージョン3のサンプルアプリケーションに含まれるInAppBillingService.aidlファイルに定義されています。

getSkuDetails()メソッド
このメソッドはサービスIDに紐づくサービス詳細リストを返します。
GooglePlayから送られたレスポンスBundleは、クエリの結果がDETAILS_LISTキーをマップとするArrayListに格納されています。
詳細リストのそれぞれのString内には、1つのサービス(JSON形式)のサービス詳細が含まれます。
サービス詳細のJSON文字列のフィールドを、表2にまとめています。

表2.getSkuDetailsリクエストから返されるサービスアイテム詳細のJSONフィールドの説明
キー 説明
productId 商品のサービスID
type アプリ内の購入タイプで、値は必ず「inapp」
price 通貨記号を含むアイテムの価格のフォーマット。価格には消費税は含まれていない。
title サービスのタイトル
description サービスの説明

getBuyIntent()メソッド
このメソッドは、RESPONSE_CODEキーに紐づくint型のレスポンスコードと
BUY_INTENTキーに紐づいたアプリ内アイテムの購入フローを起動するPendingIntentを返します。
PendingIntentを受け取ると、GooglePlayは注文データでレスポンスIntentを送ります。
レスポンスIntentから返されるデータを表3にまとめています。

表3.アプリ内課金のバージョン3の購入リクエストからのレスポンスデータ
キー 説明
RESPONSE_CODE 購入が完了した場合は0それ以外はエラー
INAPP_PURCHASE_DATA 注文詳細を含むJSON形式の文字列。(表4のJSONフィールドの説明を参照)
INAPP_DATA_SIGNATURE 開発者の秘密鍵で署名された購入データの署名を含む文字列

表4は注文のレスポンスデータを返すJSONフィールドを説明しています。

表4.INAPP_PURCHASE_DATAのJSONフィールドの説明
フィールド 説明
orderId トランザクションのためのユニークな注文ID。Google Walletの注文IDに対応します。
packageName 購入の起点となったアプリのパッケージ
productId アイテムのサービスID。全てのアイテムはサービスIDを持っており、GooglePlayパブリッシャーサイト上のアプリのサービスリストで指定しなければいけません。
purchaseTime 購入された時間。エポック時間からのミリ秒(1970/01/01).
purchaseState 注文の購入状態。可能な値は0 (購入)、1 (キャンセル)、2 (払い戻し).
developerPayload 注文に関する補足情報を含む開発者が指定した文字列。getBuyIntentリクエストを行う際にこのフィールドの値を指定する事ができます。
purchaseToken 指定されたアイテムとユーザのペアのための購入を一意に識別するトークン

getPurchases()メソッド
このメソッドは、現在ユーザが保有する未消費のサービスを返します。
表5はBundleとして返されるのレスポンスデータのリストです。

表5.getPurchasesリクエストのレスポンスデータ

キー 説明
RESPONSE_CODE 0の場合は成功。それ以外はエラー。
INAPP_PURCHASE_ITEM_LIST StringArrayList:アプリからの購入サービスIDを含むリスト。
INAPP_PURCHASE_DATA_LIST StringArrayList:アプリからの購入詳細を含むリスト。(リスト内の各INAPP_PURCHASE_DATA項目に保存された詳細データのリストは表4を参照してください。)
INAPP_DATA_SIGNATURE_LIST StringArrayList:アプリからの購入の署名を含むリスト。
INAPP_CONTINUATION_TOKEN ユーザが保有するアプリ内サービスの次のセットを検索するための継続トークン含む文字列。
これはユーザが保有するサービスが非常に多い場合のみ、GooglePlayサービスがセットします。
継続トークンがレスポンスに存在している場合は、getPurchasesを別に呼び出し、受信した継続トークンを渡さなければいけません。
後のgetPurchasesの呼び出しは、さらなる購入やおそらく別のトークンを返します。

0 件のコメント:

コメントを投稿