微信支付 V3 接口梳理:密钥与安全

微信支付 V3 接口涉及到多个密钥,以及安全概念。这里帮大家做了一个梳理。

V3 接口涉及的密钥概念

参考:私钥和证书

商户 API 证书

用途:用于调用所有 V3 接口;

含义:包含商户号,公司名称,商户公钥信息

获取方法:有财务老师在微信商户后台申请。【通过微信提供的工具,填入商户号,公司名称等进行申请】

商户 API 私钥

用途:签名

获取方法:在申请商户 API 证书时,申请工具会生成该私钥。

APIv3 密钥

用途:特定接口(通知,平台证书下载)结果信息中,关键敏感信息的解密

获取方法:商户自定义(32字节),然后配置到商户后台。

注意:该密钥与商户API私钥没有任何关系,设置该密钥也不会导致商户API私钥失效。

微信支付平台证书

用途:响应和通知的验签,敏感信息加密

注意:由于微信存在多个平台证书,我们需要根据序列号,采取对应证书内的公钥来验签

含义:包含微信支付平台的身份信息,商户公钥信息

获取方法:调用接口

主要安全流程

签名

调用微信支付平台v3 API 时,需要使用商户 API 私钥对请求报文进行 SHA-256 with RSA 签名。【签名信息存放于头中】

参考:如何生成请求签名

验签

微信支付平台会对其响应报文,以及通知报文进行 SHA-256 with RSA 签名。作为商户,需要使用微信支付平台证书内的公钥,对签名进行验签。

参考:如何验证签名

敏感信息加解密

商户请求微信:商户使用微信支付平台证书公钥,对敏感信息进行 RSA 公钥加密。

微信返回结果:商户使用商户 API 私钥,对响应的敏感信息密文进行 RSA 解密。

参考:如何加解密敏感信息

平台证书与通知报文解密

针对两个特殊场景【微信平台证书获取接口】,【通知】:我们使用 APIv3 密钥基于 AES-256-GCM 做对称加解密。

参考:如何解密证书和回调报文

国密

为了支持国家信息安全的号召,微信是可以提供支持国密SM2/3/4的v3接口交互的。商户可联系微信技术支持申请。

参考:国家商用密码简介

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容