60

我有一个发布到 alpha 通道的应用程序,其中包含一个成本为 1 美元的应用程序内(非)托管项目。

当我正常购买时,即使用信用卡/借记卡,谷歌返回正确的开发者有效载荷字符串,但如果我选择“兑换”促销代码并输入所述代码,谷歌返回一个空的开发者有效载荷字符串,因此身份验证失败'onIabPurchaseFinished()'。

我应该提到,只有当我选择从应用程序的购买流程中兑换代码时才会发生这种情况,如果我先打开 Play 商店,兑换代码,然后再回来打开应用程序,一切都会完美无缺。

这是谷歌的一个错误吗?

编辑:Play商店的事情是预期的,因为它不知道你的有效载荷并且购买完成而无需检查它。

4

1 回答 1

5

这个问题是在 google 的 android-play-billing samples repo上打开的。看起来它被忽略了很长时间,最终被这个评论关闭。简而言之,他们有以下建议。


我们审查了我们的指南和内部 API,并且由于应用内结算 API(包括促销代码)的所有功能不支持 developerPayload,我们将删除将其用作安全检查的建议。

正如您在我们的文档中看到的那样,在实现应用内结算页面 ( https://developer.android.com/google/play/billing/billing_integrate.html ) 上,我们添加了一条建议:

注意:请勿将 developerPayload 字段用于安全验证目的。完成与应用内结算相关的任务时,此字段并不总是可用。有关安全最佳实践的更多信息,请参阅应用内计费安全和设计指南。

我们的建议是使用 Play Developer API 在您自己的后端进行验证。


于 2017-07-06T19:36:41.133 回答