使用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日