Ho un ambiente di sviluppo su un vecchio server che esegue il ricciolo 7.19.7.
Recentemente ho notato che Paypal Express non funziona più e restituisce un errore "Unable to communicate with the PayPal gateway."
.
Puoi scavare nei registri delle eccezioni
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')
Non so se Paypal ha cambiato qualcosa di recente con il loro sandbox di recente, ma sono andato all'URL api-3t.sandbox.paypal.com su SSLLabs e ho visto che l'unico protocollo supportato è TLS 1.2.
Dopo aver letto sull'impostazione delle versioni dei protocolli nel manuale di PHP, ho aggiunto in modo hackerato quanto segue
nano +194 lib/Varien/Http/Adapter/Curl.php
curl_setopt_array($this->_getResource(), $options);
+curl_setopt($this->_getResource(), CURLOPT_SSLVERSION, 6);
return $body;
Grande! Dopo un grazioso apache ora posso usare Paypal express. Tuttavia, non sono contento di aver dovuto hackerare il core. Inoltre, non sono contento di aver dovuto hackerare il core in un luogo specifico curl
piuttosto che Paypal.
Qualcuno ha qualche consiglio su un modo corretto per risolvere questo problema?
MODIFICARE:
Confermando solo alcuni risultati extra, questo non influisce su Paypal Standard in Magento in quanto non sembra usare curl
sotto il cofano. Stavamo ottenendo falsi negativi su alcune macchine.
D: "Come può funzionare? Curl non riesce a connettersi al sandbox dalla riga di comando"
A: "Sta usando lo standard paypal e non espresso, non lo usa curl