2011-04-25 23 views
1

我設法修改一些magento的代碼來實現我們自己的第三方網關, ,但我在遇到不正當的「買」計數 當有人下訂單時,當saveOrderAction運行時,計數會直接增加(在成功或失敗頁之前 - 失敗計數再次減少,這是正確的 - 但我不希望它在成功頁之前增加) 在此階段,順序保存爲系統中的「處理」magento「X買了」的交易計數

我沒有基本代碼是:在「saveOrderAction」 我已用於檢查支付方法的條件來選擇,

如果它是我們的第三方,它重定向到第三方頁面, 然後我將一些參數從第三方頁面傳回到magento到'successAction'或'failureAction'(以兩者中的情況爲準),

然後相應地保存訂單,設置其狀態爲完成,依此類推...

我想要做的只是在付款成功後才增加「買入」數量,如果有人能夠給我洞察在magento中如何實現「買入」的邏輯

我知道這發生在模型mage \ checkout \ model \ type \ onepage.php中的函數saveOrder()中:

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

但我想不通的地方在submitAll它正在發生...... 我在承擔,也許首先我不應該保存訂單,或許在它不計入不同的狀態進行設置或我不知道是什麼?

任何幫助/建議將不勝感激! 謝謝:)

回答

0

這樣做的一種方式,可能會節省一些麻煩,將添加一個Observer到符合您需要的事件。特別是,有幾個事件Mage_Sales_Model_Order_Payment可能是適當的:

sales_order_payment_save_after 
sales_order_payment_capture 
sales_order_payment_pay 
... several more ... 

如果你看看這些事件,你可能會發現,其中之一是在合理的時間添加到您的出售數量。同樣,在該對象上有事件用於取消或退款訂單,您可以根據需要使用這些事件來減少銷售額。

我通常避免掛鉤到控制器的這種行爲類型的行爲,因爲我不能保證Magento總是會以我假設的方式使用該行爲。

無論如何,讓我知道這是否有幫助,或者如果你仍然有同樣的問題。希望有所幫助!

謝謝, 喬

+0

啊哈OK十分感謝了很多,這給了我一些很好的啓示......將挖掘到的東西進一步 順便說一句,你有什麼想法,我怎麼能得到SKU - 我想從保存順序動作中的onepage控制器發送SKU作爲參數), 我當前得到的最後一個訂單ID是這樣的: Mage :: getSingleton('checkout/session') - > getLastRealOrderId() – 2011-04-26 07:47:04

+0

沒關係,我是能夠弄清楚:)謝謝 – 2011-04-26 17:21:42