微信支付v3版报错“应答的微信支付签名验证失败”的解决方法

{{ time }}

有时,微信支付会报错如下

应答的微信支付签名验证失败 failed,resp code = 200 return body ...

failed还200。

这可能是因为使用的证书不是“平台证书”

apiclient_key.pem是v3版要用到的私钥,但是apiclient_cert.pem并不是v3版用的证书。

v3版要单独下载一个“平台证书”。

下载平台证书的步骤如下:

Step1 设置操作密码(已设置则略过)

登录“微信支付商户平台” -> 账户中心 -> 安全中心 -> 设置操作密码(如下图)-> 记好密码别忘了

Step2 设置并记录APIv3版密钥(已有则略过)

微信支付商户平台 -> 账户中心 -> API安全 -> APIv3密钥 -> 找个本记上这个密钥,如下图

Step3 记录“商户证书序列号”

在商户平台 -> 账户中心 -> API安全 -> API证书 ->查看证书(如下图)

Step4 找台安全的电脑A,安装Java环境(已有则略过)

Step5 在电脑A下载Certificate Downloader。需要的是CertificateDownloader-1.1.jar这样的文件。

Step6 在电脑A建立一个文件夹B,里面放上CertificateDownloader-1.1.jar和apiclient_key.pem

Step7 CMD下进入文件夹B,并运行如下指令以下载“平台证书”

java -jar CertificateDownloader-1.1.jar -f .\apiclient_key.pem -k APIv3版密钥 -m 商户号 -o .\下载目录名 -s 商户证书序列号

然后电脑里就会多一个文件夹,里面就有“平台证书”。

用平台证书代替apiclient_cert.pem,问题即解决。

参考文献:

https://developers.weixin.qq.com/community/pay/doc/000e4a0d5dc1486acc19c6fd15bc00

0.076701s