签名

微信支付 API v3 通过验证签名来保证请求的真实性和数据的完整性。

请求签名

商户需要使用自身的私钥对 API URL、消息体等关键数据的组合进行 SHA-256 with RSA 签名。请求的签名信息通过 HTTP 头 Authorization 传递, 具体说明请见签名生成指南。没有携带签名或者签名验证不通过的请求, 都不会被执行, 并返回 401 Unauthorized。

应答签名

对于签名验证成功的请求, 微信支付 API v3 会使用微信支付的平台私钥对应答进行签名。签名的信息包含在 HTTP 头部中, 具体说明请见签名验证指南。

  • 请使用微信支付的公钥进行验签, 它包含在微信支付平台证书中
  • 请对携带了签名的应答进行验签
  • 没有携带签名的成功应答(HTTP 状态码为 2xx), 应认为是伪造或被篡改的应答

回调通知签名

当调用商户的接口时, 微信支付会使用微信支付的平台私钥对回调请求进行签名。签名的方法同应答签名的方式一致, 商户必须使用微信支付公钥验证回调的签名。

通知必须验证微信支付签名, 避免被恶意攻击


最后修改 April 12, 2020: 整理文档 (f36b91e)