微信支付计划更换服务器证书:调用微信支付沙箱环境的API验证

2018-04-03  本文已影响303人  AmeeLove

验证证书

由于SSL/TLS协议有多种实现版本(OpenSSL, NSS, GnuTLS, JSSE, Schannel等),且在不同实现版本和操作系统中管理权威机构根CA证书的策略不一样,应用程序使用SSL/TLS的方法也存在差异。

为了确保微信支付更换服务证书后,不影响商户的正常交易。下面提供了两种方式供商户提前验证客户端是否支持了DigiCert的证书。

如你的验证结果为无影响,可忽略安装证书部分的内容。

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

微信支付已经将新的服务器证书部署到了沙箱域名(apitest.mch.weixin.qq.com), 由于服务器证书是支持多域名的,API域名(api.mch.weixin.qq.com)与沙箱域名(apitest.mch.weixin.qq.com)使用的是同一张证书。如果使用沙箱环境的接口能调用成功,通常表明客户端支持微信支付新的服务器证书。

API接口调用说明:

| 请求Url | https://apitest.mch.weixin.qq.com/sandboxnew/pay/getsignkey |
| 是否需要证书 | 否 |
| 请求方式 | POST |
| 请求格式 | XML |

请求参数:

| 字段名 | 字段 | 必填 | 示例值 | 类型 | 说明 |
| 商户号 | mch_id | 是 | 1305638280 | String(32) | 微信支付分配的微信商户号 |
| 随机字符串 | nonce_str | 是 | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | String(32) | 随机字符串,不长于32位 |
| 签名 | sign | 是 | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | String(32) | 签名结果,详见签名生成算法 |

返回参数:

| 字段名 | 字段 | 必填 | 示例值 | 类型 | 说明 |
| 返回状态码 | return_code | 是 | SUCCESS | String(16) | SUCCESS/FAIL |
| 返回信息 | return_msg | 否 | 签名失败 | String(128) | 返回信息,如非空,为错误原因 ,签名失败 ,参数格式校验错误 |

以下字段在return_code 为SUCCESS的时有返回。

| 字段名 | 字段 | 必填 | 示例值 | 类型 | 说明 |
| 商户号 | mch_id | 是 | 1305638280 | String(32) | 微信支付分配的微信商户号 |
| 沙箱密钥 | sandbox_signkey | 否 | 013467007045764 | String(32) | 返回的沙箱密钥 |

当返回结果return_code为“SUCCESS”,说明当前客服端已支持DigCert证书,反之则需要根据安装证书部分的指引,升级证书。

以上都是官方文档

生成签名

https://pay.weixin.qq.com/wiki/tools/signverify/

image.png

登录服务器执行

echo '<xml><mch_id>商户名</mch_id><nonce_str>ibuaiVcKdpRxkhJA</nonce_str><sign>877DD314109945423A7348FA6CD320D5</sign></xml>'|curl -X POST -H 'Content-type:text/xml' -d @- https://apitest.mch.weixin.qq.com/sandboxnew/pay/getsignkey

结果

[oper@localhost ~]$ echo '<xml><mch_id>商户名</mch_id><nonce_str>ibuaiVcKdpRxkhJA</nonce_str><sign>3B08D7B9E88FD851AEC4F3CCD369387E</sign></xml>'|curl -X POST -H 'Content-type:text/xml' -d @- https://apitest.mch.weixin.qq.com/sandboxnew/pay/getsignkey
<xml>
  <return_code><![CDATA[SUCCESS]]></return_code>
  <return_msg><![CDATA[ok]]></return_msg>
  <sandbox_signkey><![CDATA[1e2b64396824957d25838f4afe8b41f5]]></sandbox_signkey>
</xml>[oper@localhost ~]$ 

image.png

表示商户服务器支持新的证书。

上一篇下一篇

猜你喜欢

热点阅读