as

Settings
Sign out
Notifications
Alexa
亚马逊应用商店
AWS
文档
Support
Contact Us
My Cases
开发
测试
应用发布
盈利
用户参与
设备规格
资源

使用RVS云沙盒

使用RVS云沙盒

RVS云沙盒是一个适用于RVS(收据验证服务)的沙盒环境,可以用于验证App Tester生成的收据。RVS云沙盒用于应用的开发阶段,在将应用发布到亚马逊应用商店之前。

环境要求

在使用RVS云沙盒之前,请确保您的环境符合以下要求。

App Tester

RVS云沙盒用于验证App Tester生成的收据。您必须在Fire设备上安装Amazon App Tester工具,然后才能使用RVS云沙盒。有关更多详细信息,请参阅App Tester设置

每次完成应用内购买后,App Tester都会发出收据。您需要将App Tester发出的收据传递到您的应用服务器,然后调用RVS云沙盒以验证收据。

安全协议

该服务器需要通过HTTPS等安全协议安全地与RVS云沙盒通信。您的服务器将向RVS云沙盒发送验证请求并处理响应。

RVS响应对象

RVS云沙盒请求使用来自PurchaseResponse对象或PurchaseUpdatesResponse对象的数据。可以从这些响应对象中提取一个UserId,它表示用户的唯一标识符。PurchaseResponse对象包含ReceiptId,它与UserId一起用于对购买执行带外服务器端验证。

发送RVS云沙盒请求

要使用RVS云沙盒,您必须通过HTTPS将请求发送到RVS云沙盒终端节点:https://appstore-sdk.amazon.com/sandbox

请在请求中使用以下格式,用下表中的值替换尖括号中的术语:

https://appstore-sdk.amazon.com/sandbox/version/{operation-version-number}/verifyReceiptId/developer/{shared-secret}/user/{user-id}/receiptId/{receipt-id}
参数 描述
operation-version-number verifyReceiptId操作版本号。此版本号独立于IAP版本号。当前verifyReceiptId版本号为“1.0”。
shared-secret 用于标识发出请求的开发者的共享密钥。可在开发者控制台共享密钥页面上找到共享密钥:https://developer.amazon.com/zh/sdk/shared-key.html。对于RVS云沙盒,共享密钥可以是任何非空字符串。RVS云沙盒服务器不会验证共享密钥,因为只有生产服务器才会验证它。
user-id 代表亚马逊应用商店应用中不同亚马逊客户的ID。从PurchaseResponse.getUserData().getUserId()获取用户ID。
receipt-id 购买的唯一ID:在PurchaseResponse.getReceipt().getReceiptId()PurchaseUpdatesResponse.getReceipts()Receipt.getReceiptId()中查找收据ID。

RVS云沙盒示例

以下请求会在RVS云沙盒中验证收据:

https://appstore-sdk.amazon.com/sandbox/version/1.0/verifyReceiptId/developer/developerSecret/user/l3HL7XppEMhrOGDnur9-ulvqomrSg6qyODKmah76lJU=/receiptId/q1YqVbJSyjH28DGPKChw9c0o8nd3ySststQtzSkrzM8tCk43K6z0d_HOTcwwN8vxCrVV0lEqBmpJzs_VS8xNrMrP0ysuTSo2BAqXKFkZ6SilACUNzQxMzAyNjYyNDQ3MgDKJSlZpiTnFqTpK6UpWJUWlQEYahFELAA

此调用会收到一个来自RVS云沙盒服务器的JSON响应:

{
  "autoRenewing": false,
  "betaProduct": false,
  "cancelDate": null,
  "cancelReason": null,
  "countryCode": "US",
  "deferredDate": null,
  "deferredSku": null,
  "freeTrialEndDate": 1606985788979,
  "gracePeriodEndDate": 1606985788979,
  "parentProductId": null,
  "productId": "com.amazon.subs1",
  "productType": "SUBSCRIPTION",
  "promotions": null,
  "purchaseDate": 1604613233106,
  "quantity": 1,
  "receiptId": "q1YqVbJSyjH28DGPKChw9c0o8nd3ySststQtzSkrzM8tCk43K6z0d_HOTcwwN8vxCrVV0lEqBmpJzs_VS8xNrMrP0ysuTSo2BAqXKFkZ6SilACUNzQxMzAyNjYyNDQ3MgDKJSlZpiTnFqTpK6UpWJUWlQEYahFELAA",
  "renewalDate": 1606985788979,
  "term": "1个月",
  "termSku": "com.amazon.subs1_term",
  "testTransaction": true
}

有关响应中字段的说明,请参阅RVS响应字段。有关如何设置应用服务器的示例,请参阅适用于Appstore SDK IAP的RVS生产设置

在RVS云沙盒中测试收据

亚马逊应用商店分开管理RVS的生产流程和沙盒环境流程。在沙盒流程中,App Tester会生成收据,使其成为测试收据。RVS云沙盒可让您验证App Tester生成的收据,但不支持所有生产场景。使用RVS云沙盒验证测试收据时,它会将后缀_term附加到termSku属性。在生产RVS中,不会将_term后缀添加到termSku属性。

在设置App Tester时推送到设备的JSON文件中,所有订阅条目的SKU都与订阅父项不同。当您通过App Tester购买任何SKU时,RVS云沙盒响应会生成termSku属性的值,如下所示:

  • 如果订阅基本SKU可用,则生成:<subscriptionBase>_term
  • 如果订阅基本SKU不可用,则生成:<subscriptionParent>_term

有关App Tester中订阅的JSON文件的更多详细信息,请参阅文件格式和示例: IAP订阅商品

可参考下面示例。JSON文件中的期限SKU是COMMERCE_AMAZONIAP_MOONBUG_001。没有订阅基本SKU,订阅父SKU为Moonbug_TEST。RVS云沙盒在响应的termSku属性中返回值为Moonbug_TEST_term


Last updated: 2025年8月20日