Google Wallet docs(对于数字商品)说:
注意:这些回调处理程序不安全。有人可以使用 Firebug或Chrome开发者工具调用其中一个功能, 嘲笑成功或失败。 您应该确认购买on the server 。
引用中的链接用于指定回发URL。
但由于jwt是由Google签署的 - 为什么需要?我们可以在服务器的页面代码隐藏中检查成功处理程序的jwt的签名。
(如果签名不够 - 在回发网址上也不够,因为如果有人发现了网址 - 他们可能会在那里发送一个POST并且问题会返回。)
答案 0 :(得分:7)
文档说明 *IF* you specify a postback url 。因此,您可以尝试不提供一个并按上述方式处理(仍然是“服务器端”)。
假设您的测试有效,两者之间存在差异:
在 回发网址的情况下,所有相关方,买方,您和Google都“同步” - 如果因任何原因无法满足,请遇到服务器问题在您的结尾等,然后交易失败(没有生成订单)所有。
在没有回发网址的情况下,假设成功,事务可能具有不同的状态:
希望这会有所帮助......
在安全性方面还有另一个“好处”(在某些流程中可能至关重要)。使用回发网址,您可以获取另一个验证步骤的订单详细信息(例如,基于订单ID)。您可以验证/从客户端发送的订单是否“有效”(无论业务规则是什么 - 例如if order-id exists then.....
),因为成功回调在回发后发生。
e.g。通过重播相同(有效)JWT (在iat /任何到期范围内)进行模拟
卖家/开发人员可能会在他们的应用程序中出现无数的流量,因此使用“回发网址验证流程”可以减轻可能出现的问题。
H个....
答案 1 :(得分:0)
我使用回发来交付货物(在我们的案例中是电子票)。我已经实现了钱包回发,这给了我各种参数,比如谷歌的user_id。
我不知道如何确定用户是谁,如果没有这个,我就无法向他们发送数字商品。有什么方法可以得到这个吗?
在其他系统上,我曾经提供了一个订单ID,该订单ID进入了付费按钮并通过回调传出。我在钱包代码示例或教程中没有看到这样的输入。
保罗先生注意:我后来猜到答案,测试并在此提供:how to get user information in google wallet
答案 2 :(得分:-1)
与文档说的一样,所有客户端代码都可以使用各种浏览器开发工具轻松更改,因此不应该被信任。
我认为他们关心的是,javascript可以被操纵,以便您的服务器认为付款已经发生,并且用户获得了他们实际上没有支付的产品。
如果有人发现了该网址并向其发帖,则他们无法控制服务器代码,因此服务器将从其卡中收取付款,因此这不是真正的问题。