微信支付接口常用参数及证书区分
注意:服务商模式下,均是使用服务商的以下信息
1. 证书
1.1商户api证书(v2和v3接口都需要使用)
1.1.1获取方式:
https://kf.qq.com/faq/161222NneAJf161222U7fARv.html (商户api证书
),里面介绍了如何获取商户证书的详细步骤
1.1.2作用:
v3接口:
使用商户api证书私钥用于生成签名(签名的官方文档: https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay4_0.shtml ) ,一共三个证书文件,一个说明文件(建议阅读一下),商户api证书私钥是apiclient_key.pem这个文件(代码加载,参考官方文档: https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay7_1.shtml [图片]),剩下的两个证书文件目前我个人是没有发现在v3接口需要使用,咨询技术支持也是这样回复的。
v2接口:
v2接口需要使用证书的接口在文档会有特别提示:
[图片]
一般开发语言使用的p12证书,详细信息参考链接:https://pay.weixin.qq.com/wiki/doc/api/jsapi_sl.php?chapter=4_3
[图片]
注意:
1.php使用方法参考文档
[图片]
2. .NET环境开发,请确认Framework版本大于2.0,必须在操作系统上双击安装证书apiclient_cert.p12后才能被正常调用。
[图片]
3.apiclient_cert.p12是商户证书文件,除PHP外的开发均使用此证书文件。官方sdk包含了示例代码,这里展示的是java语言的[图片]
1.1.3如何查看 证书使用是否正确(v2和v3接口通用检查方法):
到证书解析的网站解析( https://myssl.com/cert_decode.html ) apiclient_cert.pem这个文件,查看它的证书序列号,对比商户平台的证书序列号。(下载证书的时候这三个文件一般放在一起,根据apiclient_cert.pem文件判断使用的是否是正确的
1.1.4商户api证书序列号查看方式及作用(v3接口)
查看:管理员帐号登录微信商户管理后台,在API安全里面点击查看证书可以获取。
作用:构建签名,用于声明所使用的证书
1.2微信支付平台证书(v3接口使用)
1.2.1获取方式
1:接口获取(官方文档: https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay5_1.shtml ,代码(java): https://github.com/wechatpay-apiv3/wechatpay-apache-httpclient[图片]
2:官方工具:( https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay6_0.shtml )[图片]
3:postman(https://github.com/wechatpay-apiv3/wechatpay-postman-script):配置好可以直接下载,然后解密(解密参考:https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay4_2.shtml[图片]即可使用(推荐在测试的时候使用,顺便检查了签名的参数是否正确)
1.2.2作用:
1、用户回调信息的验签(验签文档: https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay4_1.shtml ),验签的方法很多,这里就不提供了,【重要】:[图片]这个顺序不能改变,顺序改变会出现验签失败,接口返回的来的顺序不要修改,可能某些方法会修改顺序(亲测加咨询)。
2、敏感信息加解密([https://pay.weixin.qq.com/wiki/doc/apiv3_partner/wechatpay/wechatpay4_3.shtml])
1.2.3检查微信支付平台证书使用是否正确:
1:检查回调信息返回的微信支付平台证书序列号和商户现有的微信支付平台证书序列号是否一致,如果不一致,请重新下载
2:如果重新下载的微信支付平台证书序列号跟当前回调的微信支付平台证书序列号不一致,则应该是下载的微信支付平台证书的商户号不是当前回调订单的商户
1.2.4微信支付平台证书序列号获取方式及作用
获取:跟微信支付平台证书获取方式一致(对应字段:serial_no)
作用:1.回调参数返回给商户,用于验证回到的安全性(也可以用来区分是哪一个商户的回调,因为每个商户的微信支付平台证书序列号不一致)
2.用户敏感信息加密时,当作加密标识
注意:回调返回的和请求接口时返回的证书序列号是微信支付平台证书序列号,不是商户API证书序列号,二者不一样
2. apiv3密钥(v3接口使用)
2.1如何设置:
https://kf.qq.com/faq/180830E36vyQ180830AZFZvu.html (文档说明了如何设置,这里就不提供商户平台的截图了)
2.2作用:
v3接口下,商户对支付回调的解密(咨询技术支持说逻辑是发给我们的回调通知是使用我们商户平台设置的apiv3密钥进行加密的,所以也是使用它来解密,解密失败有三种可能:1.apiv3密钥错误,跟当时设置的不一样2.使用的apiv3的密钥不是当前订单对应商户号下设置的apiv3密钥)(官方解密: https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay4_2.shtml ,亲测报错AEADBadTagException: Tag mismatch! 检查就是apiv3密钥错误导致
)3.解密的参数不完整,请检查回调参数的完整性
3.apiv2密钥(v2接口使用)
3.1如何设置:
https://kf.qq.com/faq/180830UVRZR7180830Ij6ZZz.html (文档说明了如何设置,这里就不提供商户平台的截图了)
3.2作用:
商户调用v2接口时,使用api密钥进行签名,或者对v2接口返回的回调信息进行验签和解密(部分回调需要解密,比如退款回调)
注意:apiv3密钥和apiv2密钥不是同一个参数,作用不相同,二者独立设置,且互不影响