Я включил адаптивные платежи PayPal в одном из плагинов WordPress. Моя функциональность полностью готова и работает до вчерашнего дня. Однако, когда я начал с окончательного тестирования, я застрял в этом исключении –
PPConnectionException Object ( [url:PPConnectionException:private] => https://svcs.sandbox.paypal.com/AdaptivePayments/Pay [data:PPConnectionException:private] => [message:protected] => error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number ........) //I am just pasting necessary piece of error to understand the problem
Я использовал эту библиотеку – https://github.com/paypal/adaptivepayments-sdk-php
Я тестирую его в среде песочницы.
Кажется, что проблема связана с OpenSSL или cURL.
Я много искал решение, но не нашел полезного ответа.
Я также вставляю пример кода ниже (это для «параллельного» способа оплаты, но ни этот, ни другие методы не работают) –
require_once('../PPBootStrap.php'); require_once('../Common/Constants.php'); define("DEFAULT_SELECT", "- Select -"); if(isset($_POST['receiverEmail'])) { $receiver = array(); /* * A receiver's email address */ for($i=0; $i<count($_POST['receiverEmail']); $i++) { $receiver[$i] = new Receiver(); $receiver[$i]->email = $_POST['receiverEmail'][$i]; /* * Amount to be credited to the receiver's account */ $receiver[$i]->amount = $_POST['receiverAmount'][$i]; /* * Set to true to indicate a chained payment; only one receiver can be a primary receiver. Omit this field, or set it to false for simple and parallel payments. */ $receiver[$i]->primary = $_POST['primaryReceiver'][$i]; } $receiverList = new ReceiverList($receiver); } $payRequest = new PayRequest(new RequestEnvelope("en_US"), $_POST['actionType'], $_POST['cancelUrl'], $_POST['currencyCode'], $receiverList, $_POST['returnUrl']); // Add optional params if($_POST["memo"] != "") { $payRequest->memo = $_POST["memo"]; } $service = new AdaptivePaymentsService(Configuration::getAcctAndConfig()); try { /* wrap API method calls on the service object with a try catch */ $response = $service->Pay($payRequest); } catch(Exception $ex) { require_once '../Common/Error.php'; /******* *************************************************** PLEASE NOTE: the code is breaking here, an exception is thrown *************************************************** *******/ exit; }
Данные $_POST
передаются из другого файла.
Я включил вышеуказанный код в свой плагин (в WordPress). На самом деле, если я запускаю функции непосредственно в отдельном файле PHP, даже это не работает. Итак, ясно, что проблема – это что-то другое. Проблема, похоже, связана с подключением к PayPal и моему серверу. Я не получаю, все работает до вчерашнего дня, но внезапно перестало работать. Кроме того, ничего не обновлено, связанное с openssl, cURL или PHP на моем сервере.
Любая помощь будет принята с благодарностью. Благодаря !!!
РЕДАКТИРОВАТЬ:
Изменение номера версии openssl решает проблему. Тем не менее, я по-прежнему обеспокоен тем, что среди версий номер 1
и 4
является правильным и будет работать в будущем. Кроме того, существует ли какая-либо проблема безопасности при изменении значения с 3
на другое? Если бы кто-нибудь мог это прояснить, это было бы здорово. Еще раз спасибо.