1.在模块的config.xml中定义触发事件:
<events>
<sales_order_invoice_save_commit_after> <!-- identifier of the event we want to catch -->
<observers>
<sales_order_invoice_save_commit_after_handler> <!-- identifier of the event handler -->
<type>model</type> <!-- class method call type; valid are model, object and singleton -->
<class>mysales/observer</class> <!-- observers class alias -->
<method>changeOrderStatus</method> <!-- observer's method to be called -->
<args></args> <!-- additional arguments passed to observer -->
</sales_order_invoice_save_commit_after_handler>
</observers>
</sales_order_invoice_save_commit_after>
</events>
2.在Model/Observer.php中定义方法
<?php
class Bysoft_Mysales_Model_Observer
{
public function changeOrderStatus(Varien_Event_Observer $observer)
{
$event = $observer->getEvent();
$invoice = $observer->getEvent()->getInvoice();
$order_update = $invoice->getOrder();
$order = Mage::getModel('sales/order')->loadByIncrementId($order_update->getIncrementId());
$state = 'processing';
$status = 'paid';
$comment = 'Changing state to Processing and status to paid Status';
$isCustomerNotified = false;
$order->setState($state, $status, $comment, $isCustomerNotified);
$order->save();
}
}
用Paypal standand 支付方式的时候遇到提交一个发票不更改订单状态的问题。可以用以上方法解决。

本文介绍如何在Magento中通过监听特定事件来更新订单状态。当使用Paypal标准支付方式提交发票时,采用配置XML定义事件监听器,并在Model/Observer.php中实现订单状态变更的方法。
708

被折叠的 条评论
为什么被折叠?



