由于证书有效期限制和交易安全原因,微信支付会不定期的更换平台证书。微信支付提供了一系列接口,帮助商户后台系统实现平滑的证书更换。
1. 接口说明 请求URL: https://apihk.mch.weixin.qq.com/v3/global/certificates
2. 请求参数
3. 返回参数
正常返回 证书序列号
serial_no
string[1,40]
是
证书的序列号
示例值:5157F09EFDC096DE15EBE81A47057A7232F1B8E1
证书启用时间
effective_time
string[1,32]
是
启用证书的时间,时间格式为 RFC3339 。每个平台证书的启用时间是固定的。 示例值:2018-06-08T10:34:56+08:00
证书弃用时间
expire_time
string[1,32]
是
弃用证书的时间,时间格式为 RFC3339 。更换平台证书前,会提前24小时修改老证书的弃用时间,接口返回新老两个平台证书。更换完成后,接口会返回最新的平台证书。 示例值:2018-06-08T10:34:56+08:00
证书信息
encrypt_certificate
object
是
证书信息,详细说明见下文
证书信息 加密证书的算法
algorithm
string[1,32]
是
加密证书的算法,密钥为API KEY, 需要登录商户平台设置
示例值:AEAD_AES_256_GCM
加密证书的随机串
nonce
string[1,12]
是
加密证书的随机串 示
例值:61f9c719728a
加密证书的附加数据
associated_data
string[1,32]
是
固定值: certificate
示例值:certificate
加密后的证书内容
ciphertext
string[1,344]
是
使用API KEY和上述参数,可以解密出平台证书的明文。证书明文为PEM格式。(注意: 更换证书时会出现PEM格式中的证书失效时间与接口返回的证书弃用时间不一致的情况)
示例值:Y1IPF0kyRe+aJ7TK6cw08r1g/agxl16o
下面详细描述证书解密的流程 2、针对“algorithm”中描述的算法(目前为AEAD_AES_256_GCM),取得对应的参数“nonce”和“associated_data”。
3、使用“key”、“nonce”和“associated_data”对数据密文“ciphertext”进行解密(需要先对ciphertext做base64解码,然后再解密),得到证书内容
“AEAD_AES_256_GCM”算法的接口细节,请参考 rfc5116 。
异常返回 返回状态码
code
string[1, 32]
是
错误码,枚举值见错误码列表
示例值:INVALID_REQUEST
返回信息
message
string[1, 256]
是
返回信息,如非空,为错误原因
示例值:参数格式校验错误
详细的错误描述
detail
object
否
当code为PARAM_ERROR时返回,详细说明见下
详细的错误描述 指示错误参数的位置
field
string[1, 256]
是
当错误参数位于请求body的JSON时,填写指向参数的JSON Pointer 当错误参数位于请求的url或者querystring时,填写参数的变量名
示例值:#/properties/payer
错误参数的值
value
string[1, 256]
是
错误参数的值
示例值:1346177081915535577
具体错误原因
issue
string[1, 256]
是
具体错误原因
示例值:与ALLOF schema不符
错误参数的位置
location
string[1, 256]
否
body:错误参数位于请求body的JSON中 url:错误参数位于请求url中 query:错误参数位于请求的querystring中
示例值:body
返回示例 正常示例
1 {
2 "data" : [ {
3 "serial_no" : "5157F09EFDC096DE15EBE81A47057A7232F1B8E1" ,
4 "effective_time " : "2018-06-08T10:34:56+08:00" ,
5 "expire_time " : "2018-12-08T10:34:56+08:00" ,
6 "encrypt_certificate" : {
7 "algorithm" : "AEAD_AES_256_GCM" ,
8 "nonce" : "61f9c719728a" ,
9 "associated_data" : "certificate" ,
10 "ciphertext" : "sRvt… "
11 }
12 } ,
13 {
14 "serial_no" : "50062CE505775F070CAB06E697F1BBD1AD4F4D87" ,
15 "effective_time " : "2018-12-07T10:34:56+08:00" ,
16 "expire_time " : "2020-12-07T10:34:56+08:00" ,
17 "encrypt_certificate" : {
18 "algorithm" : "AEAD_AES_256_GCM" ,
19 "nonce" : "35f9c719727b" ,
20 "associated_data" : "certificate" ,
21 "ciphertext" : "aBvt… "
22 }
23 }
24 ]
25 } 异常示例
1 {
2 "code" : "INVALID_REQUEST" ,
3 "message" : "Parameter format verification error" ,
4 "detail" : {
5 "field" : "#/properties/payer" ,
6 "value" : "1346177081915535577" ,
7 "issue" : "与ALLOF schema不符" ,
8 "location" : "body"
9 }
10 }
4. 错误码 SYSTEM_ERROR
系统错误
系统异常,请再调用发起查询