我正在使用应用内购买API的第3版,我有一个单一的、托管的、不可消耗的项目。我还没有在我的应用程序中发布此功能,因此我想在任何购买之前决定购买有效载荷内容。
从"安全最佳实践"中:
在进行购买请求时设置开发人员有效载荷字符串
使用应用内购买版本3 API,您可以在将购买请求发送到Google Play时包括“开发人员有效载荷”字符串令牌。通常,这用于传递唯一标识此购买请求的字符串令牌。如果您指定了一个字符串值,Google Play会将此字符串与购买响应一起返回。随后,当您查询有关此购买的信息时,Google Play会将此字符串与购买详细信息一起返回。
您应该传递一个帮助您的应用程序识别进行购买的用户的字符串令牌,以便您稍后可以验证此用户的合法购买。对于可消耗的物品,您可以使用随机生成的字符串,但对于不可消耗的物品,您应该使用唯一标识用户的字符串。
从Google Play获得响应后,请确保验证开发人员有效载荷字符串与先前发送的购买请求中的令牌相匹配。作为进一步的安全预防措施,您应在自己的安全服务器上执行验证。
无论是对还是错,我已经决定不采取“进一步的安全措施”,即建立一个服务器来执行购买验证。而且我也不会存储自己的购买记录 -- 我总是调用账单 API。那么,我真的需要进行有效负载验证吗?验证 API 本身确实在报告物品已购买之前验证了用户的身份,如果攻击者已经入侵了设备(无论是应用程序还是 Google Play API),我不认为在设备上对用户的身份进行额外检查有任何好处,因为这很容易被绕过。或者我没考虑到还有其他原因需要这样做吗?