我正在使用谷歌钱包作为我的支付网关,在购买产品后谷歌给了我以下回复
{
"orderId":"12999763169054705758.1371079406387615",
"packageName":"com.example.app",
"productId":"exampleSku",
"purchaseTime":1345678900000,
"purchaseState":0,
"developerPayload":"bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ",
"purchaseToken":"rojeslcdyyiapnqcynkjyyjh"
}
我正在尝试使用 google play 新引入的 Receipt Validation 。在 Google Developer 控制台中,我在权限中通过服务帐户制作了 证书密钥。但我很困惑如何在从 Google Play 商店购买产品后使用收据验证。
那么任何人都可以帮助我如何进行 InApp
购买的 收据验证。
原文由 Binil Surendran 发布,翻译遵循 CC BY-SA 4.0 许可协议
Google 通过 Google Play Developer API 提供收据验证,API 中有两个您最感兴趣的端点: Purchase.products: get 和 Purchases.subscriptions: get 。
Purchases.products: get
可用于验证非自动续订产品购买,其中Purchases.subscriptions: get
用于验证和重新验证自动续订产品订阅。要使用任一端点,您必须知道
packageName
、productId
、purchaseToken
所有这些都可以在您购买时收到的有效负载中找到。您还需要一个access_token
您可以通过创建 Google API 服务帐户来获得它。要开始使用服务帐户,请先转到 Google Play 开发者控制台 API 访问设置页面,然后单击创建新项目按钮:
您现在应该会看到一个新的链接项目和几个新部分,在“服务帐户”部分中,单击“创建服务帐户”按钮。
您将看到一个信息框,其中包含创建服务帐户的说明。单击指向 Google Developers Console 的链接,将生成一个新选项卡。
现在单击 Create new Client ID,从选项中选择 Service account,然后单击 Create Client ID。
将下载一个 JSON 文件,这是您用于交换
access_token
的 JSON Web 令牌,因此请妥善保管。接下来,将选项卡切换回 Google Play 开发者控制台,然后在信息框中单击完成。您应该会在列表中看到您的新服务帐户。单击服务帐户电子邮件旁边的授予访问权限。
接下来在为该用户选择角色下,选择财务并单击添加用户。
您现在已经设置了您的服务帐户,并且它具有执行收据验证所需的所有权限。接下来是将您的 JWT 交换为 access_token。
access_token
在交换一小时后过期,因此您需要一些服务器代码来处理此问题,Google 提供了多种语言的多个库来处理此问题(列表并不详尽):我不会详细介绍,因为有很多关于如何使用这些库的文档,但我会提到你想使用
https://www.googleapis.com/auth/androidpublisher
作为 OAuth2 范围,client_email
来自the JWT as theissuer
and the public key you can get from theprivate_key
and the passphrasenotasecret
will be used for thesigning_key
.一旦你有了
access_token
你就可以开始了(至少在接下来的一个小时内,你需要按照上一段中的相同过程请求一个新的)。要检查消耗品(非自动续订)购买的状态,请发送 http
get
请求至:https://www.googleapis.com/androidpublisher/v2/applications/com.example.app/purchases/products/exampleSku/tokens/rojeslcdyyiapnqcynkjyyjh?access_token=your_access_token
如果您收到 200 http 响应代码,则一切都按计划进行并且您的购买是有效的。 404 表示您的令牌无效,因此购买很可能是欺诈企图。 401 表示您的访问令牌无效,403 表示您的服务帐户访问权限不足,请检查您是否已在 Google Play 开发者控制台中为访问帐户启用 财务。
来自 200 的响应将类似于以下内容:
有关每个属性的说明,请参阅 https://developers.google.com/android-publisher/api-ref/purchases/products 。
订阅类似,但端点如下所示:
https://www.googleapis.com/androidpublisher/v2/applications/packageName/purchases/subscriptions/subscriptionId/tokens/token?access_token=you_access_token
响应应包含以下属性:
有关属性说明,请参阅 https://developers.google.com/android-publisher/api-ref/purchases/subscriptions 并注意
startTimeMillis
和expiryTimeMillis
将根据情况发生变化关于订阅期限。验证愉快!