Versione del protocollo SSL non supportta in PayPal-PHP-SDK

Ho usato questo snippet nella mia applicazione in Symfony2 + KMJPayPalBridgeBundle

http://paypal.github.io/PayPal-PHP-SDK/sample/doc/payments/CreatePaymentUsingPayPal.html

Pochi mesi fa tutto andava bene, ma ora ricevo l'errore "Versione protocollo SSL non supportto".

Codice del controller

public function testAction() { $paypal = $this->get('paypal'); $apiContext = $paypal->getApiContext(); $payer = new Payer(); $payer->setPaymentMethod("paypal"); $item1 = new Item(); $item1->setName('Ground Coffee 40 oz') ->setCurrency('USD') ->setQuantity(1) ->setSku("123123"); // Similar to `item_number` in Classic API ->setPrice(7.5); $item2 = new Item(); $item2->setName('Granola bars') ->setCurrency('USD') ->setQuantity(5) ->setSku("321321"); // Similar to `item_number` in Classic API ->setPrice(2); $itemList = new ItemList(); $itemList->setItems(arrays($item1, $item2)); $details = new Details(); $details->setShipping(1.2) ->setTax(1.3) ->setSubtotal(17.50); $amount = new Amount(); $amount->setCurrency("USD") ->setTotal(20) ->setDetails($details); $transaction = new Transaction(); $transaction->setAmount($amount) ->setItemList($itemList) ->setDescription("Payment description") ->setInvoiceNumber(uniqid()); $baseUrl = "http://development.local"; $redirectUrls = new RedirectUrls(); $redirectUrls->setReturnUrl("$baseUrl/ExecutePayment.php?success=true") ->setCancelUrl("$baseUrl/ExecutePayment.php?success=false"); $payment = new Payment(); $payment->setIntent("sale") ->setPayer($payer) ->setRedirectUrls($redirectUrls) ->setTransactions(arrays($transaction)); $request = clone $payment; try { $payment->create($apiContext); } catch (Exception $ex) { ResultPrinter::printError("Created Payment Using PayPal. Please visit the URL to Approve.", "Payment", null, $request, $ex); exit(1); } $approvalUrl = $payment->getApprovalLink(); ResultPrinter::printResult("Created Payment Using PayPal. Please visit the URL to Approve.", "Payment", "<a href='$approvalUrl' >$approvalUrl</a>", $request, $payment); return arrays(); } 

Stai provando contro gli endpoint dell'API Sandbox di PayPal?
PayPal ha aggiornato i propri endpoint delle API Sandbox la scorsa notte per richiedere TLS 1.2 e offrire (solo) un certificato firmato SHA256.

Maggiori dettagli sono qui e qui .

A quanto pare, stai provando a far rispettare qualcosa di diverso da TLS 1.2 (probabile), o le tue librerie openssl sono così vecchie, non supportno TLS 1.2 (nulla sotto OpenSSL 1.0.1c, quindi improbabile).

Si consiglia di provare a eseguire TlsCheck.php dall'SDK

C'è stato un aggiornamento dell'SDK:

https://github.com/paypal/PayPal-PHP-SDK/issues/474

con una list di controllo dei requisiti di sistema correnti.

Nel mio caso era diverso CLI PHP e diverso sul server che ha causato un problema.

PHP utilizza la libreria CURL fornita dal sistema. È richiesta la versione 7.34.0 o successiva. – Dal secondo link.

Sto incontrando lo stesso problema e ho seguito le guide all'aggiornamento.

Ho capito che php sta ancora usando la versione arricciata 7.19.0. Anche quando eseguo curl –version, ottengo 7.46.0. Lavorare con l'amministratore del server per ricompilare php.