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

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

处理如下:

1、在网上查了一些资料,分析得知一般都系统都是不需要修改什么的、因为一般linux环境内置了该证书什,但是毕竟涉及到支付环节需要谨慎,通过查看微信官网(https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=23_4)找到了一些官方的解决方案,分为两种

方式一:调用微信支付沙箱环境的API接口验证

方式二:绑定HOST,请求已部署新证书的微信支付API服务器

在这里我采用的是第一种方式、调用微信支付沙箱环境的API接口验证,在代码中生成微信要求的请求参数拼装成xml,在这里注意只能传递要求的三个参数(mch_idnonce_strsign),多了会报错。当返回结果return_code为“SUCCESS”,说明当前客服端已支持DigCert证书,反之则需要根据安装证书部分的指引,升级证书。

具体的测试如下:

输出参数为=======================

<xml><mch_id>自己的商户号</mch_id><nonce_str>随机字符串</nonce_str><sign>签名</sign></xml>

返回参数为=======================
<xml>
  <return_code><![CDATA[SUCCESS]]></return_code>
  <return_msg><![CDATA[ok]]></return_msg>
  <sandbox_signkey><![CDATA[返回签名]]></sandbox_signkey>

</xml>

以上参数可以再系统中拼装出来,去除掉多余的参数即可。

然后再服务器上通过curl命令调用微信沙箱域名

echo '<xml><mch_id>自己的商户号</mch_id><nonce_str>随机字符串</nonce_str><sign>签名</sign></xml>'|curl -X POST -H 'Content-type:text/xml' -d @- https://apitest.mch.weixin.qq.com/sandboxnew/pay/getsignkey

返回结果为SUCCESS则为成功,如下图所示。如果没有成功,可以根据微信官网说明的步骤去升级安装证书。

顺带复习了一下curl 参数的用法

-H/--header <line>自定义头信息传递给服务器
-X/--request [GET|POST|PUT|DELETE|…]  使用指定的http method發出 http request
-H/--header                         设定request里的header
-i/--include                          展示response的header
-d/--data                             设定 http parameters
-v/--verbose                         输出比较多的信息
-u/--user                             使用者账号、密码

-b/--cookie                           cookie 

以上仅为个人理解,转载请注明出处 https://blog.csdn.net/qq_20124743/article/details/79709433



阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页