适用于 Web 应用的 IAP API - API 参考


适用于 Web 应用的 IAP API - API 参考

Amazon Services 库

Amazon Services 库包含以下方法:

  • AmazonIapV2.addListener(listener)
    • 在使用此类之前,您必须注册观察器
    • 需要在 onLoad() 生命周期方法中调用此方法
  • AmazonIapV2.purchase(sku)
    • 此方法用于发起特定 SKU 的购买
    • 此方法适用于所有类型的可购买项目
    • 显示的用户界面使用为 SKU 配置的信息来确定提供给客户的购买流程
    • 可随时从您的应用调用此方法
  • AmazonIapV2.getProductData(skus)
    • 此方法用于检索有关一组 SKU 的项目数据
    • 此方法适用于所有类型的可购买项目
    • 可随时从您的应用调用此方法
    • 参数 SKU 是 SKU 字符串数组
  • AmazonIapV2.getPurchaseUpdates(options)
    • 此方法用于跨设备同步以前的购买和撤销的权利。
    • 在活动的 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,则无法再次更改状态

响应对象

您通过 Amazon Services 发出的每个调用都会使 registerObserver() 中指定的相应响应处理程序收到响应。其中每个响应都使用一个响应对象。下面将详细介绍这些响应:

  • GetUserIdResponse - 提供当前登录到亚马逊客户端的用户的特定于应用的 UserID
  • PurchaseUpdatesResponse - 提供自将偏移传递到发起请求后的收据和已撤销的 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)

获取用户的收据。对于 options,将 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 (array of strings)
  • offset
  • isMore

onSdkAvailable()

在 API 可供进一步调用时调用。这是 registerObserver 方法的回调。