lokielse / omnipay-unionpay

UnionPay driver for the Omnipay PHP payment processing library
MIT License
112 stars 43 forks source link

*curl_error* OpenSSL was built without SSLv3 support #11

Closed successgo closed 7 years ago

successgo commented 7 years ago

嗨, @lokielse 。

版本 v0.3.8

我在执行$gateway->purchase()->send()时,返回结果为false。通过排查追踪,发现在sendHttpRequest方法中出现错误,用curl_error($ch)得到这个提示信息。

OpenSSL was built without SSLv3 support

这个猜测是我的环境关于openssl的安装有问题,我需要再查一下资料。

版本 0.4.0

如果升级到 v0.4.0,代码一点不动,可以收到正常的结果,也可以成功付款,但是在回调时验证签名失败。我不知道如何去排查。我用的是在v0.3.8下的配置方法,没有按照新的README上所说的设置公钥,私钥及证书ID,是不是这个原因呢?

lokielse commented 7 years ago

@darrengaogao

v0.3.8的那个SSL错误应该是配置以及版本的问题,具体是什么问题你可以研究一下,新版本统一使用内置的http请求模块。

0.4.0回调验证有bug,已在最新版本中修复了,你更新后再试一试。

successgo commented 7 years ago

@lokielse 好的,我稍后check一下

successgo commented 7 years ago

@lokielse

v0.3.8 解决办法:

在omnipay-unionpay/src/Helper.php: curl_setopt($ch, CURLOPT_SSLVERSION, 3);

这意味着使用SSLv3,但是sslv3以及sslv2均不再安全,不推荐使用,因为我的系统上的openssl也已不支持它们,sslv3的升级版是tls1.0,tls1.1,tls1.2,另外根据http://php.net/manual/zh/function.curl-setopt.php介绍,推荐使用默认配置。

修改为: curl_setopt($ch, CURLOPT_SSLVERSION, 0);

对于在使用v0.3.8的人来讲,如果系统不再支持sslv2和sslv3,需要重新编译openssl相关的东西,因此能不能发布一个v0.3.8的bug fix版。

lokielse commented 7 years ago

@darrengaogao OK,v0.3.9已发布