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
la source
Réponses:
Nous avons eu ce même problème et nous l'avons juste corrigé en mettant à jour la bibliothèque curl de 7.19 à 7.40.
Exécutez la commande suivante:
curl -v -s https://api-3t.sandbox.paypal.com/nvp
Si vous obtenez une erreur de connexion SSL, vous avez le même problème que nous.
Vous pouvez utiliser le lien suivant (réponse # 3) pour obtenir des instructions sur la façon de faire cette mise à jour de la bibliothèque curl: /programming/28495444/how-to-upgrade-php-curl-to-version-7- 36-0
Nous avons également essayé un hack et cela a fonctionné mais nous n'étions pas satisfaits d'une solution temporaire.
J'espère que ces informations vous aideront.
la source
J'ai également rencontré cette erreur aujourd'hui. L'ajout de ce qui suit à la
app/code/core/Mage/Paypal/Model/Api/Nvp.php
ligne 945 entraîne au moins la modification dans le module Paypal Nvp au lieu des bibliothèques.Selon la page de manuel des constantes curl , vous pouvez également utiliser la constante
CURL_SSLVERSION_TLSv1_2
au lieu de6
si vous avez une version PHP> = 5.5.19 ou 5.6.3.la source
Le bac à sable a en effet changé la semaine dernière pour n'accepter que TLS 1.2. D'après mes tests, TLS 1.2 démarrera automatiquement si vous utilisez PHP 5.5.19+ et une version curl suffisamment récente (j'utilise 7.29). Vous avez également besoin d'OpenSSL 1.0.1+.
Étant donné que nous exécutons toujours la version 5.3, nous avons également dû ajouter le même hack au noyau, mais comme Magento revendique toujours le support de la version 5.3, nous pouvons probablement nous attendre à une solution officielle bientôt (d'autant plus que ces modifications toucheront également les systèmes de production Paypal dans Juin).
Référence: https://devblog.paypal.com/upcoming-security-changes-notice/
la source