as

Settings
Sign out
Notifications
Alexa
亚马逊应用商店
Ring
AWS
文档
Support
Contact Us
My Cases
新手入门
设计和开发
应用发布
参考
支持
跳转到主要内容
如需查看快速订阅的概述,请参阅Vega快速订阅概述。当您准备好开始操作时,请联系您的亚马逊代表,让他们在您的账户上启用“快速订阅”。然后,按照本页面上的步骤进行操作。

先决条件

快速订阅是亚马逊应用商店应用内购买 (IAP) API中包含的一项功能。 在设置快速订阅之前,必须完成以下操作:
  • 集成亚马逊应用商店IAP库版本2.12.2 @amazon-devices/keplerscript-appstore-iap-lib": "~2.12.2"或更高版本。
  • 拥有有效的应用内商品。

注意事项

在开始之前,请查看以下注意事项和建议:
  • 优化应用的大小,以缩短下载和安装时间。 通常建议将应用的大小最小化到50MB或更小。减小应用大小可让更多用户安装应用,从而提升可用性,并减少安装和初始使用所需的时间。此外,由于存储空间限制,较小的应用被卸载的可能性也更低。
  • 通过快速订阅提供的优惠最适合付费订阅。 快速订阅支持提供免费试用的应用。但是,如果应用使用“免费增值”模式进行获取,则快速订阅可能不是最适合应用的方式。在免费增值模式中,应用本身免费,用户无需付费订阅即可访问一组基本的内容和服务,但是要访问更多内容或高级功能,就需要支付额外费用。
  • 通过快速订阅进行的购买发生在您的应用之外。 在没有采用快速订阅的标准IAP流程中,客户会登录您的应用,然后在应用内进行购买。但是,采用快速订阅后,客户首先在应用之外进行购买,然后应用会自动打开并让客户登录。 因此,快速订阅的实现与标准IAP的实现有所不同。如果在集成快速订阅方面需要帮助,请按照本页面上的步骤操作。

步骤1:在开发者控制台中配置快速订阅

为应用配置快速订阅
  1. 前往开发者控制台主信息页面并登录您的账户。
  2. 在导航栏中选择我的应用。
  3. 在列表中找到您的应用并展开该行。
  4. 在应用内商品列中,单击链接打开“应用内商品”屏幕。
  5. 选择创建快速订阅。
  6. 随即出现一个叠加弹出窗口,如下图所示。
    创建新的快速订阅。选择默认订阅。选择期限。选择目标设备。可用的操作按钮有“取消”、“为测试创建快速订阅”和“为测试和上线创建快速订阅”。

    “创建新的快速订阅”对话框

    选择默认订阅下拉列表中列出了现有IAP订阅。选择要启用快速订阅的订阅。
  7. 在选择期限下拉列表中,选择快速订阅的期限。
  8. 如果要为快速订阅提供其他订阅,请选择添加其他快速订阅。
  9. 勾选相应的复选框,选择快速订阅的目标设备。
    • 对于Fire TV设备,您可以选择专门以Fire OS设备和/或Vega OS设备为目标:
      • 要仅以Fire OS设备为目标,请仅选中Fire TV (Fire OS)。
      • 要仅以Vega OS设备为目标,请仅选中Fire TV (Vega)。
      • 要同时以Fire OS和Vega OS设备为目标,请同时选中Fire TV (Fire OS) 和Fire TV (Vega)。
  10. 选择是仅为动态应用测试 (LAT) 创建快速订阅,还是同时为LAT和上线应用创建快速订阅。
    • 要仅为LAT创建快速订阅,请选择为测试创建快速订阅。
    • 要为LAT和上线应用创建快速订阅,请选择为测试和上线创建快速订阅。
创建了快速订阅后,可以选择快速订阅商品对应的操作,删除或修改创建的快速订阅。

步骤2:配置安全配置文件

为了让快速订阅正常运行,必须为应用设置安全配置文件。安全配置文件必不可少,因为它让亚马逊能够安全地与您共享客户数据,还能让您自动创建账户并登录用户。 安全配置文件将亚马逊数据(包括安全凭证)与一个或多个应用相关联。例如,如果您有两个应用(如“我的游戏 - 免费”和“我的游戏 - 高清”),那么这两个应用可以通过使用相同的安全配置文件来共享数据。命名安全配置文件时,请采用有助于识别您的应用或应用系列的方式。有关更多详细信息,请参阅安全配置文件。 为应用配置安全配置文件
  1. 前往开发者控制台主信息页面并登录您的账户。
  2. 在导航栏中选择我的应用,然后选择您的应用。
  3. 选择应用服务,然后滚动到安全配置文件部分。
  4. 单击选择现有安全配置文件或新建以展开相关选项。
  5. 通过下拉列表选择要映射到该应用的安全配置文件,然后单击启用安全配置文件。或者,也可通过单击创建安全配置文件来创建新的安全配置文件。

