Php 如何通过OmniPay将卷发选项传递给Guzzle?

Php 如何通过OmniPay将卷发选项传递给Guzzle?,php,curl,paypal,guzzle,omnipay,Php,Curl,Paypal,Guzzle,Omnipay,目前正在整合OmniPay。看起来一切正常,但当我使用PayPalExpress网关时,会出现以下错误: [curl] 35: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure [url] https://api-3t.sandbox.paypal.com/nvp?VERSION=119.0&USER=... 跟踪情况PayPal的SSL更新似乎有问题,我需要告诉它使用SSL

目前正在整合OmniPay。看起来一切正常,但当我使用PayPalExpress网关时,会出现以下错误:

[curl] 35: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure [url] https://api-3t.sandbox.paypal.com/nvp?VERSION=119.0&USER=...
跟踪情况PayPal的SSL更新似乎有问题,我需要告诉它使用SSL3和更新的密码列表:

curl_setopt($ch, CURLOPT_SSLVERSION, 3);
curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, 'SSLv3');
然而,我还没有找到一种方法将这些选项传递给Guzzle和curl。有人知道我怎样才能做到这一点吗

  • 要将选项传递给curl或guzzle,您需要在sendData函数中执行以下操作:
  • 您所建议的,即显式地将密码列表设置为SSLv3,将不起作用。PayPal已将其服务器更改为需要TLS 1.2,任何SSLv3连接都将被拒绝。正确的做法是将系统上的libcurl版本更新到>7.40,这将自动协商正确的TLS1.2版本

  • #1-如果我读的是正确的,我必须修改核心文件吗?那么,OmniPay没有办法做到这一点#2-我的服务器上的curl版本是7.43.0,所以修复程序听起来好像不起作用。我自己在CentOS 6上用libcurl 7.44测试了这个版本。使用PayPal_Rest网关,它对我来说运行良好,没有任何代码更改。好的,我可能需要在本地服务器上重新安装它才能正常工作。关于将密码列表设置为SSLv3,您有一个很好的观点。看起来应该是CURL_SSLVERSION_TLSv1_2(或6)来设置次要版本。是的,我相信6是正确的答案,但是如果您没有支持它的libcurl,您将只会抛出一个异常。我已经在我的服务器上用更新的libcurl测试了这一点,没有设置SSL版本,也没有让libcurl自动协商。它很好用。我没有看到任何证据表明将SSL版本设置为6或设置密码列表会产生任何差异,但是如果您有一个测试用例可以证明这一点,那么我希望看到这一点。