有时,微信支付会报错如下
应答的微信支付签名验证失败 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