步骤3:实现getPurchaseUpdates

getPurchaseUpdates() 方法会检索客户的收据。当客户通过快速订阅进行购买时,购买发生在应用之外。因此,快速订阅要求您的应用调用getPurchaseUpdates() 来验证客户的购买状态。此项调用可确保客户在应用打开后收到所购买的内容。如果您未能正确实现getPurchaseUpdates(),可能会导致客户无法访问所购买的内容。

实现要求

按照这些要求来正确实现getPurchaseUpdates() 方法。

步骤4:集成RVS

使用收据验证服务 (RVS),可以验证您应用的用户进行的购买。有关RVS的详细信息,请参阅适用于IAP应用的RVS。向RVS服务器发出请求后,返回的JSON响应包含一个purchaseMetadataMap字段。如果使用快速订阅发起了购买,则purchaseMetadataMap会显示为{"QuickSubscribe":"true"},如下例所示。
如果没有使用快速订阅发起购买,则purchaseMetadataMap会显示为null。下表提供了响应对象中所有字段的说明。
字段数据类型描述
autoRenewing布尔值表示客户的订阅是否会自动续订。
betaProduct布尔值指示所购买的产品是否是动态应用测试产品。
cancelDate长整数取消购买的日期,或订阅到期的日期。如果购买未取消,则此字段为null。时间以毫秒为单位。
cancelReason整数指示取消产品的原因。可能的值为null、0、1或2,其中每个整数分别代表一项取消原因:null - 购买未取消。0 - 当前无法提供取消原因,将在之后提供。1 - 客户取消了订单。2 - 亚马逊系统取消了购买。例如,客户用于购买订阅的付款无效,并且无法在宽限期内完成购买。如果亚马逊客户支持部门应客户要求取消订单,也会返回此代码。
deferredDate长整数对于分级订阅,当修改订阅并延迟按比例分配模式时,表示订阅计划的更改日期。计划更改生效后将为null。
deferredSku字符串对于分级订阅,当修改订阅并延迟按比例分配模式时,表示即将使用的计划的SKU。计划更改生效后将为null。
freeTrialEndDate长整数表示订阅处于免费试用期内。提供订阅免费试用的结束日期,以epoch(毫秒)为单位。如果订阅不在免费试用期内,则此字段为null。
fulfillmentDate长整数在订阅购买中,为确认履行的日期。以纪元以后的毫秒数存储。如果未确认订阅履行,则为null。消费品和权利始终为null。
fulfillmentResult字符串在订阅购买中,履行的状态。有效值:
  • FULFILLED: 您提供了内容,并且客户使用了内容。
如果未确认订阅履行,则为null。消费品和权利始终为null。
gracePeriodEndDate长整数表示订阅处于宽限期内。提供订阅宽限期的结束日期,以epoch(毫秒)为单位。如果订阅不在宽限期内,则此字段为null。
parentProductId字符串Null。预留以供将来使用。
productId字符串您在应用中为此商品定义的SKU。
productType字符串所购买产品的类型。有效产品类型为CONSUMABLE、SUBSCRIPTION和ENTITLED。
promotionsList<Promotion>订阅购买的促销定价或留存优惠的详细信息。如果没有促销,则为Null。
purchaseDate长整数购买日期,以纪元以后的毫秒数存储。对于订阅商品,purchaseDate代表首次购买日期,而不是后续续订的购买日期。
purchaseMetadataMapMap<String, String>如果购买是通过快速订阅发起的,则值为 {"QuickSubscribe":"true"}。否则为null。
quantity整数购买的数量。始终为null或1。
receiptId字符串购买的全局唯一标识符。
renewalDate长整数需要续订订阅购买的日期。日期以纪元以后的毫秒数存储。
term字符串订阅IAP将保持有效的持续时间(期限从购买之日开始)。期限由数字和时间段(天、周、月、年)构成,如1周或2个月。
termSku字符串对应于订阅期的唯一SKU。
testTransaction布尔值表明此购买是否作为亚马逊发布和测试过程的一部分进行。

步骤5:将履行结果发送给亚马逊

