2011-11-28 40 views
5

我最近設置了一些自動腳本,通過使用觀察者和Magento事件來幫助我管理Magento商店的傳入訂單。我的問題是根據所選的付款類型處理確切地下單和保存在系統中的問題。Magento PayPal模塊事件

例如:如果有人簡單地選擇預付款,訂單會立即保存,客戶會自動轉到成功頁面 - 所以目前沒有問題。

如果客戶通過Paypal付款,則整個情況完全不同。在重定向到PayPal後,登錄到帳戶並確認付款後,客戶未被重定向到Magento商店。他可以點擊一個鏈接返回到那裏,這也將轉發到成功頁面,但當然不是每個人都會這樣做,問題是我使用的觀察者事件只在用戶登錄該頁面時執行代碼。 (我正在使用的事件是「checkout_Onepage_Controller_Success_Action」)。

因此,我需要知道Magento從哪裏獲取PayPal付款是否成功,是否已被取消等信息。我查看了/ app/code/core/Mage/Paypal/controllers /下的一些PayPal控制器文件,唯一看起來接近可能解決方案的是StandardController.php中的函數successAction()。然而,這個功能似乎也只是在客戶選擇返回Magento商店時觸發的,所以它不能幫助我。

有沒有人有這方面的經驗?

+0

指定你正在使用什麼paymennt方法 –

+0

我的例子是指Magento v1.5.1.0的標準PayPal模塊 – FlyingM

+0

嘗試綁定到對象相關事件而不是控制器事件,並且請將所有事件註銷到文本文件在您的流程中觸發,那麼您可以選擇適當的什麼 –

回答

0

我想出了一個解決問題的方法: 顯然Magento中沒有與PayPal收到的付款相對應的事件。一個可能的解決方案可能是提供一個IPN URL,一旦確認付款後觸發腳本,但我設法將客戶重定向到我的商店,所以我不必那樣做。

在「網站設置」下PayPal帳戶的配置文件設置中,有一個選項稱爲「自動重定向」。如果啓用此選項並輸入URL,客戶將自動轉發到該URL。起初,我認爲這不會對我有幫助,因爲正如我所說,涉及多個網絡商店,它們都有自己的個人返回網址,您不能指定多個網站。但是,如果返回URL在接觸PayPal時被傳遞過來,它將覆蓋配置文件設置中指定的URL,並且由於默認情況下Magento模塊會這樣做,所以我只需在文本字段中輸入一個隨機URL並啓用該選項,現在當顧客下訂單並通過PayPal付款時,顧客被重新導向到我的店。