如何解决Magento 1.9.3未捕获的错误:在布尔Payment / Model / Observer.php上调用成员函数getMethodInstance
我正在使用Magento 1.9.3版和CCAvenue的付款网关。
在结帐并成功付款时,从CCAvenue返回网站时。我收到此错误而不是成功付款:
Fatal error: Uncaught Error: Call to a member function getmethodInstance() on boolean in app/code/core/Mage/Payment/Model/Observer.PHP:46 Stack trace:
#0 app/code/core/Mage/Core/Model/App.PHP(1358): Mage_Payment_Model_Observer->salesOrderBeforeSave(Object(Varien_Event_Observer))
#1 app/code/core/Mage/Core/Model/App.PHP(1337): Mage_Core_Model_App->_callObserverMethod(Object(Mage_Payment_Model_Observer),'salesOrderBefor...',Object(Varien_Event_Observer))
#2 app/Mage.PHP(448): Mage_Core_Model_App->dispatchEvent('sales_order_sav...',Array)
#3 app/code/core/Mage/Core/Model/Abstract.PHP(391): Mage::dispatchEvent('sales_order_sav...',Array)
#4 app/code/core/Mage/Sales/Model/Order.PHP(2117): Mage_Core_Model_Abstract->_beforeSave()
#5 app/code/core/Mage/Core/Model/Abstract.PHP(316): Mage_Sales_Model_Order-> in app/code/core/Mage/Payment/Model/Observer.PHP on line 46
到目前为止,我在Google上搜索了解决方案,并尝试了以下几种方法:
$payment = $order->getPayment();
if(!isset($payment)) {
return $this->_redirect('checkout/cart');
}
使用此解决方案,我可以返回结帐/购物车,但收到无效访问的消息。成功完成订单并在所有情况下都扣除了付款。
我还检查了日志,但是我无法跟踪和纠正任何问题,仅供参考,这是与之相关的日志:
Stack trace:
#0 app/code/core/Mage/Core/Model/App.PHP(1358): Mage_Payment_Model_Observer->salesOrderBeforeSave(Object(Varien_Event_Observer))
#1 app/code/core/Mage/Core/Model/App.PHP(1337): Mage_Core_Model_App->_callObserverMethod(Object(Mage_Payment_Model_Observer),Array)
#4 app/code/core/Mage/Sales/Model/Order.PHP(2117): Mage_Core_Model_Abstract->_beforeSave()
#5 app/code/core/Mage/Core/Model/Abstract.PHP(316): Mage_Sales_Model_Order-> in app/code/core/Mage/Payment/Model/Observer.PHP on line 46
解决方法
在未正确加载订单对象时会发生这种情况。 在这种情况下,加载订单对象时会丢失会话中的“订单ID”。
在 CcavenuepayController.php 中,响应处理程序功能
搜索
$order = Mage::getModel('sales/order')->loadByIncrementId($session->getLastRealOrderId());
替换为
$order = Mage::getModel('sales/order')->loadByIncrementId($response_array['order_id']);
我们将会话订单ID替换为ccavenue响应订单ID。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。