适用于网页应用的IAP API - API参考
网页应用IAP 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的异步响应。
预计会收到将要调用的函数的哈希表。
onSdkAvailable
onGetUserIdResponse
onItemDataResponse
onPurchaseResponse
onPurchaseUpdatesResponse
类型定义
onGetUserIdResponse(event)
在响应getUserId
时调用
event对象结构为:
requestId
getUserIdRequestStatus
userId
参数:
名称 | 类型 | 描述 |
---|---|---|
event | 请求的SKU |
onItemDataResponse(event)
在响应getItemData
时使用请求获取的商品数据来调用。
event对象结构为:
requestId
itemDataRequestStatus
itemData (array)
sku
price
title
itemType
description
smallIconUrl
onPurchaseResponse(event)
在响应purchaseItem
时使用收据来调用。
event对象结构为:
requestId
userId
purchaseRequestStatus
receipt
sku
itemType
purchaseToken
subscriptionPeriod
(对于非订阅收据为“null”)startDate
endDate
onPurchaseUpdatesResponse(event)
在响应getPurchaseUpdates
时使用收据来调用。
event对象结构为:
requestId
purchaseUpdatesRequestStatus
receipts (array)
sku
itemType
purchaseToken
subscriptionPeriod
(对于非订阅收据为“null”)startDate
endDate
revokedSkus
(字符串数组)offset
isMore
onSdkAvailable()
在API可供进一步调用时调用。这是registerObserver
方法的回调。
Last updated: 2020年12月29日