可以安全地假设 Google Play API 中没有用于测试购买的 paymentState?

Posted

技术标签:

【中文标题】可以安全地假设 Google Play API 中没有用于测试购买的 paymentState?【英文标题】:Safe to assume paymentState is absent from Google Play API for test purchases? 【发布时间】:2017-03-24 23:30:32 【问题描述】:

当我使用 Google Play Developer API 获取 purchaseToken 的 Purchases.subscriptions 资源时,测试购买不包括 paymentState 属性。然而,真正的购买似乎总是包括它。那么,当 Purchases.subscriptions 资源不包含 purchaseToken 来自测试购买的 paymentState 属性时,是否可以安全地假设?

我们正在服务器端验证购买令牌和续订,并正在寻找更好的解决方案来确定购买是否为测试购买,而不必依赖 orderId 的存在与否,该 orderId 仅适用于应用程序。

【问题讨论】:

我也在想同样的事情。您是否知道 paymentState 是否仅适用于实际购买? 这里一样,看到类似的行为,我也想知道这个问题的答案 在向 Google Play API 端点 Purchases.subscriptions: get 发出数百个请求之后,如果其他人想知道的话。每个 Purchases.subscriptions resource 响应中都缺少 paymentState 属性 【参考方案1】:

自 2017 年 7 月 10 日起,Google Play 现在提供来自测试购买的 orderID。

【讨论】:

请将此作为评论。 @dee-elle 感谢您提供的信息。你有官方消息来源吗?【参考方案2】:

所以我意识到使用paymentState 并不是检测测试购买的正确方法。我注意到如果 purchaseToken 支付失败,paymentState 属性也不会返回。所以我们最终决定使用从应用程序传递给我们的orderId 的缺失或存在。

【讨论】:

但是一个测试请求(至少是一个订阅)也有一个orderId。 (我只能确认订阅)【参考方案3】:

现在不确定它是否相关,但 Purchases.subscriptions:get 现在在响应中包含 purchaseType

purchaseType0 表示测试购买

参考 - https://developers.google.com/android-publisher/api-ref/rest/v3/purchases.subscriptions

【讨论】:

以上是关于可以安全地假设 Google Play API 中没有用于测试购买的 paymentState?的主要内容,如果未能解决你的问题,请参考以下文章

Google Play 政策更新 | 扩展目标 API 级别要求以增进用户安全

Android google play 控制台错误 APK 不安全地传输用户数据

安全进展 | 持续打造值得信赖的 Google Play 平台

安全进展 | 持续打造值得信赖的 Google Play 平台

错误记录Google Play 上架报错 ( APK 大小 | 目标 API 级别 | Google Play 帮助文档 )

步骤详解 | 助您轻松提交 Google Play 数据安全表单