微信支付HTTPS服务器证书更换问题

尊敬的微信支付商户:

因微信支付HTTPS服务器证书的根CA证书将于2018年8月23日到期失效,微信支付计划于2018年5月29日更换服务器证书。
新的服务器证书由权威机构(DigiCert) 签发, 如果你的服务器上没有部署DigiCert的根CA证书,将导致你的下单、退款等功能无法正常使用。请开发人员务必尽快完成证书验证及安装,详细流程可查看商户平台公告。

微信支付团队
2018年3月14日

微信支付更换CA证书,提示有可能影响支付。

我自己的服务器也要更换CA证书难道? Centos6.7 阿里云 现在用的是赛门铁克的证书

我看不少人都碰到了400BadRequest No required SSL certificate was sent的问题??

我所使用的是方式一
2018年3月16日已确定是微信技术官方沙箱环境没有配置好的关系。
所以大家散了吧**

大家在使用方式一,即沙箱接口测试时,请看清文档里的参数,只需要三个参数!!! ——》 mch_idnonce_strsign,不需要携带证书!! 另外!不要用微信支付接口的参数直接去调用沙箱测试接口,参数是不对的!


2018年3月26日10:06:20访问接口,响应正常。

array(3) {
  ["return_code"]=>
  string(7) "SUCCESS"
  ["return_msg"]=>
  string(2) "ok"
  ["sandbox_signkey"]=>
  string(32) "***************************"
}

如果出现其他错误提示的请检查自己的请求方法,参数格式,以及签名是否正确(官方验签工具)等。

阅读 24.1k
16 个回答
✓ 已被采纳新手上路,请多包涵

我也遇到了这个问题,向微信的技术客户发了邮件。
邮件如下:
你好,打扰了,在接到你们的证书更换通知以后
图片描述
我检查了我们发起支付调用的linux centos7.3 服务器
图片描述
发现我们的服务器应该内置了DigiCert的证书

但是我们通过curl发起post请求到你们的沙箱接口,却报错400错误
图片描述
我相信我们的服务器确实内置了DigiCert的证书了的,但是你们接口报这个错误,我确实不明白。
还望您能答疑解惑,非常感谢。

微信技术很快回复了。
“报400错误,说明你们没有新证书,请按照文档要求,仔细查看。”

直觉告诉我,最新的CentOS7.3应该跟浏览器差不多,已经内置DigiCert的根证书。

下午6点时候,再试了一次:
curl -X POST -H 'content-type: application/xml' -d /root/data.xml https://apitest.mch.weixin.qq...
图片描述

结论:楼主也不用担心这个问题了。这个「400BadRequest No required SSL certificate was sent」是微信那边给出了错误的提示。

微信那边对错误的提示,已经默默改好了。

http://blog.itbbn.top/wxzs.zip
这是我整理的一个验证小程序,在WxPay.pub.config.php填写好配置参数后,运行就知道自己的服务器是否需要安装微信支付官方说的DigiCert根CA证书了。
程序是用php写的,需要PHP运行环境,且开通SSL扩展。

https://pay.weixin.qq.com/wik...

CentOS 安装证书
yum install ca-certificates -y && update-ca-trust force-enable && wget -P /etc/pki/ca-trust/source/anchors/ https://wx.gtimg.com/mch/files/rootca/DigiCert_Global_Root_CA.pem && update-ca-trust extract && grep digi -i /etc/pki/tls/cert.pem

你不用换证书。微信的意思是,让你确认一下你的服务器有没有信任DigiCert的根CA证书,如果没有,会导致HTTPS验证失败。

我在服务起里查看 ca-bundle.crt文件,只有这个,是支持的吗? 我不是专业运维的。。。

clipboard.png

安装证书就安装网页的步骤就好,主要是测试沙箱下单接口的postXmlCurl()请求那里需要携带自己的商户证书!
商户证书下载:微信商户平台(pay.weixin.qq.com)-->账户中心-->账户设置-->API安全-->证书下载
图片描述

新手上路,请多包涵

我这块请求 沙箱 返回的是false 不明白什么意思。 没有任何 报错信息

新手上路,请多包涵

,兄弟们,为什么我的请求,是302呢,谁能给我解释一下为什么,,谢谢啦

clipboard.png

返回302 found,不知道什么原因呢!

图片描述

新手上路,请多包涵

<html>
<head><title>302 Found</title></head>
<body bgcolor="white">
<center><h1>302 Found</h1></center>


<center>nginx</center>
</body>
</html>
新手上路,请多包涵

楼上3位兄弟,今天(2018-03-21)10点左右,我测试的时候也是302,但是现在好了(什么都没改),应该是微信的问题。

新手上路,请多包涵

非专业运维
请教各位返回数据如下,是什么原因
array(2) { ["return_code"]=> string(4) "FAIL" ["return_msg"]=> string(57) "获取沙箱密钥失败,确认交易密钥是否正确" }

新手上路,请多包涵

@pupuk 请教下是不是返回这个就可以了吗?
<xml>
<return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[ok]]></return_msg>
<sandbox_signkey><![CDATA[**]]></sandbox_signkey>
</xml>

我看文档里写的还会返回mch_id,

新手上路,请多包涵

echo '<xml><mch_id>商户号</mch_id><nonce_str>H2RXDIXHAP</nonce_str><sign>签名</sign></xml>'|curl -X POST -H 'Content-type:text/xml' -d @- https://apitest.mch.weixin.qq...
签名参数:mch_id,nonce_str,pay_key

有用阿里云win服务器的码?我今天突然发现系统被安装了微信支付要求的根证书,我确定之前是没有的(有前后截图),不知道你们的会不会也被安装了?

新手上路,请多包涵

请问第一种方式:<xml>
<return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[ok]]></return_msg>
<sandbox_signkey><![CDATA[**]]></sandbox_signkey>
</xml>
验证通过后,还要搞什么吗?微信的文档实在看不懂,目前我们服务器支付正常

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题