适用于消费品和权利的RVS
适用于亚马逊应用商店计费兼容性SDK的收据验证服务 (RVS) 可让您验证您应用的用户进行的购买。有关RVS的概述,请参阅收据验证服务概述。
适用于亚马逊应用商店计费兼容性SDK的RVS有两个REST API,一个用于验证消费品和权利购买,另一个用于验证订阅购买。本页描述了用于消费品和权利购买的REST API的请求和响应。
- purchases.products.get API请求
- purchases.products.get API响应
- 响应代码和错误消息
- 成功交易的响应字段
- purchases.products.get API不支持的字段
- 相关主题
purchases.products.get API请求
使用purchases.products.get API来验证通过亚马逊应用商店计费兼容性SDK进行的消费品或权利购买的收据。成功购买商品后,亚马逊应用商店计费兼容性SDK会返回Purchase
对象。要对购买进行服务器端验证,请从该对象中提取购买令牌并将其连同应用程序包名称、商品ID(您用于创建应用程序内商品的SKU值)和共享密钥一起传递至RVS服务器。出于安全考虑,当您从服务器发出请求时,必须传递共享密钥以确认您的身份。
请求使用以下格式:
https://appstore-sdk.amazon.com/version/{operation-version-number}/get/developer/{shared-secret}/applications/{package-name}/purchases/products/{product-id}/tokens/{token}
花括号包含请求参数的占位符。在您的请求中,将占位符替换为要验证的交易的值。下表列出了请求参数的描述。
请求参数 | 描述 |
---|---|
operation-version-number | purchases.products.get操作的版本号。此版本号独立于亚马逊应用商店计费兼容性SDK版本号。当前purchases.products.get的版本号为“1.0”。 |
shared-secret | 用于标识发出请求的开发者的共享密钥。可在开发者控制台共享密钥页面上找到共享密钥:https://developer.amazon.com/zh/sdk/shared-key.html。 |
package-name | 用于销售应用内产品的应用程序的程序包名称。例如“com.amazon.sample.iap.consumable”。您可以通过调用getApplicationContext().getPackageName() 从您的应用中获取程序包名称,也可以在AndroidManifest.xml文件中找到它。 |
product-id | 您在开发者控制台中为应用创建的应用内产品SKU。例如“iapsamplev2.gold_medal”。对于订阅商品,可使用期限SKU。您可以使用Purchase.getSkus() .get(0) 方法从Purchase 对象提取产品ID。 |
token | 从Purchase 对象的getPurchaseToken() 方法中获得的购买的唯一ID。 |
purchases.products.get API响应
purchases.products.get API提供了一个RESTful JSON API接口。作为最佳实践,使用JSON解析器类(例如OkHttp或Apache HttpClient)从RVS服务器读取JSON响应。
向RVS服务器发出验证交易的请求后,RVS服务器会返回响应代码来指示请求是否成功。如果成功,则返回的JSON响应包括有关交易的信息。
下例展示了一个成功响应:
{
"cancelDate": null,
"cancelReason": null,
"kind": "androidpublisher#productPurchase",
"parentProductId": null,
"productId": "com.amazon.iapsamplev2.expansion_set_1",
"productType": "ENTITLED",
"purchaseState": 0,
"purchaseTimeMillis": "1399070753509",
"purchaseToken": "mINy5VRd1FqjVOz-WBtTqw9FBGWhnuVx07kzTBMR600=:2:11",
"purchaseType": null,
"quantity": 1,
"testTransaction": false
}
响应代码和错误消息
收据验证服务会使用以下代码之一进行响应,这些代码可以指示验证检查的结果。
HTTP响应代码 | 描述 |
---|---|
200 | 此次购买有效。 |
400 | 购买令牌或商品ID无效。 |
401 | 开发者密钥无效或与给定的购买令牌不匹配。 |
404 | 程序包名称无效或与给定的购买令牌不匹配。 |
410 | 此receiptId 表示的交易不再有效。请将其作为已取消的收据。 |
429 | 该请求已被限制节流。请降低您的调用速率并稍后重试。 |
500 | 出现内部服务器错误。 |
成功交易的响应字段
下表描述了成功交易的purchases.products.get响应中包含的字段。有些字段的名称和数据类型与Google的purchases.products.get API相同。这些字段列在与Google的purchases.products.get API相匹配的字段下。其他字段下列出的字段与Google API不同,它们显示了亚马逊应用商店提供的购买详情。
字段 | 数据类型 | 描述 |
---|---|---|
与Google的purchases.products.get API匹配的字段 | ||
kind |
字符串 | 表示androidpublisher 服务中的ProductPurchase 对象。 |
purchaseTimeMillis |
字符串 | 购买商品的时间,以纪元(1970年1月1日)以后的毫秒数计算。 |
purchaseState |
整数 | 订单的购买状态。可能的值:0 - 已购买1 - 已取消 |
purchaseType |
整数 | 应用程序内商品的购买类型。仅当此购买不是使用标准应用内购买流程进行时,才会设置此字段。可能的值:0 - 测试(通过许可证测试账户购买)。 |
purchaseToken |
字符串 | 购买的唯一标识符。 |
productId |
字符串 | 您在应用中为此商品定义的SKU。 |
quantity |
整数 | 购买的数量。始终为null或1。 |
其他字段 | ||
parentProductId |
字符串 | Null。预留以供将来使用。 |
productType |
字符串 | 所购买商品的类型。有效的商品类型为CONSUMABLE 。 |
cancelDate |
长整数 | 取消购买的日期。时间以毫秒为单位。在有效收据中,取消日期包含空值。如果取消日期字段不为null,则会包含亚马逊客户服务取消购买的日期。 |
cancelReason |
整数 | 指示取消产品的原因。可能的值为null 、0 、1 或2 ,其中每个整数分别代表一项取消原因: null - 购买未取消。0 - 当前无法提供取消原因,将在之后提供。1 - 客户取消了订单。2 - 亚马逊系统取消了购买。如果亚马逊客户支持部门应客户要求取消订单,也会返回此代码。 |
testTransaction |
布尔值 | 表明此购买是否作为亚马逊发布和测试过程的一部分进行。 |
purchases.products.get API不支持的字段
亚马逊应用商店计费兼容性RVS API在响应中不支持Google Play开发者API提供的以下字段。
consumptionState
regionCode
orderId
developerPayload
acknowledgementState
obfuscatedExternalAccountId
obfuscatedExternalProfileId
相关主题
本页面的部分内容基于Google创建和共享的作品进行了修改,并且在使用相应内容时依照知识共享署名4.0许可中所述的条款。资料来源:https://developers.google.com/android-publisher/api-ref/rest/v3/purchases.products/get, https://developers.google.com/android-publisher/api-ref/rest/v3/purchases.products.
Last updated: 2024年10月14日