我在运行7.19.7的旧服务器上有一个开发环境。
最近,我注意到Paypal Express不再起作用,并返回错误"Unable to communicate with the PayPal gateway."
。
深入研究异常日志,您可以看到
exception 'Exception' with message 'PayPal NVP CURL connection error #35: SSL connect error' in /path/app/code/core/Mage/Paypal/Model/Api/Nvp.php:983
Stack trace:
#0 /path/app/code/core/Mage/Paypal/Model/Api/Nvp.php(616): Mage_Paypal_Model_Api_Nvp->call('SetExpressCheck...', Array)
#1 /path/app/code/core/Mage/Paypal/Model/Express/Checkout.php(381): Mage_Paypal_Model_Api_Nvp->callSetExpressCheckout()
#2 /path/app/code/core/Mage/Paypal/Controller/Express/Abstract.php(108): Mage_Paypal_Model_Express_Checkout->start('http://asdf...', 'http://asdf...', false)
#3 /path/app/code/core/Mage/Core/Controller/Varien/Action.php(418): Mage_Paypal_Controller_Express_Abstract->startAction()
#4 /path/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(254): Mage_Core_Controller_Varien_Action->dispatch('start')
#5 /path/app/code/core/Mage/Core/Controller/Varien/Front.php(172): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#6 /path/app/code/core/Mage/Core/Model/App.php(365): Mage_Core_Controller_Varien_Front->dispatch()
#7 /path/app/Mage.php(684): Mage_Core_Model_App->run(Array)
#8 /path/index.php(210): Mage::run('uk', 'store')
我不知道Paypal最近是否对其沙盒进行了任何更改,但是转到了SSLLabs上的api-3t.sandbox.paypal.com URL,并看到它们唯一支持的协议是TLS 1.2。
在阅读了PHP手册中的设置协议版本后,我hackily添加了以下内容
nano +194 lib/Varien/Http/Adapter/Curl.php
curl_setopt_array($this->_getResource(), $options);
+curl_setopt($this->_getResource(), CURLOPT_SSLVERSION, 6);
return $body;
大!apache优美之后,我现在可以使用Paypal Express了。但是,我对必须破解内核并不满意。我也很高兴我不得不在特定于curl
而不是Paypal 的地方破解内核。
有人对解决此问题的正确方法有何建议?
编辑:
只是确认一些额外的发现,这不会影响Magento中的Paypal Standard,因为它似乎没有curl
在引擎盖下使用。在某些机器上我们得到了假阴性。
问:“这怎么可能起作用!curl无法在命令行上连接到沙箱”
答:“它使用的是贝宝标准,不是明示的,它不使用 curl