微信支付的证书问题
本来聚合支付用的好好的,因为一些政策变动聚合支付审核条件变得繁琐苛刻,于是打算直接对接微信文档来支付。几年前接的微信还是V2版本整体比较简单,现在的V3接口用了RSA证书加密模式。跟着文档去分别下载了「商户API私钥」「微信支付平台证书」,然后用命令 openssl x509 -in 证书路径.pem -noout -serial 获取到了证书编号。根据github上提供的微信phpSDK样例做了尝试发现一直包证书问题The `certs(xxxxxxxxxxxxx)` contains the merchant's certificate serial number(xxxxxxxxxxxxx) which is not allowed here.
<img src="https://product.liyiru.top/uploads/4c8bcfbdb0dccbd954cbe4bb84a4f4dc.png"/>
然后发现此证书非彼证书,apiclient_cert.pem这个证书不能直接使用,而是要手动下载一个平台证书:
<code>
composer exec CertificateDownloader.php -- -k ${商户后台自己填的32位api秘钥} -m ${商户id} -f ${本地私钥地址} -s ${证书编号} -o ${输出的证书文件名}
</code>
我发现其实vendor/bin目录下已经有CertificateDownloader.php文件了,所以直接 php vendor/bin/CertificateDownloader.php 后面的参数也可以。换完证书就能正常请求了,可惜因为商户号很久没使用被停了,返回了"code":"NO_AUTH","message":"此商家的收款功能已被限制,暂无法支付。
更多>>