应用内购买促销代码打破了远程服务器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。