Mam środowisko programistyczne na starym serwerze z uruchomionym curl 7.19.7.
Ostatnio zauważyłem, że Paypal Express już nie działa i zwraca błąd "Unable to communicate with the PayPal gateway."
.
Zagłębianie się w dzienniki wyjątków, które możesz zobaczyć
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')
Nie wiem, czy Paypal ostatnio zmienił coś w swojej piaskownicy, ale poszedł do adresu URL api-3t.sandbox.paypal.com na SSLLabs i zobaczyłem, że jedynym obsługiwanym protokołem jest TLS 1.2.
Po przeczytaniu na temat ustawiania wersji protokołu w podręczniku PHP , dodałem hacked następujące
nano +194 lib/Varien/Http/Adapter/Curl.php
curl_setopt_array($this->_getResource(), $options);
+curl_setopt($this->_getResource(), CURLOPT_SSLVERSION, 6);
return $body;
Świetny! Po apache wdzięku mogę teraz korzystać z Paypal express. Jednak nie cieszę się, że musiałem zhakować rdzeń. Nie jestem też zadowolony, że musiałem zhakować rdzeń w miejscu specyficznym curl
dla Paypal.
Czy ktoś ma jakieś porady dotyczące prawidłowego sposobu rozwiązania tego problemu?
EDYTOWAĆ:
Potwierdzając tylko kilka dodatkowych ustaleń, nie ma to wpływu na Paypal Standard w Magento, ponieważ nie wydaje się, aby używać go curl
pod maską. Otrzymywaliśmy fałszywe negatywy na niektórych komputerach.
P: „Jak to możliwe, że curl nie łączy się z piaskownicą w wierszu poleceń”
Odp .: „Używa standardu PayPal, a nie ekspresowego, nie używa curl
źródło
Odpowiedzi:
Mieliśmy ten sam problem i naprawiliśmy go, aktualizując bibliotekę curl z 7.19 do 7.40 ..
Uruchom następujące polecenie:
curl -v -s https://api-3t.sandbox.paypal.com/nvp
Jeśli pojawi się błąd połączenia SSL, masz ten sam problem, co my.
Możesz użyć następującego linku (odpowiedź nr 3), aby uzyskać instrukcje dotyczące sposobu przeprowadzenia tej aktualizacji biblioteki curl: /programming/28495444/how-to-upgrade-php-curl-to-version-7- 36-0
Próbowaliśmy też włamać się i zadziałało, ale nie byliśmy zadowoleni z tymczasowego rozwiązania.
Mam nadzieję, że te informacje ci pomogą.
źródło
Tego dnia napotkałem również ten błąd. Dodanie następującego do
app/code/core/Mage/Paypal/Model/Api/Nvp.php
około wiersza 945 powoduje przynajmniej zmianę w module Paypal Nvp zamiast bibliotek.Zgodnie ze stroną podręcznika stałych curl , możesz również użyć stałej
CURL_SSLVERSION_TLSv1_2
zamiast,6
jeśli masz wersję PHP> = 5.5.19 lub 5.6.3.źródło
Piaskownica rzeczywiście zmieniła się w ubiegłym tygodniu, akceptując tylko TLS 1.2. Z moich testów, TLS 1.2 uruchomi się automatycznie, jeśli używasz PHP 5.5.19+ i wystarczająco nowej wersji curl (używam 7.29). Potrzebujesz także OpenSSL 1.0.1+.
Ponieważ nadal korzystamy z wersji 5.3, musieliśmy również dodać ten sam hack do rdzenia, ale ponieważ Magento nadal żąda wsparcia dla wersji 5.3, prawdopodobnie możemy spodziewać się wkrótce oficjalnego rozwiązania (zwłaszcza, że zmiany te dotkną również systemy produkcyjne Paypal w Czerwiec).
Odniesienie: https://devblog.paypal.com/upcoming-security-changes-notice/
źródło