問候,在Magento我想要觸發一個事件,一旦訂單已被設置爲處理(通過網關確認或手動),例如:如果一般客戶(ID 1)花費超過100美元且付款已確認,設置他的組ID 4(銀VIP,它通過推廣規則將全球2%的折扣) 我會給懸賞這個,但我想答案前2天O_O如何觸發magento收到的付款事件?
編輯:在我到目前爲止收到的答案只是一個部分答案,我也發現這些鏈接非常混亂,我不清楚什麼是最簡單的設置,我有什麼配置創建等...我也試圖找出如何獲得付費客戶ID /模型。
問候,在Magento我想要觸發一個事件,一旦訂單已被設置爲處理(通過網關確認或手動),例如:如果一般客戶(ID 1)花費超過100美元且付款已確認,設置他的組ID 4(銀VIP,它通過推廣規則將全球2%的折扣) 我會給懸賞這個,但我想答案前2天O_O如何觸發magento收到的付款事件?
編輯:在我到目前爲止收到的答案只是一個部分答案,我也發現這些鏈接非常混亂,我不清楚什麼是最簡單的設置,我有什麼配置創建等...我也試圖找出如何獲得付費客戶ID /模型。
您應該首先在app/code/local中創建自己的模塊。 創建例如Moak/Vip目錄。這將是你的模塊的根源。
爲了Magento的知道它的存在,創建一個在etc/modules中名爲Moak_Vip.xml文件,包含以下內容:
<?xml version="1.0"?>
<config>
<modules>
<Moak_Vip>
<active>true</active>
<codePool>local</codePool>
<self_name>Moak VIP module</self_name>
</Moak_Vip >
</modules>
</config>
然後,在你的模塊目錄,需要具備以下結構文件:
config.xml定義您的模塊併爲給定事件聲明您的事件偵聽器(當onepage結帳過程完成時發送checkout_onepage_controller_success_action
,支付已確認時發送sales_order_payment_pay
)。
您不需要任何數據庫設置,因爲您不會保存任何新實體。 那麼你的配置文件看起來應該像下面這樣:
<?xml version="1.0"?>
<config>
<modules>
<Moak_Vip>
<version>0.1.0</version>
</Moak_Vip>
</modules>
<global>
<models>
<moak>
<class>Moak_Vip_Model</class>
</moak>
</models>
<events>
<sales_order_payment_pay>
<observers>
<moak_observer>
<type>singleton</type>
<class>moak/observer</class>
<method>checkVipCustomer</method>
</moak_observer>
</observers>
</sales_order_payment_pay >
</events>
</global>
</config>
現在,你的觀察方法checkVipCustomer
應該接受一個事件對象,從中可以獲取有關訂單,客戶的所有信息......並進行修改你喜歡。 查看app/code/core/Mage /.../Model/Magento模型類... 以查看如何瀏覽這些對象。
例子:
<?php
class Moak_Vip_Model_Observer
{
public function checkVipCustomer($event)
{
$order = $event->getInvoice()->getOrder(); // Mage_Sales_Model_Order
/*
- Check order amount
- Get customer object
- Set Group id
- $customer->save();
*/
return $this;
}
}
注意我沒有測試任何我寫到這裏的代碼,所以小心輕放! 希望它有幫助,Magento有一個很難的學習曲線... 祝你好運!
您可以爲「sales_order_payment_pay」事件創建一個觀察者。這是magento 1.3中的事件的cheatsheet。
並解釋如何創建observer methods。鏈接禮貌的優秀activecodeline和inchoo網站。
這是優秀的隊友。這可能有些過時,但它很好地說明了Magento如何實現事件/觀察者模式。乾杯! – 2011-07-15 01:44:59
你的config.xml中的「computeExpirationDate」可能應該是「checkVipCustomer」 – 2014-05-30 06:42:49
你是對的@KaeVerens,我編輯了答案。 – Julien 2014-06-16 01:48:00