URL certificateUrl = WeChatPay.class.getClassLoader().getResource("wechat/apiclient_cert.pem");
File certificateFile = new File(certificateUrl.getPath());
X509Certificate certificate = getCertificate(certificateFile.getPath());
log.info("certificate :{}", JSONObject.toJSONString(certificate));
BigInteger serialNumber = certificate.getSerialNumber();
String n16 = serialNumber.toString(16);
log.info("buildHttpClient -> merchantSerialNumber:{},serialNumber:{},n16:{}",merchantSerialNumber,serialNumber,n16);
debug打印出来的是16进制,带有a-f的,而log输出的没有带a-f的,如果是,加上
String n16 = serialNumber.toString(16);
就会转成16进制,与debug看到的一样。
其他的数据不一致,一般也是由数据精度与进制等问题导致
这篇博客探讨了在Java环境中处理微信支付证书的问题,包括加载证书文件、获取证书序列号,并将序列号转换为16进制字符串。文章强调了数据精度和进制转换在调试过程中可能导致的不一致问题,并提供了相应的解决方案。
7261

被折叠的 条评论
为什么被折叠?



