应用内购买促销代码打破了远程服务器validation?
发布应用内购买的促销代码似乎会阻止应用(再次)执行远程服务器购买validation!
当促销代码用于应用程序内购买( PURCHASES_UPDATED
广播)时,它将完全绕过购买stream程,所以应用程序没有机会提供用于远程validation的“developerPayload” 。
之后,当应用程序调用getPurchases()来获取/validation所有者产品时,促销购买的购买数据当然不会包含"developerPayload"
,但也不会包含"orderId"
,对于使用Google Play Developer API进行远程validation。
应用程序应如何validation使用促销代码进行的应用内购买?
允许用户通过Google Play商店应用程序/网站来赎回促销代码,从而绕过购买stream程,这似乎是一个不可能的重大监督。
问题报告:
- https://code.google.com/p/android/issues/detail?id=200722 (封闭的错误论坛)
- https://github.com/googlesamples/android-play-billing/issues/7
类似的post:
- 通过促销代码进行的应用内购买会返回空的开发人员负载string
这确实是一个来自Google方面的安全问题,所以我将提出一个解决方法。
随着促销代码为用户提供服务器生成的服务器ID,当获得促销购买validation服务器ID并接受一次购买。
从市场使用时发送ID与引荐。 当从应用程序使用有你自己的逻辑提供服务器ID。
底线没有其他的解决scheme,但一些如何识别用户的某种forms的ID。