适用于网页应用的IAP API - API参考
Amazon Services库
Amazon Services库包含以下方法:
AmazonIapV2.addListener(listener)- 在使用此类之前,必须注册观察器
 - 需要在
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)元素或对象。 - 使用
boolean reset参数而非offset参数。将reset设置为true可返回所有购买收据,将reset设置为false可返回自上次getPurchaseUpdates()调用之后新生成的购买收据。 
 - 请在应用中添加逻辑来处理从
 - 权利:对于权利和订阅,
onPurchaseUpdatesResponse()可返回已取消和仍有效的购买的收据。可使用receipt.isCanceled()检查购买是否已取消。在IAP 1.0中,对purchaseUpdatesResponse对象调用getRevokedSkus(),可返回已取消权利和订阅的收据。 - 订阅: 与权利相同。
 
AmazonIapV2.getUserData()- 此方法用于检索当前登录用户的应用特定ID
 - 需要在
onLoad()方法中调用此方法 
AmazonIapV2.notifyFulfillment(receiptId, fulfillmentResult)- IAP 2.0提供了新的API,可用于跟踪购买的履行状态。要跟踪购买的履行状态,请实现
notifyFulfillment()API。在履行商品后,实现此调用,以将购买状态发送给亚马逊。 - 在履行商品后,如果没有使用“FULFILLED”状态调用
notifyFulfillment(),则交付将保持待定状态。在这种情况下,将在下次调用getPurchaseUpdates()时通过onPurchaseUpdatesResponse()回调继续尝试进行交付。最终,如果亚马逊未收到使用此API对履行的明确确认,则可能会取消订单。 - 如果无法履行商品,请使用“UNAVAILABLE”状态。随时可以从您的应用中使用“UNAVAILABLE”状态调用
notifyFulfillment()。 - 此调用是不可变的。如果通过
notifyFulfillment()将订单标记为“FULFILLED”或“UNAVAILABLE”,则无法再次更改状态。 
- IAP 2.0提供了新的API,可用于跟踪购买的履行状态。要跟踪购买的履行状态,请实现
 
响应对象
每次通过Amazon Services发起调用,registerObserver()中指定的相应响应处理程序会收到响应。每次响应都会使用响应对象。下面详细介绍这些响应:
GetUserIdResponse- 为当前登录到亚马逊客户端的用户提供应用特定的UserIDPurchaseUpdatesResponse- 提供自偏移传递到发起请求之后产生的收据和已撤销SKU的分页列表。收据会以无序形式成组返回。ItemDataResponse- 提供以SKU为键的商品数据。PurchaseResponse- 提供应用内发起的购买的状态。对开发者而言,任何与购买有关的错误都是不可见的,您无需在应用中对错误进行任何处理;这归应用内购买API管理。
购买处理程序
您必须实现以下响应处理程序并在registerObserver方法中向Amazon Services库注册它们:
onSdkAvailable(onAvailableResponse)- 在应用内购买服务可供您的代码调用时,会调用此响应处理程序。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
可通过亚马逊应用内购买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 | 数组 | 检索其商品信息的SKU列表 | 
getPurchaseUpdates(reset)
获取用户的收据。将reset设置为false可仅返回自上次调用此方法之后产生的新收据。将reset设置为true可返回此用户的所有收据。
参数:
| 名称 | 类型 | 描述 | 
|---|---|---|
reset | 
         布尔值。传入键/值对,例如{reset: true} | 
         设置为false可仅返回自上次调用此方法之后生成的新收据。设置为true可返回此用户的所有收据。 | 
      
getUserId()
请求获取用户ID。当结果可用时,这将触发对onGetUserIdResponse的调用。
purchaseItem(sku)
发起对给定SKU的购买
参数:
| 名称 | 类型 | 描述 | 
|---|---|---|
| sku | 请求的SKU | 
registerObserver()
注册回调处理程序来处理来自亚马逊应用内购买API的异步响应。
预计会收到将要调用的函数的哈希表。
onSdkAvailableonGetUserIdResponseonItemDataResponseonPurchaseResponseonPurchaseUpdatesResponse
类型定义
onGetUserIdResponse(event)
在响应getUserId时调用
event对象结构为:
requestIdgetUserIdRequestStatususerId
参数:
| 名称 | 类型 | 描述 | 
|---|---|---|
| event | 请求的SKU | 
onItemDataResponse(event)
在响应getItemData时使用请求获取的商品数据来调用。
event对象结构为:
requestIditemDataRequestStatusitemData (array)skupricetitleitemTypedescriptionsmallIconUrl
onPurchaseResponse(event)
在响应purchaseItem时使用收据来调用。
event对象结构为:
requestIduserIdpurchaseRequestStatusreceiptskuitemTypepurchaseTokensubscriptionPeriod(对于非订阅收据为“null”)startDateendDate
onPurchaseUpdatesResponse(event)
在响应getPurchaseUpdates时使用收据来调用。
event对象结构为:
requestIdpurchaseUpdatesRequestStatusreceipts (array)skuitemTypepurchaseTokensubscriptionPeriod(对于非订阅收据为“null”)startDateendDate
revokedSkus(字符串数组)offsetisMore
onSdkAvailable()
在API可供进一步调用时调用。这是registerObserver方法的回调。
Last updated: 2020年12月29日

