帝国cms对接微信官方支付v3应答的微信支付签名验证失败解决办法

 

 

本身我帝国cms用的PHP版本是5.6比较老,由于php版本5.6,比较旧的版本,按照提示安装的libsodium-php,扩展成功。

运行代码后还是失败。

 

继续折腾,

PHP有专门的命令处理,不需要使用JAVA环境,官方库地址:https://github.com/wechatpay-apiv3/wechatpay-guzzle-middleware/tree/master/tool
注意一下:第一次获取时候,命令的最后一个参数:-c不需要,否则会出现这个签名验证失败问题问题!

> php tool/CertificateDownloader.php
Usage: 微信支付平台证书下载工具 [-hV] [-c=<wechatpayCertificatePath>]
                    -f=<privateKeyFilePath> -k=<apiV3key> -m=<merchantId>
                    -o=<outputFilePath> -s=<serialNo>
  -m, --mchid=<merchantId>   商户号
  -s, --serialno=<serialNo>  商户证书的序列号
  -f, --privatekey=<privateKeyFilePath>
                             商户的私钥文件
  -k, --key=<apiV3key>       ApiV3Key
  -c, --wechatpay-cert=<wechatpayCertificatePath>
                             微信支付平台证书,验证签名
  -o, --output=<outputFilePath>
                             下载成功后保存证书的路径
  -V, --version              Print version information and exit.
  -h, --help                 Show this help message and exit.

 

完整命令示例:

php tool/CertificateDownloader.php -k ${apiV3key} -m ${mchId} -f ${mchPrivateKeyFilePath} -s ${mchSerialNo} -o ${outputFilePath} -c ${wechatpayCertificateFilePath}

我的命令参考:

php tool/CertificateDownloader.php -k 65lkUfUb6A4bCo84yqeGkYKs7ua5bC9N -m 1609486679 -f /www/wwwroot/a.xiaorob.com/public/e/extend/twoir/config/cert/wechat/apiclient_key.pem -s 4B610484999BE8CC028735C39DA37E013C0D0AAA -o /www/wwwroot/a.xiaorob.com/public/e/extend/twoir/config/cert/wechat /www/wwwroot/a.xiaorob.com/public/e/extend/twoir/config/cert/wechat/apiclient_cert.pem

最后还是不行,那干脆一不做二不休,PHP直接切换到7.3,运行命令,搞定!

命令运行路径

/www/wwwroot/a.xiaorob.com/public/e/extend/twoir/vendor/wechatpay/wechatpay-guzzle-middleware