开发者控制台

适用于网页应用的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”,则无法再次更改状态。

响应对象

每次通过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)

获取用户的收据。将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日