我正在努力整合第三方结帐,并发现了一个需要帮助关闭的安全漏洞。基本上结帐过程是这样的:
如果符合某些条件,则客户点击"结帐"他们在购物车中的物品被刮掉,然后被重定向到第三方网站。
他们填写了客户信息和付款信息
处理付款
会将其重定向回商家网站
使用购物车中的商品以编程方式处理订单,客户收到确认
每个人都很开心
如果有人在步骤2-4期间随时编辑购物车,问题就出现了,Magento认为新推车内容是他们付出的。
我不太熟悉magento如何保存报价,但我希望有一个"购物车ID"或者类似于代表具有特定内容的特定购物车的东西,并且在购物车中添加/删除/编辑某些内容时会发生变化。然后我可以比较他们离开时的数字,以及他们回来时的数字,并确保没有欺诈。
所以我的问题是:
- 有这么一个号码吗?
- 它存储在哪里以及如何检索?
- 只是根据号码加载它,以便在重定向到第三方时重新填充购物车中的物品?
- 如果我的计划不起作用,为什么还有更好的方法?
- 你最喜欢的食物是什么,不是来自你的祖国。我的是来自菲律宾的Pork Sinagang。
感谢帮助人员。如果没有这里的答案,我将无法完成所有这些。
-Matt
编辑: 一些澄清 -
客户点击"查看购物车"或类似的东西看到购物车(如果他们改为结账,如果他们的geoIP是国际的,他们会被重定向回购物车)
他们可以查看购物车中的商品,然后点击结帐
2a上。如果他们的geoIP是国内的,他们会去商家的结账
2B。如果他们的geoIP是国际的,那么jQuery会抓取项目详细信息并将其发送到托管的结帐。这就是我想要"冻结"购物车中的物品,或者获取一个ID号码,让我在退货时检查购物车是否相同。
订单会在他们使用的任何结帐时确认,并且会被定向到成功控制器。
这个过程是在我开始为他们开发之前确定的,无论出于什么原因他们都不想改变它。
答案 0 :(得分:0)
Magento有三种不同的结构用于Checkout&销售工作流程:
在客户填写个人详细信息,地址,付款方式以及访问支付网关或其他任何内容时,Quote是存储内容的地方。
购物车转换为报价,您实际上是在支付报价。确认付款后(当您从支付网关重定向时),报价将转换为订单。
购物车=> Quote =>订单转换工作流程旨在准确防止您所描述的内容,它还有助于记录产品的正确价格(将来可能会发生变化)。
当您点击订单确认按钮(并重定向到支付网关)时,您的购物车信息将转换为报价信息(添加了大量客户信息和地址信息)。
如果您回过头并尝试继续编辑购物车,您应该会看到您的购物车现在已空(已转换为报价),如果您尝试将新产品添加到购物车,则会创建一个新购物车不同的ID对应不同的报价依旧等等。
如果您可以在当前的Magento安装上规避此保护,请尝试在新的Magento安装上重现相同的步骤(原始Magento代码,单独的数据库,新安装)。
我怀疑它会重现,因为我在Magento 1.5,1.6,1.7,1.8中使用了类似的用例,但如果它确实重现,请在Magento官方频道上创建一个错误报告,因为这将是一个很高的安全风险。