为进一步保证大家信息及通信安全,我们已于 2018 年 11 月 13 日(周二)停止对 TLSv1.0、TLSv1.1 版本的支持,仅支持 TLSv1.2 及以上版本 。
如果贵司系统目前不支持 TLSv1.2,请务必按照本文内容进行升级,以免影响交易。
一、检查版本信息并升级
请确定生产环境中服务端使用的语言,并根据以下信息进行检查并升级。
① PHP:
OpenSSL 版本必须 1.0.1c 及以上,PHP 版本必须 5.6 以上。
若确实无法及时完成版本升级,请根据以下说明进行设置:
在 `lib/ApiRequestor.php` 文件中, `curl_exec($curl);` 之前添加 `curl_setopt($curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1);`
如果是通过 composer 安装的,文件位于 `vendor/pingplusplus/pingpp-php/lib/ApiRequestor.php`
强烈建议你升级环境而非做此设置。此设置是在 Ping++ SDK 中的设置,所以每次升级 SDK ,均需按此操作设置,否则会影响交易。Ping++ PHP SDK 版本不强制升级到最新版本。
② Java:
JDK 6(当前官方提供下载版本)不支持 TLSv1.2,需要升级至 JDK8。
JDK 7 开始支持 TLSv1.2,但默认 TLSv1.0。建议升级至 JDK8。若确实无法及时完成版本升级,请根据以下说明进行设置:
在调用设置 apiKey 的方法下添加 System.setProperty("https.protocols", "TLSv1.2"); 如下:
Pingpp.apiKey = "sk_live_***";//你自己的 apikey
System.setProperty("https.protocols", "TLSv1.2");//需要添加的代码
JDK 8 默认使用 TLSv1.2,推荐使用该版本。
Ping++ Java SDK 版本不强制升级到最新版本。
③ Python:
OpenSSL 版本必须 1.0.1c 及以上
Ping++ Python SDK 版本不强制升级到最新版本。
④ Ruby:
Ruby 2.0.0 及已上版本,OpenSSL 版本必须 1.0.1c 及以上。
Ping++ Ruby SDK 需要升级到最新版本。
⑤ Node.js:
OpenSSL 版本必须 1.0.1c 及以上
Ping++ Node.js SDK 需要升级到最新版本 。
⑥ Go:
Go 语言版本 1.2 以上不用升级处理
Ping++ Go SDK 版本不强制升级到最新版本。
⑦ C#:
升级至 Ping++ 最新 C# SDK(要求环境为 .NET Framework 4.6 及以上)
若 .NET Framework 是 4.5 及以上版本,需执行以下操作:
Pingpp.Pingpp.SetApiKey("YOUR_API_KEY"); //在你的 api_key 的设置语句下添加下面的代码
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;//需要添加的代码
Ping++ C# SDK 版本不强制升级到最新版本。
二、纠错排查
不支持 TLSv1.2 的 SDK 报错信息如下:
Node.js
Error: An error occurred with our connection to Pingpp
Java
IOException during API request to Pingpp (https://api.pingxx.com): Connection reset Please check your internet connection and try again. If this problem persists,you should check Pingpp's service status at https://pingxx.com/status.
PHP
Network error [errno 35]: SSL connect error
Ruby
Connection reset by peer - SSL_connect (Errno::ECONNRESET)
C#
System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a send.
下一篇 Ping++ 域名 IP 及 HTTPS 证书更新公告