原因是因为微信证书的有效期是5年,近30天会进行灰色发布所有会导致大部分订单回调没问题,偶尔有些订单会报错:证书序列号错误
解决方法:
先按照下面代码去执行下载新的证书,这时候会下载2个,一个是老的一个是新的证书
//用于证书解密的密钥
private String apiV3key = "";
// 商户号
private static String mchId = "";
// 商户证书序列号
private static String mchSerialNo = "";
// 商户私钥
private static String mchPrivateKeyFilePath = "";
// 微信支付平台证书
private static String wechatpayCertificateFilePath = "";
//下载成功后保存证书的路径
private static String outputFilePath = "";
@Test
public void testCertDownload() {
String[] args = {"-k", apiV3key, "-m", mchId, "-f", mchPrivateKeyFilePath,
"-s", mchSerialNo, "-o", outputFilePath,"-c",wechatpayCertificateFilePath};
System.out.println();
CommandLine.run(new CertificateDownloader(), args);
}
这时候就需要在回调和支付的时候进行判断:
回调的:
支付的: