Magento 1.8.1.0事件观察者

Magento 1.8.1.0事件观察者,magento,Magento,我试图在特定事件时触发一个观察者代码,该代码将在成功在线支付(如Paypal)后将交易从Magento写入其他系统 以下是我的要求: (1) 一旦使用贝宝标准在贝宝上成功付款,Magento将解雇一名观察员 (2) Magento应加载页面签出成功页面,该页面将显示已下订单 (3) Magento应在管理区显示“完成”作为订单状态 (4) Magento应通知用户 (5) Magento应在最近的订单和订单历史中显示订单,供登录前端的用户使用 (6) 应生成订单的发票 当我使用事件“sales\

我试图在特定事件时触发一个观察者代码,该代码将在成功在线支付(如Paypal)后将交易从Magento写入其他系统

以下是我的要求:

(1) 一旦使用贝宝标准在贝宝上成功付款,Magento将解雇一名观察员

(2) Magento应加载页面签出成功页面,该页面将显示已下订单

(3) Magento应在管理区显示“完成”作为订单状态

(4) Magento应通知用户

(5) Magento应在最近的订单和订单历史中显示订单,供登录前端的用户使用

(6) 应生成订单的发票

当我使用事件“sales\u order\u payment\u pay”时,Magento成功地启动了一个观察者,并将事务写入外部系统(要求1),同时加载签出页面(要求2),但未满足要求(3)、(4)、(5)和(6)。订单状态为“付款挂起”。未生成发票。不会通知用户。订单不会出现在用户的订单历史记录或最近订单中

当我使用事件“checkout\u controller\u onepage\u success\u action”时,Magento不会触发观察者,checkout success页面为空,但满足要求(3)、(4)、(5)和(6)。如何启动事件并加载页面

public function myObserver (Varien_Event_Observer $observer) 
{ 
 $order_id = $observer->getEvent()->getOrder()->getId(); 

  “""""""" REST OF THE CODE HERE “""""""" 
} 
当我使用事件“签出后控制器动作布局渲染成功”时,Magento不会触发观察者。在这种情况下,满足所有其他要求,包括(2)。我怎样才能让事件发生

public function myObserver (Varien_Event_Observer $observer) 
{ 
 $order_id = $observer->getEvent()->getOrder()->getId(); 

 “""""""" REST OF THE CODE HERE “""""""" 
} 
我很想知道观察者是否需要代码末尾的“exit;”或“returntrue;”语句


有人能给我指一下正确的方向吗

侦听Magento事件不应影响标准Magento功能。这就是他们在那里的原因。除非您的代码以致命错误停止PHP进程

您是否启用了开发人员模式和错误显示?(). 可能您的代码中有一个错误阻止了其他事件的触发


就您发布的代码而言,代码看起来还不错,但我不确定Order类中是否有ID字段,getId()可能返回null,我认为如果您需要Order ID(),应该使用getEntityId()或getIncrementId()。

首先确保您的事件被触发。 通过死来调试它

public function myObserver (Varien_Event_Observer $observer) 
{ 
  echo "hello";die;
}
检查这是否有效。如果没有,请检查您的配置文件。希望您使用的是正确的事件。请查看您使用的是一页还是一步,它们都有不同的事件

如果有效,请检查您是否获得订单id 请尝试此代码以获取上次订购的项目详细信息

$order_id = Mage::getSingleton('checkout/session')->getLastRealOrderId();        
$order = Mage::getModel('sales/order')->loadByIncrementId($order_id);
$order_id = Mage::getSingleton('checkout/session')->getLastRealOrderId();        
$order = Mage::getModel('sales/order')->loadByIncrementId($order_id);