应用内购买促销代码会破坏远程服务器验证?
Posted
技术标签:
【中文标题】应用内购买促销代码会破坏远程服务器验证?【英文标题】:In-app purchase promo codes breaks remote server verification? 【发布时间】:2016-05-24 16:40:38 【问题描述】:为应用内购买发布促销代码似乎会阻止应用(再次)执行远程服务器购买验证!
当promo code 用于应用内购买(PURCHASES_UPDATED
广播)时,它将完全绕过购买流程,因此应用没有机会提供用于远程验证的"developerPayload"。
稍后当应用调用getPurchases() 来获取/验证所有者产品时,用于促销购买的purchase data 当然不会包含"developerPayload"
,但也不会包含"orderId"
,这对于使用远程验证也很有用Google Play Developer API.
应用应如何验证使用促销代码进行的应用内购买?
允许用户通过 Google Play 商店应用/网站兑换促销代码,从而绕过购买流程,这似乎是一个不应该发生的重大疏忽。
问题报告:
https://code.google.com/p/android/issues/detail?id=200722(关闭错误论坛) https://github.com/googlesamples/android-play-billing/issues/7类似帖子:
In-app purchases made via promo codes return empty developer payload string【问题讨论】:
简单的解决方法,如果我理解您的要求:让用户卸载您的应用,将促销代码放在 Play 商店的兑换部分,这将重新安装具有该功能的应用。我假设您要向新用户提供促销代码,所以这将是一个边缘案例问题。 【参考方案1】:这确实是 Google 方面已知的安全问题,因此我将建议一种解决方法。
连同促销代码一起向用户提供由您的服务器生成的服务器 ID,在获得促销购买时验证服务器 ID 并接受一次购买。
当从市场使用时,发送带有推荐人的 id。使用 from app 时有自己的逻辑来提供服务器 ID。
底线没有其他解决方案,但有一些如何识别具有某种 id 的用户。
【讨论】:
以上是关于应用内购买促销代码会破坏远程服务器验证?的主要内容,如果未能解决你的问题,请参考以下文章