Ich habe eine Entwicklungsumgebung auf einem alten Server, auf dem Curl 7.19.7 ausgeführt wird.
Kürzlich habe ich festgestellt, dass Paypal Express nicht mehr funktioniert und einen Fehler zurückgibt "Unable to communicate with the PayPal gateway."
.
Stöbern Sie in den Ausnahmenprotokollen, die Sie sehen können
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')
Ich weiß nicht, ob Paypal in letzter Zeit Änderungen an der Sandbox vorgenommen hat, habe aber die URL api-3t.sandbox.paypal.com in SSLLabs aufgerufen und festgestellt , dass TLS 1.2 das einzige von ihnen unterstützte Protokoll ist.
Nachdem ich mich mit dem Einstellen von Protokollversionen im PHP-Handbuch befasst hatte, fügte ich Folgendes hinzu
nano +194 lib/Varien/Http/Adapter/Curl.php
curl_setopt_array($this->_getResource(), $options);
+curl_setopt($this->_getResource(), CURLOPT_SSLVERSION, 6);
return $body;
Groß! Nach einem zierlichen Apache kann ich nun Paypal Express nutzen. Ich bin jedoch nicht glücklich, dass ich den Kern hacken musste. Ich bin auch nicht glücklich darüber, dass ich den Kern an einem Ort hacken musste, der spezifisch curl
für Paypal ist.
Hat jemand einen Rat, wie dieses Problem richtig behoben werden kann?
BEARBEITEN:
Nur um einige zusätzliche Ergebnisse zu bestätigen, hat dies keine Auswirkungen auf Paypal Standard in Magento, da es scheinbar nicht curl
unter der Haube verwendet wird. Wir haben auf bestimmten Maschinen falsche Negative erhalten.
F: "Wie kann das funktionieren? Curl kann keine Verbindung zur Sandbox auf der Kommandozeile herstellen."
A: "Es benutzt Paypal Standard und nicht Express, es benutzt nicht curl
quelle
Antworten:
Wir hatten das gleiche Problem und haben es einfach behoben, indem wir die Curl-Bibliothek von 7.19 auf 7.40 aktualisiert haben.
Führen Sie den folgenden Befehl aus:
curl -v -s https://api-3t.sandbox.paypal.com/nvp
Wenn Sie einen SSL-Verbindungsfehler erhalten, haben Sie dasselbe Problem, das wir hatten.
Sie können den folgenden Link (Antwort 3) verwenden, um Anweisungen zum Aktualisieren der Curl-Bibliothek zu erhalten: /programming/28495444/how-to-upgrade-php-curl-to-version-7- 36-0
Wir haben auch einen Hack ausprobiert und es hat funktioniert, aber wir waren mit einer vorübergehenden Lösung nicht zufrieden.
Ich hoffe, diese Informationen helfen Ihnen weiter.
quelle
Ich bin auch heute auf diesen Fehler gestoßen. Das Hinzufügen des Folgenden zu
app/code/core/Mage/Paypal/Model/Api/Nvp.php
Zeile 945 bewirkt zumindest die Änderung des Paypal Nvp-Moduls anstelle der Bibliotheken.Entsprechend der Handbuchseite für curl-Konstanten können Sie die Konstante auch verwenden,
CURL_SSLVERSION_TLSv1_2
anstatt6
eine PHP-Version> = 5.5.19 oder 5.6.3 zu verwenden.quelle
Die Sandbox hat sich in der Tat in der letzten Woche geändert, um nur TLS 1.2 zu akzeptieren. Bei meinen Tests wird TLS 1.2 automatisch aktiviert, wenn Sie PHP 5.5.19+ und eine ausreichend aktuelle Curl-Version verwenden (ich verwende 7.29). Sie benötigen außerdem OpenSSL 1.0.1+.
Da wir immer noch mit 5.3 arbeiten, mussten wir auch den gleichen Hack zum Core hinzufügen, aber da Magento immer noch Unterstützung für 5.3 beansprucht, können wir wahrscheinlich bald eine offizielle Lösung erwarten (zumal diese Änderungen auch die Paypal-Produktionssysteme in betreffen werden Juni).
Referenz: https://devblog.paypal.com/upcoming-security-changes-notice/
quelle