通过发送履行结果,您确保亚马逊可以确认用户是否可以访问其付费购买的内容。务必将履行结果传达给亚马逊。为此,请使用PurchasingService中包含的notifyFulfillment() 方法。如果您不发送履行结果,亚马逊会自动取消订阅,以确保客户不会继续为未履行的订阅付费。 客户登录后,在履行订阅后调用状态为FULFILLED的notifyFulfillment()。如果客户已经拥有并非通过亚马逊购买的订阅,则使用状态UNAVAILABLE调用notifyFulfillment(),表明客户已登录但购买不适用。 如果之前已集成确认收据API,则可以继续使用它来代替notifyFulfillment() 方法。您必须在应用中使用notifyFulfillment() 方法或确认收据API将履行结果传达给亚马逊。

实现要求

按照这些要求来正确实现notifyFulfillment() 方法。
  • 要将履行状态传达给亚马逊,每次处理收据时,都必须调用notifyFulfillment()。
  • 调用notifyFulfillment() 时:
    • 满足以下条件时发送FULFILLED:
      • 您成功将客户映射到收据并为该客户解锁订阅内容。
    • 出现以下任一情况时发送UNAVAILABLE:
      • 您确定客户的现有订阅不是通过亚马逊购买的。
      • 客户没有资格针对您的服务注册账户。

自动取消

亚马逊使用自动取消来确保客户不会继续为未履行的订阅付款。如果您未在购买后的14天内使用notifyFulfillment() 或确认收据API将购买收据更新为FULFILLED状态,则亚马逊应用商店会自动取消订阅并退款。但是,如果您在购买后的14天内将购买收据更新为UNAVAILABLE状态,亚马逊应用商店会立即取消订阅并退款。

确认收据API

确认收据API使用acknowledgeReceipt操作,可以通知亚马逊订阅购买已履行,这样客户就不会失去访问权限。acknowledgeReceipt操作是一个REST API,很像RVS中使用的verifyReceiptId操作,但您必须使用PUT请求,而非GET请求。
acknowledgeReceipt操作的版本号为1.0。有关查询参数的更多详细信息,请查阅下表。

查询参数

确认收据API响应使用以下查询参数。
查询参数描述必需
developer用于标识发出请求的开发者的共享密钥。您可以在亚马逊应用商店开发者账户的共享密钥页面上找到您的共享密钥。是
user代表亚马逊应用商店应用中不同亚马逊客户的ID: PurchaseResponse.getUserData().getUserId()。是
receiptId购买的唯一ID: PurchaseResponse.getReceipt().getReceiptId() 或PurchaseUpdatesResponse.getReceipts() → Receipt.getReceiptId()。是
fulfillmentResult订单履行状态。有效值:
  • FULFILLED: 您提供了内容,并且客户使用了内容。
  • UNAVAILABLE: 您无法向客户提供内容。若发送此值,会立即取消订单并退款。
是

响应代码

提出HTTP请求后,确认收据API会使用以下代码之一进行响应。
响应代码描述
HTTP 200成功:收据ID、用户ID和共享密钥都是有效的。订阅被标记为已履行。
HTTP 400此receiptId表示的交易无效,或没有找到此receiptId的交易。
HTTP 410此receiptId表示的交易不再有效。请将其作为已取消的收据。
HTTP 429该请求已被限制节流。请降低您的调用速率并稍后重试。
HTTP 496共享密钥无效
HTTP 497用户ID无效
HTTP 500出现内部服务器错误。

确认收据常见问题解答

以下是关于确认收据API的常见问题解答 (FAQ)。
应在购买之后调用确认收据API。
多次调用状态为FULFILLED的确认收据API是一种幂等操作,每次都会得到相同的响应。
不可以,acknowledgeReceipt的状态可以从UNAVAILABLE转换为FULFILLED,但不能从FULFILLED转换为UNAVAILABLE。如果发现收据有错误,请联系我们寻求帮助。

步骤6:集成RTN

借助快速订阅,客户可以通过亚马逊订阅您的应用,不过购买发生在应用之外。这可能会导致您的应用缺少部分关于客户购买状态的信息。getPurchaseUpdates() 方法仅在应用打开时发送数据。 实时通知 (RTN) 可为所有交易提供客户购买信息,包括发生在您应用以外的交易。您的服务器收到来自亚马逊RTN服务器的购买通知后,请使用收据验证服务 (RVS) 验证收据。 借助RTN,亚马逊可以向您发送客户订阅事件最新信息(例如当客户购买、续订或取消订阅时)。这些信息可以确保应用始终拥有最新的用户订阅相关信息,因此对于采用快速订阅的应用非常重要。 有关如何设置RTN的详细信息,请参阅使用实时通知。

步骤7:集成一键账户信息共享功能

