我有一个应用程序已发布到Alpha通道,其中包含一个应用内(非)托管项目的费用为1美元。
当我正常购买时,即使用信用卡/借记卡Google会返回正确的开发者有效负载字符串,但如果我选择“兑换”促销代码并输入所述代码,Google会返回一个空的开发者有效负载字符串,因此“onIabPurchaseFinished()”中的身份验证失败。
我应该提一下,只有当我选择从应用程序的购买流程中兑换代码时才会出现这种情况,如果我先打开Play商店,兑换代码,然后返回并打开应用程序,一切都会完美无缺。
这是Google的一个错误吗?
编辑:预计Play商店的东西,因为它无法知道您的有效负载,购买完成后无需检查。
答案 0 :(得分:5)
此问题已在google的Android-play-billing样本repo上打开。 看起来很长一段时间都被忽略了,并最终以this评论结束。简而言之,他们有以下建议。
我们审核了我们的指南和内部API,由于应用内结算API(包括促销代码)的所有功能都不支持developerPayload,因此我们删除了将其用作安全检查的建议。
正如您在我们的文档中所见,在实施应用内结算(https://developer.android.com/google/play/billing/billing_integrate.html)页面上,我们添加了一条建议:
警告:请勿使用developerPayload字段进行安全验证。在完成与应答内结算相关的任务时,此字段始终无法使用。有关安全性最佳做法的详细信息,请参阅应用内结算安全和设计指南。
我们的建议是使用Play Developer API在您自己的后端进行验证。