客户zencart的网站出现paypal付款不成功,出错的问题: 原因是:POODLE的漏洞问题, paypal已经开始停止使用SSLv3.0的支付版本了, 而导致的付款出现类似如下问题: 现象如: paypal付款过程中类似以下的错误信息。 An error occurred when we tried to contact the payment processor. Please try again, select an alternate payment method, or contact the store owner for assistance. () - (35) error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure zencart主要受此问题影响的版本有:v1.5.0-v1.5.3 - 以下所有文件受影响;v1.3.8a - 只有linkpoint_api module;v1.3.9 - 以下所有文件受影响。其中v1.3.8a版本比较旧了,现在网络上安装此版本的也比较少。所以影响比不大,主要是1.5.x 和v1.3.9. 问题所在: 过去php的网站商城弃用缺省的SSLv2通信, 而指定了SSLv3, 目前SSLv3已经被 TLS 1.0 1.1 和 1.2所代替了, 目前新版本的PHP和libcurl只要没有指定SSL版本的时候。 它们是可以自动协议而选择最优SSL的版本。 所以对于POODLE漏洞最好的办法:通过修改zencart网店的代码。不指定SSL版本自动让PHP和libcurl自动协商解决就可以了。 修改的文件有:(具体的路径要因不同的zencart版本) /includes/modules/payment/authorizenet_aim.php 约600行 /includes/modules/payment/paypal/paypal_curl.php 约58行 /includes/modules/payment/authorizenet_echeck.php 约589行 /includes/modules/payment/linkpoint_api/class.linkpoint_api.php 约309行 /includes/modules/payment/paypaldp.php 约2342行
PHP文件中查找"CURLOPT_SSLVERSION", 代码行如下: //curl_setopt($ch, CURLOPT_SSLVERSION, 3);(//前面注释就可以了) (责任编辑:好模板) |