获取平台证书列表 接口文档“https://wechatpay-api.gitbook.io/wechatpay-api-v3/jie-kou-wen-dang/ping-tai-zheng-shu”中,的注意事项部分有如下描述:
注意事项
如果自行实现验证平台签名逻辑的话,需要注意以下事项:
- 程序实现定期更新平台证书的逻辑,不要硬编码验证应答消息签名的平台证书
- 定期调用该接口,间隔时间小于12 小时
- 加密请求消息中的敏感信息时,使用最新的平台证书(即:证书启用时间较晚的证书)
标红的部分,说加密请求消息中的敏感信息时,使用最新的平台证书(即:证书启用时间较晚的证书)
我在查看wechatpay-apache-httpclient源码的时候,发现CertificatesVerifier类中没有获取最新平台证书的接口,只有一个getValidCertificate 接口,代码如下:
@Override
public X509Certificate getValidCertificate()
{
for (X509Certificate x509Cert : certificates.values())
{
try
{
x509Cert.checkValidity();
return x509Cert;
}
catch (CertificateExpiredException | CertificateNotYetValidException e)
{
continue;
}
}
throw new NoSuchElementException("没有有效的微信支付平台证书");
}
按照我理解,假设一个证书即将就要过期(临界点)了,如果用这个方法获取到的证书加密敏感数据,会不会造成微信支付解密失败?
开发者是否需要重新实现一个获取最新证书的方法,还是getValidCertificate 这个接口是安全的,只要证书是有效的,即使即将过期,微信支付解密也不会失败?
您好,您的问题建议您前往微信支付APIV3文档, 点击右下角‘技术咨询’实时寻求技术帮助。若您的问题得到解决,请回社区晒出解决方案,以帮助更多遇到此问题的人,感谢您的支持~