通过促销代码进行的应用内购买会返回空的开发者有效负载字符串

KDB*_*223 60 android promotion-code in-app-billing google-play

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

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

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

这是谷歌的一个错误吗?

编辑:Play商店的东西是预期的,因为它无法知道您的有效负载,购买完成后无需检查.

Sha*_*mar 5

这个问题已在Google的android-play-billing示例回购中打开。似乎它已被忽略很长时间,并最终被评论关闭。简而言之,他们有以下建议。


我们查看了指南和内部API,并且由于In-App Billing API的所有功能(包括促销代码)均不支持developerPayload,因此我们删除了将其用作安全检查的建议。

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

警告:请勿将developerPayload字段用于安全验证。完成与应用内结算相关的任务时,此字段并非始终可用。有关安全最佳做法的更多信息,请参阅应用内结算安全和设计指南。

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