最近对接微信认证,使用到了wechatpay api v3
相较于之前微信支付API,主要区别是:
- 遵循统一的Restful的设计风格
- 使用JSON作为数据交互的格式,不再使用XML
- 使用基于非对称密钥的SHA256-RSA的数字签名算法,不再使用MD5或HMAC-SHA256
- 涉及资金回滚的接口,不再要求HTTPS客户端证书
- 使用AES-256-GCM,对回调中的关键信息进行加密保护
坑1.请求报400
- 解决办法:仔细看微信的文档,即使是业务错误也会返回400:bad request
使用restTemplate发起的请求,捕获RestClientResponseException打印responseBody即可看到具体错误原因
坑2.提示缺少平台证书序列号
- 这个提示让我一直在找head里的Authorization里面的serial_no,实际是不对的,因为设计敏感字段加密,所以需要在head里面设置Wechatpay-Serial
- 关于Wechatpay-Serial:声明加密使用的平台证书
某些情况下,微信支付会更新平台证书。这时,商户有多个微信支付平台证书可以用于加密。为了保证解密顺利,商户发起请求的HTTP头部中应包括证书序列号,以声明加密所用的密钥对和证书。
商户上送敏感信息时使用微信支付平台公钥加密,证书序列号包含在请求HTTP头部的Wechatpay-Serial
坑3:上传图片
- 上传图片一直返回失败详情看另外一篇博文