所以我想我了解了应用内计费和服务器端验证的工作原理,这要归功于对我之前的问题 https://stackoverflow.com/questions/16067180/server-side-verification-of-google-play-in-app-billing-version-3-purchase但现在想起来我还是很失落……
这就是我所拥有的和我想做的:
我有一个应用程序,用户可以在其中购买多个“物品”。每个项目都存储在服务器上,并且项目应在购买后可以在应用程序中下载。这些物品是只能购买一次的管理物品(即非消耗品)。我在 Google Play 开发者控制台中定义项目没有问题,并且可以成功进行购买。
我不明白的是,如何让我的服务器不仅验证购买(使用购买令牌和签名),而且还知道购买的是商品 X 而不是商品 Y?是否有一些 Google API,服务器可以与 Google 对话并询问某个 buyToken 属于哪个项目 id?还有其他方法可以做到这一点吗?
我讨厌回答我自己的问题,但是嘿,没有其他人回答过!今天早上我和我的同事再次审视了这个问题。在再次查看 TrivialDrive 示例中客户端验证的工作原理后,我终于想到了问题的解决方案。伙计,当我明白出了什么问题时,我是否想戴上我的“愚蠢帽子”?
我以为是用purchaseToken和签名来验证购买的,但是这样就没有办法验证购买的是商品A还是商品B。
如果您想在向买家提供内容之前进行服务器端验证(或与此相关的任何类型的验证),它实际上是原始 JSON 数据(如果您使用 IabHelper 类,则可以从 Purchase 类获取原始 JSON)您应该将其与签名和公钥一起使用。由于它是您传递到服务器的原始 JSON 数据,因此它还包含有关购买的所有信息(例如 SKU ID 等)。
将开发人员负载设置为唯一标识您的用户(而不是设备!)的内容也很重要。在我们的例子中,每个用户在服务器上都有一个帐户,我使用唯一的用户 ID 作为开发人员有效负载。
/愚蠢先生签字!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)