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。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...