通过促销代码进行的应用内购买会返回空的开发人员负载string

我有一个应用程序发布到alpha通道,与一个应用程序(联合国)pipe理项目,成本1美元。

当我正常购买,即使用信用卡/借记卡时,Google会返回正确的开发人员有效负载string,但如果我select“赎回”促销代码并input上述代码,Google会返回一个空的开发人员负载string, 'onIabPurchaseFinished()'。

我应该提到,只有当我select从应用程序的购买stream程中兑换代码时,才会发生这种情况,如果我先打开Play商店,兑换代码,然后回来并打开应用程序,那么一切都可以正常运行。

这是Google的一个错误吗?

编辑:Play商店的东西是预期的,因为它不知道你的有效载荷和购买完成,而不必检查它。

这个问题是在谷歌的android-play-billing样本回购上打开的。 看起来好像被忽略了很长一段时间,最终被这个评论closures了。 总之,他们有以下build议。


我们审查了我们的指导原则和内部API,由于应用内结算API(包括promocodes)上的所有function都不支持developerPayload,我们将删除build议以将其用作安全检查。

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

警告:请勿使用developerPayload字段进行安全validation。 完成与应用内结算相关的任务时,此字段并不总是可用。 有关安全性最佳做法的更多信息,请参阅“应用内结算安全性和devise指南”。

我们的build议是使用Play开发者API在您自己的后端进行validation。