ウェブアプリ用アプリ内課金(IAP)API - APIリファレンス
Amazon Servicesライブラリ
Amazon Servicesライブラリには次のメソッドがあります。
AmazonIapV2.addListener(listener)
- AmazonIapV2クラスには、使用前にオブザーバーを登録する必要があります。
- このメソッドは、
onLoad()
ライフサイクルメソッド内で呼び出す必要があります。
AmazonIapV2.purchase(sku)
- このメソッドは、特定のSKUの購入を開始します。
- すべての種類の購入可能アイテムに使用できます。
- ユーザーインターフェイスに表示される購入フローは、SKUに構成された情報に基づいて決定されます。
- このメソッドは、アプリからいつでも呼び出すことができます。
AmazonIapV2.getProductData(skus)
- このメソッドは、複数のSKUに関するアイテムデータを取得します。
- すべての種類の購入可能アイテムに使用できます。
- このメソッドは、アプリからいつでも呼び出すことができます。
- skusパラメーターには、SKUを表す文字列の配列を指定します。
AmazonIapV2.getPurchaseUpdates(reset)
- このメソッドは、以前の購入および取り消された非消費型アイテムをデバイス間で同期するために使用します。
- アクティビティの
onStart()
メソッドまたはonResume()
メソッドで、getPurchaseUpdates()
を呼び出します。また、注文に対してアイテムを二重に付与することを防ぐために、receiptIdを使用してレシートの重複を排除します。消費型アイテム、非消費型アイテム、定期購入型アイテムの違いに注目した実装の詳細は以下のとおりです。 - 消費型アイテム:
getPurchaseUpdates()
メソッドは、付与が完了していない消費型アイテムまたはキャンセルされた消費型アイテムの購入レシートを返します。IAP 2.0のgetPurchaseUpdatesResponse()
では、次の点に注意してください。getPurchaseUpdates()
の呼び出しから返された購入レシートについて、アイテム付与を処理するロジックをアプリに追加します。対応するpurchaseUpdatesResponse()
コールバックは、アプリが開かれたときや、ほかの任意のタイミングで実行されることがあります。その時点で利用できない可能性のあるユーザーインターフェイス(UI)要素やオブジェクトを参照するときは注意してください。offset
パラメーターではなく、boolean型のreset
パラメーターを使用します。すべての購入レシートを返すには、reset
をtrue
に設定します。getPurchaseUpdates()
の前回の呼び出し以降に行われた購入のレシートを返すには、reset
をfalse
に設定します。
- 非消費型アイテム:
onPurchaseUpdatesResponse()
は、非消費型アイテムおよび定期購入型アイテムのキャンセルされた購入とアクティブな購入のレシートを返します。購入がキャンセルされたかどうかを確認するには、receipt.isCanceled()
を使用します。IAP 1.0では、キャンセルされた非消費型アイテムおよび定期購入型アイテムのレシートは、purchaseUpdatesResponse
オブジェクトのgetRevokedSkus()
を呼び出して取得していました。 - 定期購入型アイテム: 非消費型アイテムと同じです。
AmazonIapV2.getUserData()
- このメソッドは、現在ログインしているユーザーのアプリ固有IDを取得します。
- このメソッドは、
onLoad()
メソッド内で呼び出す必要があります。
AmazonIapV2.notifyFulfillment(receiptId, fulfillmentResult)
- IAP 2.0には、購入のアイテム付与ステータスをトラッキングするための新しいAPIが用意されています。アイテム付与ステータスをトラッキングするには、
notifyFulfillment()
APIを呼び出します。アイテム付与の完了後にこの呼び出しを追加して、購入ステータスをAmazonに送信します。 - アイテム付与が完了しても、FULFILLEDステータスを指定して
notifyFulfillment()
を呼び出さないと、アイテムの配信は保留のままになります。この場合、getPurchaseUpdates()
の次回の呼び出し時に、onPurchaseUpdatesResponse()
コールバックを通じて配信の試行が続行されます。このAPIによるアイテム付与完了の通知がAmazonに届かないと、最終的に注文がキャンセルされることがあります。 - アイテムを付与できない場合は、UNAVAILABLEステータスを使用します。UNAVAILABLEステータスを指定した
notifyFulfillment()
は、アプリからいつでも呼び出すことができます。 - この呼び出しはイミュータブルです。
notifyFulfillment()
によって注文をFULFILLEDまたはUNAVAILABLEに設定したら、ステータスを再び変更することはできません。
- IAP 2.0には、購入のアイテム付与ステータスをトラッキングするための新しいAPIが用意されています。アイテム付与ステータスをトラッキングするには、
レスポンスオブジェクト
Amazon Servicesライブラリを通じて呼び出しを開始すると、registerObserver()
で指定した対応するレスポンスハンドラーにレスポンスが送られます。これらのレスポンスでは、それぞれ1つのレスポンスオブジェクトが使用されます。各レスポンスの詳細は次のとおりです。
GetUserIdResponse
- 現在Amazonクライアントにログインしているユーザーのアプリ固有UserIDを提供します。PurchaseUpdatesResponse
- 開始リクエストで渡されたオフセット以降のレシートと取り消されたSKUを、ページ分割されたリストとして提供します。レシートは、ソートされていない1つのセットとして返されます。ItemDataResponse
- SKUをキーとしてアイテムデータを提供します。PurchaseResponse
- アプリ内で開始された購入のステータスを提供します。購入で発生するエラーは開発者から認識できないため、アプリにエラー処理を実装する必要はありません。エラーはアプリ内課金(IAP)APIによって管理されます。
購入ハンドラー
以下のレスポンスハンドラーを実装し、registerObserverメソッドでAmazon Servicesライブラリに登録する必要があります。
onSdkAvailable(onAvailableResponse)
- IAPサービスがコードから呼び出し可能になったときに呼び出されます。onGetUserIdResponse(userIdResponse)
-GetUserId
へのレスポンスとして呼び出されます。onItemDataResponse(itemDataResponse)
-GetItemData
へのレスポンスとして呼び出されます。data.itemData
は、SKUをキーとしてitemData
オブジェクトを格納するハッシュテーブルです。onPurchaseResponse(purchaseResponse)
- 購入操作のステータスをレポートするために呼び出されます。purchaseResponse.purchaseRequestStatus
にレスポンスのステータスが含まれています。アプリの前回のセッションが購入レスポンスの配信前に終了した場合は、アプリの新しいセッションで購入ハンドラーが登録されたときに、この関数が呼び出されます。onPurchaseUpdateResponse(data)
- ユーザーに付与された非消費型アイテムのリストと共に呼び出されます。data.receipts
には、SKUをキーとするハッシュテーブルが含まれています。ハッシュテーブルの値は、ユーザーに付与されたIAPのレシートです。data.revokedSkus
には、ユーザーが使用できなくなったSKUのリストが含まれています。
APIリファレンス: AmazonInAppPurchasing
メンバー
ItemDataStatus
getItemData()
のレスポンスコード。
- INVALID_INPUT
- SUCCESSFUL
- FAILED
- SUCCESSFUL_WITH_UNAVAILABLE_SKU
ItemType
Amazon IAP APIで実行できる購入のタイプ。
この列挙型に定義されている値は次のとおりです。
- CONSUMABLE
- ENTITLEMENT
- SUBSCRIPTIONS
Offset
購入の更新を取得する開始時点を指定するためのヘルパー値。
プロパティ:
- BEGINNING - デフォルト値はNULL
PurchaseStatus
レシートのステータス。
- INVALID_INPUT
- SUCCESSFUL
- FAILED
- INVALID_SKU
- ALREADY_ENTITLED
PurchaseUpdatesStatus
getPurchaseData()
のレスポンスコード。
- INVALID_INPUT
- SUCCESSFUL
- FAILED
UserIdStatus
getUserId()
のレスポンスコード。
- SUCCESSFUL
- FAILED
メソッド
getItemData(skus)
リストで指定した各SKUのアイテムデータを取得します。
パラメーター:
名前 | 型 | 説明 |
---|---|---|
skus | Array | アイテム情報を取得するSKUのリスト。 |
getPurchaseUpdates(reset)
ユーザーのレシートを取得します。reset
をfalse
に設定すると、前回の呼び出し以降に発行された新しいレシートのみが返されます。reset
をtrue
に設定すると、このユーザーのレシートがすべて返されます。
パラメーター:
名前 | 型 | 説明 |
---|---|---|
reset |
Boolean型。キー/値のペアで渡されます(例:{reset: true} )。 |
false に設定すると、前回の呼び出し以降に発行された新しいレシートのみが返されます。true に設定すると、このユーザーのレシートがすべて返されます。 |
getUserId()
ユーザーIDをリクエストします。結果が得られたら、onGetUserIdResponse
が呼び出されます。
purchaseItem(sku)
指定したSKUの購入を開始します。
パラメーター:
名前 | 型 | 説明 |
---|---|---|
sku | リクエストされたSKU。 |
registerObserver()
Amazon IAP APIからの非同期レスポンスを処理するコールバックハンドラーを登録します。
呼び出される関数のハッシュテーブルを受け取ります。
onSdkAvailable
onGetUserIdResponse
onItemDataResponse
onPurchaseResponse
onPurchaseUpdatesResponse
型定義
onGetUserIdResponse(event)
getUserId
へのレスポンスとして呼び出されます。
イベントオブジェクトの構造は次のとおりです。
requestId
getUserIdRequestStatus
userId
パラメーター:
名前 | 型 | 説明 |
---|---|---|
event | リクエストされたSKU。 |
onItemDataResponse(event)
getItemData
へのレスポンスとして、リクエストされたアイテムデータと共に呼び出されます。
イベントオブジェクトの構造は次のとおりです。
requestId
itemDataRequestStatus
itemData(配列)
sku
price
title
itemType
description
smallIconUrl
onPurchaseResponse(event)
purchaseItem
へのレスポンスとして、レシートと共に呼び出されます。
イベントオブジェクトの構造は次のとおりです。
requestId
userId
purchaseRequestStatus
receipt
sku
itemType
purchaseToken
subscriptionPeriod
(定期購入型ではないレシートの場合はnull)startDate
endDate
onPurchaseUpdatesResponse(event)
getPurchaseUpdates
へのレスポンスとして、レシートと共に呼び出されます。
イベントオブジェクトの構造は次のとおりです。
requestId
purchaseUpdatesRequestStatus
receipts(配列)
sku
itemType
purchaseToken
subscriptionPeriod
(定期購入型ではないレシートの場合はnull)startDate
endDate
revokedSkus
(文字列の配列)offset
isMore
onSdkAvailable()
APIを呼び出す準備が整ったときに呼び出されます。これはregisterObserver
メソッドに対するコールバックです。
Last updated: 2020年12月29日