as

Settings
Sign out
Notifications
Alexa
亚马逊应用商店
Ring
AWS
文档
Support
Contact Us
My Cases
新手入门
设计和开发
应用发布
参考
支持
跳转到主要内容
使用收据验证服务 (RVS),可以验证应用用户进行的购买。在预览版中,您可以在沙盒模式下使用RVS。本页将向您介绍RVS并展示RVS请求和响应的语法。

RVS概述

下图显示了带有收据验证的购买工作流程。RVS在IAP API完成购买并将购买收据返回给应用后启动。 下表中的步骤与上图中的标注匹配: 只要是通过亚马逊购买,您还可以使用RVS访问在其他平台(如您的网站)上购买的订阅。以下情景描述了此工作流程:
  1. 应用用户从您的公司网站上通过亚马逊购买订阅。
  2. 应用收到所购买订阅的收据
  3. 为允许访问,应用会向您的服务器发送收据中的信息。最后,服务器通过查询RVS来验证此交易。

RVS请求语法

使用RVS来验证PurchaseResponse对象或PurchaseUpdatesResponse对象。可以从这些响应对象中提取一个UserId,它表示用户的唯一标识符。PurchaseResponse对象包含ReceiptId,它与UserId联合用于对购买执行带外服务器端验证。出于安全原因,来自您的服务器的请求需要传递共享密钥以确认您的身份。 这些请求使用以下格式:
尖括号中的术语是请求参数,请将它们替换为待验证交易的以下值:
  • Protocol:用于与服务器或沙盒通信的协议,如https:。
  • Server:​ 您要与之通信的RVS服务器URL。
  • sandbox:使用值“sandbox”。
  • Operation_version_number:​ verifyReceiptId操作版本号。此版本号独立于IAP版本号。当前verifyReceiptId版本号为“1.0”。
  • Shared_secret:​ 用于标识发出请求的开发者的共享密钥。可在亚马逊应用商店中您的开发者账户“Shared Key”(共享密钥)页面上找到共享密钥:https://developer.amazon.com/sdk/shared-key.html。对于RVSSandbox,共享密钥可以是任何非空字符串。
  • UserId:​ 代表亚马逊应用商店应用中不同亚马逊客户的ID:PurchaseResponse.getUserData().getUserId()。
  • ReceiptId:​ 购买的唯一ID:PurchaseResponse.getReceipt().getReceiptId()或PurchaseUpdatesResponse.getReceipts() → Receipt.getReceiptId()。

RVS响应语法

RVS提供了RESTful JSON API接口。作为最佳实践,使用JSON解析器类从RVS服务器读取JSON响应。 发出验证交易的请求后,RVS服务器或沙盒会返回响应代码来指示请求是否成功。如果成功,则返回的JSON响应包括有关交易的信息。 下例展示了一个成功响应:

RVS响应代码

收据验证服务会使用以下代码之一进行响应,这些代码可以指示验证检查的结果:

成功交易的RVS响应字段

下表列出并描述了成功交易的RVS响应中包含的字段。

取消日期和续订日期

renewalDate字段包含自动续订订阅购买下一次需要续订的日期。此字段仅适用于订阅购买。如果客户按月订阅,则订阅会每月在与客户首次订阅相同的日期续订。如果下个月不包括该确切日期,则预订日期为距其最近的前一个日期。例如:
  • 如果客户在1月2日订阅,则接下来的三个续订日期为2月2日、3月2日和4月2日。
  • 如果客户在1月31日订阅,接下来的三个续订日期为2月28日(如果是闰年,则为2月29日)、3月31日和4月30日。
cancelDate字段包含订阅购买到期的日期或亚马逊客户服务取消购买的日期。取消日期表示客户失去相应内容访问权限的日期。如果客户通过关闭自动续订来取消其订阅,则取消日期是之前原定的续订日期。 renewalDate和cancelDate字段以毫秒为单位存储。可以使用java.util.Date(timeInMillis) 将值转换为日期对象。 消费品或权利购买 在有效的收据中,取消日期和续订日期都包含null值。如果取消日期字段不为null,则会包含亚马逊客户服务取消购买的日期。 订阅购买 在有效的订阅收据中,取消日期为null。如果cancelDate字段不为null,则会包含订阅到期的日期或亚马逊客户服务取消购买的日期。 renewalDate字段包含自动续订订阅购买下一次需要续订的日期。如果订阅未设置为自动续订,则字段值为null。 在以下示例中,用户拥有已取消的订阅:
  • 订阅的有效期为从2016年1月1日到2016年3月1日。在此收据中,此订阅的purchaseDate设置为2016/01/01,cancelDate设置为2016/03/01。
  • 如果此订阅后来于2016年4月1日重新激活,则订阅会具有第二个收据。第二个收据会显示purchaseDate为2016年4月1日,cancelDate为null。

RVS云沙盒

要在沙盒模式下设置RVS,请参阅使用RVS云沙盒。
最后修改于 2026年10月26日