@Bean
public Verifier getVerifier() {
//获取商户私钥
PrivateKey privateKey = getPrivateKey(properties.getPrivateKeyPath());
//微信证书校验器
Verifier verifier;
//获取证书管理器实例
CertificatesManager certificatesManager = CertificatesManager.getInstance();
//私钥签名对象(加密)
PrivateKeySigner privateKeySigner = new PrivateKeySigner(properties.getSerialNumber(), privateKey);
//身份认证对象(解密)
WechatPay2Credentials wechatPay2Credentials = new WechatPay2Credentials(properties.getMchId(), privateKeySigner);
try {
//向证书管理器增加需要自动更新平台证书的商户信息(默认时间间隔:24小时)
certificatesManager.putMerchant(
properties.getMchId(),
wechatPay2Credentials,
properties.getApiV3Key().getBytes(StandardCharsets.UTF_8));
} catch (IOException | GeneralSecurityException | HttpCodeException e) {
e.printStackTrace();
throw new ServiceException( "获取签名验证器失败"+e.getMessage());
}
//从证书管理器中获取verifier
try {
verifier = certificatesManager.getVerifier(properties.getMchId());
} catch (NotFoundException e) {
throw new RuntimeException(e);
}
return verifier;
}
CertificatesManager - [downloadAndUpdateCert,276] - Auto update cert failed, statusCode = 401, body = {"code":"SIGN_ERROR","detail":{"detail":{"issue":"sign not match"},"field":"signature","location":"authorization","sign_information":{"method":"GET","sign_message_length":66,"truncated_sign_message":"GET\n/v3/certificates\n1766990288\n3fF4gBvk4oc50LmlDzTAUzOkLrD2eP8d\n\n","url":"/v3/certificates"}},"message":"错误的签名,验签失败"}
com.wechat.pay.contrib.apache.httpclient.exception.HttpCodeException: 下载平台证书返回状态码异常,状态码为:401
at com.wechat.pay.contrib.apache.httpclient.cert.CertificatesManager.downloadAndUpdateCert(CertificatesManager.java:277)
at com.wechat.pay.contrib.apache.httpclient.cert.CertificatesManager.initCertificates(CertificatesManager.java:295)
at com.wechat.pay.contrib.apache.httpclient.cert.CertificatesManager.putMerchant(CertificatesManager.java:152)
at com.yooyi.pay.config.WxPayConfig.getVerifier(WxPayConfig.java:65)
at com.yooyi.pay.config.WxPayConfig$$EnhancerBySpringCGLIB$$2f872708.CGLIB$getVerifier$5(<generated>)
at com.yooyi.pay.config.WxPayConfig$$EnhancerBySpringCGLIB$$2f872708$$FastClassBySpringCGLIB$$52c97284.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244)
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331)
按照AI开发助手,检查了相关的证书,密钥,都是正确的

这个接口报错只有两种原因,一个是私钥不对,一个是签名计算不对
为什么支付还要证书吗,我记得是不需要证书的啊,退款才要证书