使用RVS Cloud Sandbox
RVS Cloud Sandbox是一个适用于RVS (收据验证服务) 的沙盒环境,可以用于验证App Tester生成的收据。RVS Cloud Sandbox用于应用的开发阶段,在将应用发布到亚马逊应用商店之前。
环境要求
在使用RVS Cloud Sandbox之前,请确保您的环境符合以下要求。
App Tester
RVS Cloud Sandbox用于验证App Tester生成的收据。您必须在Android移动设备/平板电脑/Fire TV上安装Amazon App Tester工具,才能使用RVS Cloud Sandbox。有关更多详细信息,请参阅App Tester设置。
每次完成应用内购买后,App Tester都会发出收据。您需要将App Tester发出的收据传递到您的应用服务器,然后调用RVS Cloud Sandbox以验证收据。
安全协议
该服务器需要通过HTTPS等安全协议安全地与RVS Cloud Sandbox通信。您的服务器将向RVS Cloud Sandbox发送验证请求并处理响应。
RVS响应对象
RVS Cloud Sandbox请求使用来自PurchaseResponse
对象或PurchaseUpdatesResponse
对象的数据。可以从这些响应对象中提取一个UserId
,它表示用户的唯一标识符。PurchaseResponse
对象包含ReceiptId
,它与UserId
一起用于对购买执行带外服务器端验证。
发送RVS Cloud Sandbox请求
要使用RVS Cloud Sandbox,您必须通过HTTPS将请求发送到RVS Cloud Sandbox终端节点: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 Cloud Sandbox,共享密钥可以是任何非空字符串。RVS Cloud Sandbox服务器不会验证共享密钥,因为只有生产服务器才会验证它。 |
user-id | 代表亚马逊应用商店应用中不同亚马逊客户的ID。从PurchaseResponse.getUserData().getUserId() 获取用户ID。 |
receipt-id | 购买的唯一ID:在PurchaseResponse.getReceipt().getReceiptId() 或PurchaseUpdatesResponse.getReceipts() → Receipt.getReceiptId() 中查找收据ID。 |
RVS Cloud Sandbox示例
以下请求会在RVS Cloud Sandbox中验证收据:
https://appstore-sdk.amazon.com/sandbox/version/1.0/verifyReceiptId/developer/developerSecret/user/l3HL7XppEMhrOGDnur9-ulvqomrSg6qyODKmah76lJU=/receiptId/q1YqVbJSyjH28DGPKChw9c0o8nd3ySststQtzSkrzM8tCk43K6z0d_HOTcwwN8vxCrVV0lEqBmpJzs_VS8xNrMrP0ysuTSo2BAqXKFkZ6SilACUNzQxMzAyNjYyNDQ3MgDKJSlZpiTnFqTpK6UpWJUWlQEYahFELAA
此调用会收到一个来自RVS Cloud Sandbox服务器的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生产设置。
Last updated: 2024年5月22日