問題描述
您好,在 Magento 中,一旦訂單被設(shè)置為處理(通過網(wǎng)關(guān)確認(rèn)或手動),我想觸發(fā)一個事件,例如:如果普通客戶(id 1)花費(fèi)超過 100 美元并且付款已被確認(rèn),將他的組ID設(shè)置為4(銀VIP,根據(jù)促銷規(guī)則在全球獲得2%的折扣)我會為此懸賞,但我希望在 2 天前得到答案 O_o
Greetings, in Magento I want to trigger an event, once an order has been set to processing (by gateway confirmation or manually) that, example: If a general customer (id 1) spends over 100$ and the payment has been confirmed, set his group id to 4 (silver VIP, which by promotion rule gets 2% discount globally) I would give a bounty to this, but I'd like the answer before 2 days O_o
編輯:到目前為止我收到的答案只是部分答案,而且我發(fā)現(xiàn)鏈接非?;靵y,我不清楚什么是最小設(shè)置,我必須配置什么創(chuàng)建等...我還試圖找出如何獲得付費(fèi)客戶的 ID/型號.
EDIT: the answer I received so far is only a partial answer, also I find the links very confusing, I'm not clear on what is the minimal setup, what do i have to configure create etc... Also I'm trying to find out how to get the paying customers id/model.
推薦答案
你應(yīng)該從在 app/code/local 中創(chuàng)建你自己的模塊開始.例如創(chuàng)建目錄 Moak/Vip.它將成為您模塊的根目錄.
You should start by creating your own module in app/code/local. Create for example the directories Moak/Vip. It will be the root of your module.
為了讓 Magento 知道它存在,在 etc/modules 中創(chuàng)建一個名為 Moak_Vip.xml 的文件,內(nèi)容如下:
In order for Magento to know it exists, create a file named Moak_Vip.xml in etc/modules, with the following content :
<?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>
然后,在您的模塊目錄中,您需要以下結(jié)構(gòu)和文件:
Then, in your module directory, you need the following structure and files :
- etc/config.xml
- 模型/觀察者.php
config.xml 定義您的模塊并聲明給定事件的事件偵聽器(checkout_onepage_controller_success_action
在單頁結(jié)帳過程完成時發(fā)送,sales_order_payment_pay
在付款時發(fā)送已確認(rèn)).
The config.xml defines your module and declares your event listener for a given event (checkout_onepage_controller_success_action
is sent when onepage checkout process is complete, sales_order_payment_pay
is sent when the payment has been confirmed).
您不需要任何數(shù)據(jù)庫設(shè)置,因?yàn)槟粫4嫒魏涡聦?shí)體.因此,您的配置文件應(yīng)如下所示:
You don't need any DB setup since you will not save any new entity. So your config file should look something like the following :
<?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>
現(xiàn)在,您的觀察者方法 checkVipCustomer
應(yīng)該接收一個事件對象,您可以從中檢索有關(guān)訂單、客戶...的所有信息,并執(zhí)行您喜歡的修改.查看 app/code/core/Mage/.../Model/... 中的 Magento 模型類了解如何瀏覽這些對象.
Now, your Observer method checkVipCustomer
should receive an event object from which you can retrieve all information about the order, the customer... and perform the modifications you like.
Have a look at Magento model classes in app/code/core/Mage/.../Model/...
to see how to navigate through those objects.
示例:
<?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 有一個艱難的學(xué)習(xí)曲線......祝你好運(yùn)!
Note I've not tested any of the code I wrote here, so handle with care ! Hope it helped, Magento has a hard learning curve... Good luck !
這篇關(guān)于如何觸發(fā)在 magento 中收到的付款事件?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!