请求下单的时候,长时间无响应
然后返回这个错误:( PHP )
cURL error 35: OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to api.mch.weixin.qq.com:443
然后尝试使用 Curl 命令行直接 POST 订单信息测试的时候,也是长时间无响应,最后也是返回以上代码。 升级了 openssl 、升级了 nss 、升级了 curl 都不行
根据: https://blog.csdn.net/lilongsy/article/details/84940800 进行配置过也没有用
另外使用 curl post 其他 https 的网站是没有问题的,包括企业微信的一些接口。
测试用例,可以在服务器上测试一下
curl --location --request POST 'https://api.mch.weixin.qq.com/v3/pay/transactions/h5' --header 'Content-Type: application/json; charset=utf-8' --header 'Content-Length: 398' --header 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.183' --header 'Authorization: WECHATPAY2-SHA256-RSA2048 mchid="0000000000",serial_no="0000000000000000000000000000000000000000",timestamp="1690554600",nonce_str="0000000000000000000000000000000",signature="0000000000"' --data-raw '{"mchid":"0000000000","out_trade_no":"20230728223129","appid":"000000000000000000","description":"000000000000000000000000","notify_url":"https:\/\/0000000.0000000.00\/weixin\/pay\/main\/0000000000.000","amount":{"total":1,"currency":"CNY"},"scene_info":{"payer_client_ip":"11.11.111.111","h5_info":{"type":"Wap"}},"attach":"00000000000000000000,00000,000000000000000000000000,6487d1781f0000000000"}'
已经隐去敏感信息(以同样数量 0 代替),正常应该秒返回一个参数不对的 json 回来("message":"解析 Json 出错 (位置: /body):),但是实际服务器会卡很久然后返回:
cURL error 35: OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to api.mch.weixin.qq.com:443
然后发现客户的系统是 alibaba linux release 3.. 无语了
1
milukun OP 截止到上个月 16 号还是好好的,最近几天才发现拉不起微信支付了
排查一顿发现是 php 页面请求这个地址的时候卡住 1 分钟 然后在机器上使用 curl 直接 post 到微信支付下单的地址,就是上面说明的错误。 同样的 curl 命令,拿到任何已有的服务器上执行都是秒出结果 |
2
kapr1k0rn 2023-07-30 10:55:29 +08:00
看看是不是证书更新了
之前有遇到调用企业微信接口突然出错,提示也是 ssl 相关,排查后发现是腾讯刚好更新了证书 |
3
moult 2023-07-30 11:00:36 +08:00 via iPhone
curl -v 查看整个请求过程,看下到哪一步卡住了。
然后直接请求接口网址,不带任何参数看下。 |
5
zoharSoul 2023-07-30 11:05:09 +08:00
还有个可能是你 ip 变了, 微信支付后台上没更新
|
6
milukun OP @zoharSoul 跟 IP 没关系,你看看我给的用例,里面所有的信息都换成 0 了,所以微信直接给了一个参数错误的 json 。而我的服务器是直接连错误都没有,根本没办法和这个地址建立连接。
测试用例你也可以本地 postman 测试看看,正常就是立即返回错误了 |
8
Xusually 2023-07-30 12:00:51 +08:00
curl -vvv 看具体什么错误
|
9
mitx 2023-07-30 15:00:12 +08:00
|
10
milukun OP 解决了,curl 可用了:
服务器配置了 ipv6 ,使用 ipv6 地址访问对方无响应, 手动在 /etc/hosts 里面配置了一下 api.mch.weixin.qq.com 的 ipv4 地址 (阿里的工单,响应速度很快,而且直接给解决问题了 |
11
milukun OP php 上面的支付服务,加一句:
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); 强制使用 ipv4 访问,就 OK 了.... 问题解决 |