开发者控制台

使用RVS云沙盒

使用RVS云沙盒

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

环境要求

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

App Tester

RVS云沙盒用于验证App Tester生成的收据。您必须在Android移动设备/平板电脑/Fire TV上安装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,
  "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 Month",
  "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: 2024年11月6日