我正在尝试将应用内结算(V3)应用到应用程序中。将要购买的商品将使应用程序无广告。此项目将是非消耗品。
我已根据Google文档实现了代码,但我在理解有效负载参数方面遇到了一些麻烦。我很困惑为什么有效负载字符串将存储在私有服务器上更好,如果是,它将如何将用户与购买绑定。我想要的是,一旦用户购买了应用程序的无广告版本,他就可以在另一台设备上使用它(他在那里使用他用来进行初始购买的电子邮件)。如果我使用随机或空的有效负载字符串,用户是否可以在其他设备上使用无广告版本?根据我的理解,购买信息保存在Google上,因此通常用户可以执行此操作。如果是这样,为什么有效载荷保存在另一台服务器上(由我维护)会更好?以下是Google文档中的相关文字:
您应该传入一个字符串令牌,以帮助您的应用程序识别进行购买的用户,以便您以后可以验证这是该用户的合法购买。对于耗材,您可以使用随机生成的字符串,但对于非耗材,您应使用唯一标识用户的字符串。 当您从Google Play获得回复时,请确保验证开发人员有效内容字符串是否与之前使用购买请求发送的令牌相匹配。作为进一步的安全预防措施,您应该在自己的安全服务器上执行验证。
上述意味着我应该使用用户的电子邮件地址作为有效负载字符串吗?如果是这种情况,则验证将是购买过程返回的有效负载与用户的电子邮件匹配。为什么要在安全的服务器上执行此操作?
答案 0 :(得分:0)
在阅读了一些更相关的帖子后,我得出以下结论/解决方案:
在使用购买时,我生成一个随机的唯一字符串。我将此字符串保存在首选项中并将其用作有效负载。在收到Google Play的回复后,我会检查并确保有效负载与首选项(或本地变量)中保存的有效内容相匹配。在活动开始时,我只是检查用户是否已购买特定项目的Google服务器 - 此处我将不会使用有效负载,因为如果用户更改设备或重置应用程序,它将丢失。
这应该适用于非消耗品 - 这不是最好的解决方案,但就我而言,它已经足够了。最佳解决方案是生成随机字符串,并将其与当前用户的电子邮件一起传递到私有安全服务器以及作为有效负载的Google服务器。这样,可以在购买后以及在活动开始时检查Google返回的有效负载,以验证用户购买是否有效。