是的,我已经阅读了@developer.android.com 的所有文档,并且我确实理解了这一切,但有一个基本例外——它是为了什么而引入的。
由于来自 Google Play 的所有订单响应都由任何人都无法访问的私钥签名,并且正在通过配对的公钥进行验证(在我的情况下是在外部服务器上,因此第三人也无法访问)所以根本(几乎)没有办法欺骗。
所有这些随机数只是确保购买的多余方式。更重要的是,文档对这种情况只字未提,当:
- 我购买了一件物品;
- 生成随机数并将其发送到 Google Play;
- 发生崩溃,所以我所有已知的随机数都丢失了;
- 让我的应用重新启动并从 Google Play 获得回调;
- ...并因未识别 nonce 而拒绝此呼叫!
在上述情况下,用户支付了一个项目并且从未得到它,这是可耻的。当然,我可以将 nonce 存储在某个文件中,并在我的应用程序返回时重新读取它,但这违反了 nonce 的所有原则。
恕我直言,有人刚刚说“嘿,验证过程太简单了,让我们随机添加一些东西,它会更酷!”。所以有人做到了。
或者,你会敞开心扉接受我错过的其他用例吗?否则,我将从我的代码中删除整个随机数部分。