我使用Magento 1.9.3.8与在Ubuntu 16.04服务器(apache2,php 7.1)上运行的Ebizmarts SagePay扩展(直接集成),遇到客户在重定向时失去会话的情况3D安全表单到Ebizmarts_SagePaySuite_DirectPaymentController::callback3dAction
:
Mage_Core_Exception: Please select a valid payment method. in /var/www/html/mage/app/Mage.php:595
Stack trace:
#0 /var/www/html/mage/app/code/core/Mage/Sales/Model/Service/Quote.php(315): Mage::throwException('Please select a...')
#1 /var/www/html/mage/app/code/core/Mage/Sales/Model/Service/Quote.php(222): Mage_Sales_Model_Service_Quote->_validate()
#2 /var/www/html/mage/app/code/core/Mage/Sales/Model/Service/Quote.php(238): Mage_Sales_Model_Service_Quote->submitNominalItems()
#3 /var/www/html/mage/app/code/core/Mage/Checkout/Model/Type/Onepage.php(815): Mage_Sales_Model_Service_Quote->submitAll()
#4 /var/www/html/mage/app/code/local/Ebizmarts/SagePaySuite/Model/SagePayDirectPro.php(280): Mage_Checkout_Model_Type_Onepage->saveOrder()
#5 /var/www/html/mage/app/code/local/Ebizmarts/SagePaySuite/Model/SagePayDirectPro.php(1092): Ebizmarts_SagePaySuite_Model_SagePayDirectPro->directCallBack3D(Object(Mage_Sales_Model_Quote_Payment), 'XXXXXXXXXXXXXXXx', 'XXXXXXXXXXXXXXXx')
#6 /var/www/html/mage/app/code/local/Ebizmarts/SagePaySuite/controllers/DirectPaymentController.php(194): Ebizmarts_SagePaySuite_Model_SagePayDirectPro->saveOrderAfter3dSecure('XXXXXXXXXXXXXXXx', 'XXXXXXXXXXXXXXXx')
#7 /var/www/html/mage/app/code/core/Mage/Core/Controller/Varien/Action.php(418): Ebizmarts_SagePaySuite_DirectPaymentController->callback3dAction()
#8 /var/www/html/mage/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(254): Mage_Core_Controller_Varien_Action->dispatch('callback3d')
#9 /var/www/html/mage/app/code/core/Mage/Core/Controller/Varien/Front.php(172): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#10 /var/www/html/mage/app/code/core/Mage/Core/Model/App.php(365): Mage_Core_Controller_Varien_Front->dispatch()
#11 /var/www/html/mage/app/Mage.php(683): Mage_Core_Model_App->run(Array)
#12 /var/www/html/mage/index.php(83): Mage::run('', 'store')
#13 {main}
会话保存在文件系统中。会话TTL是1天。我检查了访问日志,将其与会话文件进行了比较,找到了从3D表单重定向客户时创建的3个文件。导致创建新报价且未指定付款方式的新会话导致上述例外,因为报价无法验证。
客户的用户代理是Mozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit / 537.36(KHTML,如Gecko)Chrome / 56.0.2924.87 Safari / 537.36。
是否与客户的设备或我的服务器有关?