Magento中的购物车ID


Cart ID in Magento

我正在集成第三方结账,发现了一个需要帮助关闭的安全漏洞。基本上,结账过程是这样的:

  1. 如果满足某些条件,当客户点击"结账"时,购物车中的物品会被刮走,并被重定向到第三方网站。

  2. 他们填写他们的客户信息和支付信息

  3. 付款是处理的

  4. 付款确认后,他们被重定向回商家网站

  5. 订单使用当前购物车中的商品进行程序处理,客户收到他们的确认

  6. 每个人都很高兴

问题来了,如果有人在步骤2-4的任何时候编辑购物车,Magento相信新的购物车内容就是他们支付的。

我不太熟悉magento是如何保存报价的,但我希望有一个"购物车ID"或类似的东西来代表特定的购物车及其特定内容,当在购物车中添加/删除/编辑某些内容时,它会发生变化。然后我可以将他们离开时的数字与他们回来时的数字进行比较,以确保没有欺诈行为。

所以我的问题是:

-有这样的数字吗?

-它存储在哪里,如何检索?

-是否可以简单地根据编号加载,以便在将物品重定向到第三方时将其重新填充到购物车中?

-如果我的计划不起作用,为什么?有更好的方法吗?

-你最喜欢的不是你本国的食物是什么。我的是来自菲律宾的Pork Sinagang。

谢谢你们的帮助。如果没有这里的答案,我将无法度过这一切。

-马特

编辑:一些澄清-

  1. 客户点击"查看购物车"或类似的东西来查看购物车(如果他们去结账,如果他们的地理IP是国际的,他们会被重定向回购物车)

  2. 他们可以查看购物车中的商品,然后点击结账

    2a。如果他们的地理IP是国内的,他们会去商家的结账

    2b。如果他们的地理IP是国际性的,那么jQuery会抓取项目的详细信息,并将其发送到托管的收银台。这就是我想"冻结"购物车中的物品,或者获得一个ID号,让我在它们返回时检查购物车是否相同。

  3. 订单在他们使用的任何一个结账处都会得到确认,并被引导到成功控制器。

这个过程是在我开始为他们开发之前确定的,无论出于什么原因,他们都不希望它改变。

结构

Magento有3种不同的Checkout&销售工作流程:

  1. 购物车和购物车项目
  2. 报价和报价项目
  3. 订单和订单项

报价是在客户填写个人详细信息、地址、支付选项以及访问支付网关或其他任何信息时存储物品的地方。

工作流

购物车被转换为报价,您实际上是在为报价付款。一旦您的付款得到确认(当您从支付网关重定向回来时),报价将转换为订单。

Cart=>Quote=>订单转换工作流程旨在防止您所描述的内容,它还有助于记账产品的正确价格(未来可能会发生变化)。

试图规避此保护

当您单击订单确认按钮(并重定向到支付网关)时,您的购物车信息将转换为报价信息(其中添加了大量客户信息和地址信息)。

如果您返回并尝试继续编辑购物车,您应该会看到您的购物车现在是空的(已转换为报价),如果您尝试将新产品添加到购物车,则会创建一个新的购物车,该购物车具有与不同报价相对应的不同ID,依此类推。

你的处境

如果您可以在当前的Magento安装中规避此保护,请尝试在新的Magento安装中复制相同的步骤(原始Magento代码,单独的数据库,新安装)。

我怀疑它是否会复制,因为我在Magento 1.5、1.6、1.7、1.8中使用过类似的用例,但如果它真的复制了,请在Magento官方频道上创建一个错误报告,因为这将是一个高安全风险。