J'ai un environnement de développement sur un ancien serveur exécutant curl 7.19.7.
Récemment, j'ai remarqué que Paypal Express ne fonctionne plus et renvoie une erreur "Unable to communicate with the PayPal gateway."
.
En fouillant dans les journaux d'exceptions que vous pouvez voir
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')
Je ne sais pas si Paypal a changé quelque chose avec leur sandbox récemment, mais je suis allé à l'URL api-3t.sandbox.paypal.com sur SSLLabs et j'ai vu que le seul protocole qu'ils prennent en charge est TLS 1.2.
Après avoir lu la configuration des versions de protocole dans le manuel PHP, j'ai ajouté par piratage ce qui suit
nano +194 lib/Varien/Http/Adapter/Curl.php
curl_setopt_array($this->_getResource(), $options);
+curl_setopt($this->_getResource(), CURLOPT_SSLVERSION, 6);
return $body;
Génial! Après un apache gracieux je peux maintenant utiliser Paypal express. Cependant, je ne suis pas content d'avoir dû pirater le noyau. Je ne suis pas non plus content d'avoir piraté le cœur dans un endroit spécifique à curl
plutôt qu'à Paypal.
Quelqu'un at-il des conseils sur la façon correcte de résoudre ce problème?
ÉDITER:
Je confirme simplement quelques constatations supplémentaires, cela n'affecte pas Paypal Standard dans Magento car il ne semble pas utiliser curl
sous le capot. Nous obtenions de faux négatifs sur certaines machines.
Q: "Comment cela peut-il fonctionner? Curl ne parvient pas à se connecter au bac à sable sur la ligne de commande"
R: "Il utilise la norme paypal et non express, il n'utilise pas curl