Skip to content

fix: 证书使用 String、Content 格式时,验证器未正确初始化;新商户号无平台证书,初始化验证器抛出异常,导致v3请求构造异常 #3547

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Apr 14, 2025

Conversation

holylcd
Copy link
Contributor

@holylcd holylcd commented Apr 10, 2025

fix: 证书使用 String、Content 格式时,验证器未正确初始化

fix: 新商户号无平台证书,初始化验证器抛出异常,导致v3请求构造异常

  • 新商户号无平台证书,有公钥,已验证
  • 老商户号有平台证书,未开通公钥,已验证
  • 老商户号有平台证书,开通公钥,没条件验证,沿用旧逻辑

@binarywang binarywang linked an issue Apr 10, 2025 that may be closed by this pull request
@holylcd
Copy link
Contributor Author

holylcd commented Apr 11, 2025

可以先不合并

这样写,只能修复用v2接口的初始化,v3 还是有问题

我觉得这样更合适,优先初始化v3,否则才初始化v2

image

@holylcd
Copy link
Contributor Author

holylcd commented Apr 11, 2025

还得捕获异常,微信 api 会报错

@binarywang
Copy link
Owner

那你提交新的代码即可

新商户号无平台证书,有公钥,已验证
老商户号有平台证书,未开通公钥,已验证
老商户号有平台证书,开通公钥,未验证,沿用旧逻辑
@holylcd holylcd changed the title fix: 证书使用 String、Content 格式时,验证器未正确初始化 fix: 证书使用 String、Content 格式时,验证器未正确初始化;新商户号无平台证书,初始化验证器抛出异常,导致v3请求构造异常 Apr 11, 2025
@holylcd
Copy link
Contributor Author

holylcd commented Apr 11, 2025

已提交新代码,有问题@我

@binarywang binarywang merged commit 89280ab into binarywang:develop Apr 14, 2025
@binarywang binarywang added this to the 4.7.5 milestone Apr 14, 2025
@Molzx
Copy link
Contributor

Molzx commented May 7, 2025

可以先不合并

这样写,只能修复用v2接口的初始化,v3 还是有问题

我觉得这样更合适,优先初始化v3,否则才初始化v2

image

这里是不是有问题?AutoUpdateCertificatesVerifier创建的时候会自动下载平台证书,导致自动下载平台证书的流量一直没有切换到公钥模式,应答使用公钥比例达不到100%?
image

@holylcd
Copy link
Contributor Author

holylcd commented May 7, 2025

提交的代码,确实是优先使用平台证书,然后使用公钥。
我看公钥验签器的实现,用到平台证书验签器,就沿用了旧逻辑。
image
@Molzx

我没有平台证书切换公钥的商户号,优先用公钥验签器,没法测试造成的影响。

商户号从平台证书切换公钥,使用公钥比例需要100%,才可以切换吗?

@Molzx
Copy link
Contributor

Molzx commented May 10, 2025

提交的代码,确实是优先使用平台证书,然后使用公钥。 我看公钥验签器的实现,用到平台证书验签器,就沿用了旧逻辑。 image @Molzx

我没有平台证书切换公钥的商户号,优先用公钥验签器,没法测试造成的影响。

商户号从平台证书切换公钥,使用公钥比例需要100%,才可以切换吗?

切换公钥这里有两个比例,一个是回调使用公钥比例,一个是应答使用公钥比例。如我上图所示。需要这两个比例都达到100%的时候,才可以废弃平台证书,完全切换到公钥。

现在的代码适合“回调使用公钥比例”不是100%的时候,“回调使用公钥比例”不是100%的时候,会同时存在平台证书和公钥的使用,这一块的代码是没有问题的,是还需要平台证书的。

当“回调使用公钥比例”达到100%的时候,这个时候其实是不再需要平台证书的处理了,只需要关注“应答使用公钥比例”,而
应答使用公钥比例=近7天用微信支付公钥调接口次数/近7天v3接口总调用次数。
我看代码平台证书验签器,里面是会默认一个小时更新一次平台证书,这就导致了获取平台证书这一个v3接口一直在调用,而且还没有使用公钥,从而导致“应答使用公钥比例”这个比例卡住了,一直都没有变化。

我试过把平台证书验签器这一块代码直接注释掉,实际表示是正常的,所以这一块可能要加个开关配置或者怎么调整的,当“回调使用公钥比例”达到100%的时候,可以手动设置仅使用公钥验签啥的。

@holylcd
Copy link
Contributor Author

holylcd commented May 12, 2025

如果配置了公钥,优先使用公钥。

对于平台证书切公钥,这方案可行吗

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

商家转账回调报错,版本4.7.4B
3 participants