要在您的应用中集成一键账户信息共享功能,请遵循集成一键账户信息共享功能指南。 下图展示了采用一键账户信息共享功能的快速订阅代码流程。
  1. 应用打开。
  2. 调用PurchasingService.getUserData()。
  3. 通过调用UserData.userProfileAccessConsentStatus,从UserData响应对象获取UserProfileAccessConsentStatus。
  4. 如果用户同意,则转到步骤5,否则转到步骤11。
  5. 调用PurchasingService.requestUserProfileAccess()。
  6. 如果调用成功且响应中有userProfileAccessAuthCode,则转到步骤7,否则转到步骤11。
  7. 使用授权码更新您的服务器。
  8. 要获取访问令牌,请调用亚马逊应用商店IAP获取访问令牌API。
  9. 如果调用成功,则使用访问令牌调用亚马逊应用商店IAP获取用户配置文件API,然后转到步骤10。如果调用失败,则转到步骤11。
  10. 使用电子邮件创建账户。结束流程
  11. 显示应用的默认账户注册或登录体验。
  12. 使用用户名和密码通过本地账户进行授权。结束流程
设置一键账户信息共享功能的大致步骤如下所示。
  1. 实现getUserData()。
  2. 确定客户的同意状态。
    • 如果客户不同意,请使用您的标准账户创建流程。
    • 如果客户同意,请继续执行下一步。
  3. 要获取访问令牌,请使用亚马逊应用商店IAP获取访问令牌REST API。
  4. 要获取客户的配置文件数据,请使用亚马逊应用商店IAP获取用户配置文件REST API。
    • 获取客户电子邮件地址。
    • 使用客户电子邮件地址为您的服务创建一个账户。

步骤8:使用LAT测试快速订阅

借助亚马逊的动态应用测试 (LAT) 服务,您可以在上线前将要在亚马逊应用商店发布的应用分发给一组预设定的测试者进行测试。测试者可以针对亚马逊的生产环境对全套亚马逊服务进行采样,这样就可以确保您的应用按预期工作。

为快速订阅设置LAT

要使用动态应用测试 (LAT) 测试快速订阅,请先使用在开发者控制台中配置快速订阅中的步骤,在开发者控制台中为LAT配置快速订阅。您可以仅为LAT配置快速订阅,也可以为上线应用和LAT应用配置快速订阅,如下图所示。 仅针对LAT时,选择“为测试创建快速订阅”。同时针对LAT和上线应用时,选择“为测试和上线创建快速订阅”。 如果您选择仅为LAT配置快速订阅,则稍后可以通过选择操作>升级为上线版本,将配置升级到上线应用,如下图所示。 带有 “编辑”、“关闭”和“升级为上线版本”选项的操作菜单 如果您对LAT应用进行的快速订阅配置与对上线应用进行的配置不同,则LAT应用的快速订阅详细信息中会显示测试标签,如下图所示。 “测试”标签显示在应用内商品的顶部 您可以通过亚马逊零售网站或Fire设备测试快速订阅流程。当您开始动态应用测试时,可以向测试者发送邀请。测试者会收到一封电子邮件,其中会附上提供LAT版本应用的亚马逊网站链接。

在网站上测试快速订阅

在LAT邀请电子邮件中,选择您所在市场的亚马逊网站。在应用详情页面上,选择订阅选项,该选项显示为订阅期限的付费选项,例如每月20.00美元。然后选择要交付至哪个设备,接着单击Get App(获取应用)。

在设备上测试快速订阅

要开始在设备上测试快速订阅,您可以使用LAT邀请电子邮件或设备通知。 通过LAT邀请进行测试
  1. 使用邀请电子邮件中的链接转到亚马逊网站上的应用详情页面。
  2. 选择App Only(仅限应用)选项。
  3. 如果您的账户关联了多台设备:
    1. 单击Deliver to <设备名称>(交付至<设备名称>)中的设备名称。
    2. 在Deliver to(交付至)对话框中,选择要将应用交付到哪个设备。
  4. 单击Get App。
  5. 在与亚马逊账户关联的Fire TV设备上,单击Your Apps & Channels(您的应用和频道)的图标(该图标在导航栏上显示为三个正方形和一个加号)。
  6. 找到您应用的LAT版本,该应用的图标上有一个TEST(测试)横幅。您可能需要单击App Library(应用库)才能查看该应用。
  7. 选择应用图标以打开设备上的应用详情页面。
  8. 选择Subscription Options(订阅选项)并下载应用。
通过通知进行测试 发送LAT邀请后,与测试者电子邮件相关联的测试设备会收到通知。如果您在通知出现时打开通知,则会进入LAT应用详情页面。此通知会显示5-10秒。如果您在通知首次出现时错过了通知,可以单击设置图标(齿轮图标)并选择Notifications(通知)来查看它。然后您可以阅读通知并转到应用详情页面。选择Subscription Options(订阅选项)并下载应用。

相关主题


最后修改于 2026年10月26日