如何通过 OmniPay 将 curl 选项传递给 Guzzle?
How to pass curl options through OmniPay to Guzzle?
目前正在集成 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 函数中执行如下操作:https://github.com/cherrytech/omnipay-paypal/commit/f520a015a91eb1bf2666892d3ef362607a74396f
- 您所建议的将密码列表显式设置为 SSLv3 是行不通的。 PayPal 已将其服务器更改为需要 TLS 1.2,任何 SSLv3 连接都将被拒绝。正确的做法是将系统上的 libcurl 版本更新到 > 7.40,这将自动协商正确的 TLS 1.2 版本。
目前正在集成 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 函数中执行如下操作:https://github.com/cherrytech/omnipay-paypal/commit/f520a015a91eb1bf2666892d3ef362607a74396f
- 您所建议的将密码列表显式设置为 SSLv3 是行不通的。 PayPal 已将其服务器更改为需要 TLS 1.2,任何 SSLv3 连接都将被拒绝。正确的做法是将系统上的 libcurl 版本更新到 > 7.40,这将自动协商正确的 TLS 1.2 版本。