商家转账回调报错,版本4.7.4B #3545
Description
简要描述
商家转账回调的接口报错
模块版本情况
- WxJava 模块名: weixin-java-pay
- WxJava 版本号: 4.7.4B
详细描述
4.7.3B运行正常,升级到v4.7.4B报错,排查原因发现新版本代码调整了WxPayConfig中的getVerifier()方法,其中Verifier:certificatesVerifier的初始化判定逻辑是
“if (this.getPrivateCertPath() != null && this.getPrivateKeyPath() != null) {” 这样存在不是通过服务器文件初始化的方式,这两个属性为空,导致Verifier空指针,是否调整为 “if (this.getPrivateCertContent() != null && this.getPrivateKeyContent() != null) {” 更为合适
日志
java.lang.NullPointerException: Cannot invoke "com.github.binarywang.wxpay.v3.auth.Verifier.verify(String, byte[], String)" because the return value of "com.github.binarywang.wxpay.config.WxPayConfig.getVerifier()" is null
at com.github.binarywang.wxpay.service.impl.BaseWxPayServiceImpl.verifyNotifySign(BaseWxPayServiceImpl.java:362)
at com.github.binarywang.wxpay.service.impl.BaseWxPayServiceImpl.baseParseOrderNotifyV3Result(BaseWxPayServiceImpl.java:378)
at com.github.binarywang.wxpay.service.impl.TransferServiceImpl.parseTransferBillsNotifyResult(TransferServiceImpl.java:125)
at com.liduoma.lmp.core.goods.service.WxPayMerchantTransferService.transferBillsNotify(WxPayMerchantTransferService.java:90)
日志请写于此处
Activity
binarywang commentedon Apr 8, 2025
@SynchPj 麻烦确认下! 谢谢
SynchPj commentedon Apr 10, 2025
是单独使用的公钥吗
binarywang commentedon Apr 10, 2025
#3547 @SynchPj 看下这个PR是否解决此问题?
liuyn001 commentedon Apr 10, 2025
通过解析p12文件 直接设置 PrivateCertContent PrivateKeyContent属性
SynchPj commentedon Apr 10, 2025
好的,我看看
TamakoT commentedon Apr 11, 2025
我遇到了同样的问题,debug也是找到了WxPayConfig#getVerifier方法,这里应该先判断publicKey是不是空,不为空直接使用publickKey,而不是先尝试去获取平台证书,新开通的商户就没有平台证书,新版商户直接就提示404没有平台证书
我看4.7.0版本的判断逻辑是这么写的:
到了4.7.4B新版本变成这样了:
binarywang commentedon Apr 11, 2025
欢迎基于#3547 提供你的代码,谢谢