1

我设法修改了一些 magento 的代码来实现我们自己的 3rd 方网关,但是当有人下订单时,我遇到了不正确的“购买”交易计数问题,当 saveOrderAction 运行时计数直接增加(在成功或失败之前页面 - 失败时计数再次减少,这是正确的 - 但我不希望它在成功页面之前增加)在这个阶段,订单在系统中保存为“处理”

我没有的代码基本上是:在“saveOrderAction”中,我有一个条件检查选择的付款方式,

如果是我们的第 3 方,它会重定向到第 3 方页面,然后我将一些参数从第 3 方页面传回给 magento 到 'successAction' 或 'failureAction' (无论是哪种情况),

然后相应地保存订单,将其状态设置为完成,等等......

我想做的只是在付款成功后增加“购买”数量,如果有人可以让我了解在 magento 中如何实现“购买”的逻辑

我知道这发生在模型 mag\checkout\model\type\onepage.php 的函数 saveOrder() 中:

$service = Mage::getModel('sales/service_quote', $this->getQuote());
$service->submitAll(); 

但我无法弄清楚它在 submitAll 中发生的位置......我假设一开始我不应该保存订单,或者可能将其设置为不计算在内的不同状态或我不知道是什么?

任何帮助/建议将不胜感激!谢谢 :)

4

1 回答 1

0

一种可能会节省一些麻烦的方法是将观察者添加到符合您需要的事件中。特别是,有几个 Mage_Sales_Model_Order_Payment 事件可能是合适的:

sales_order_payment_save_after
sales_order_payment_capture
sales_order_payment_pay
... several more ...

如果您查看这些事件,您可能会发现其中一个事件是增加您的销售数量的合理时间。同样,该对象上存在用于取消或退款订单的事件,您可以根据需要使用这些事件来减少销售额。

我通常避免为此类行为挂钩控制器操作,因为我不能保证 Magento 将始终以我假设的方式使用该操作。

无论如何,让我知道这是否有帮助,或者您是否仍有相同的问题。希望有帮助!

谢谢,乔

于 2011-04-25T16:10:17.570 回答