我在网上看了看,有一个朋友出现的问题和我的一致, 如果你使用的是Struts2框架,建议参考他的内容容 https://lizhongzhen11.github.io/2017/11/14/银联退款问题/ 如果你也使用的是spring 框架,那么请考虑下是不是自己的框架里面把request里的内容修改了。我这个框架就是把里面请求的参数内容修改了,原先的signPubKeyCert数据本来是 -----BEGIN CERTIFICATE----- 但是经过我的框架后就变成了 -BEGIN CERTIFICATE- 因此无论如何调用 X509Certificate x509Cert = CertUtil.genCertificateByStr(strCert); x509Cert 始终为null,自己最后将修改部分的内容修改回去之后,这一步的验证就通过了。
signPubKeyCertValue 是signPubKeyCert对应的请求的值。
String signPubKeyCertValue=request.getParamater("signPubKeyCert");
signPubKeyCertValue=signPubKeyCertValue.replace("-BEGIN CERTIFICATE-", "-----BEGIN CERTIFICATE-----").replace("-END CERTIFICATE-", "-----END CERTIFICATE-----"));
希望能帮到遇到困难的你!
制作:mynameisyaxuan