Magento的购物车ID

时间:2014-09-10 07:05:26

标签: php magento

我正在努力整合第三方结帐,并发现了一个需要帮助关闭的安全漏洞。基本上结帐过程是这样的:

  1. 如果符合某些条件,则客户点击"结帐"他们在购物车中的物品被刮掉,然后被重定向到第三方网站。

  2. 他们填写了客户信息和付款信息

  3. 处理付款

  4. 付款确认后,
  5. 会将其重定向回商家网站

  6. 使用购物车中的商品以编程方式处理订单,客户收到确认

  7. 每个人都很开心

  8. 如果有人在步骤2-4期间随时编辑购物车,问题就出现了,Magento认为新推车内容是他们付出的。

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

    所以我的问题是:

    - 有这么一个号码吗?

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

    - 只是根据号码加载它,以便在重定向到第三方时重新填充购物车中的物品?

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

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

    感谢帮助人员。如果没有这里的答案,我将无法完成所有这些。

    -Matt

    编辑: 一些澄清 -

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

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

      2a上。如果他们的geoIP是国内的,他们会去商家的结账

      2B。如果他们的geoIP是国际的,那么jQuery会抓取项目详细信息并将其发送到托管的结帐。这就是我想要"冻结"购物车中的物品,或者获取一个ID号码,让我在退货时检查购物车是否相同。

    3. 订单会在他们使用的任何结帐时确认,并且会被定向到成功控制器。

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

1 个答案:

答案 0 :(得分:0)

结构

Magento有三种不同的结构用于Checkout&销售工作流程:

  1. Cart and CartItems
  2. 引用和QuoteItems
  3. Order and OrderItems
  4. 在客户填写个人详细信息,地址,付款方式以及访问支付网关或其他任何内容时,Quote是存储内容的地方。

    工作流

    购物车转换为报价,您实际上是在支付报价。确认付款后(当您从支付网关重定向时),报价将转换为订单。

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

    试图绕过这种保护

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

    如果您回过头并尝试继续编辑购物车,您应该会看到您的购物车现在已空(已转换为报价),如果您尝试将新产品添加到购物车,则会创建一个新购物车不同的ID对应不同的报价依旧等等。

    您的情况

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

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