退款的时候 出现
java.io.IOException: Short read of DER length
at sun.security.util.DerInputStream.getLength(DerInputStream.java:582)
at sun.security.util.DerValue.init(DerValue.java:391)
at sun.security.util.DerValue.<init>(DerValue.java:332)
at sun.security.util.DerValue.<init>(DerValue.java:345)
at sun.security.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:1938)
at java.security.KeyStore.load(KeyStore.java:1445)
at com.github.wxpay.sdk.WXPay.requestWithCert(WXPay.java:182)
at com.github.wxpay.sdk.WXPay.refund(WXPay.java:485)
at com.github.wxpay.sdk.WXPay.refund(WXPay.java:463)
1、参考解决方案:
需要替换jre\lib\security目录下的两个jar包,US_export_policy.jar和local_policy.jar,从Oracle官方网站查找jce_policy-8.zip直接点击文中附件(包含了JDK1.6,JDK1.7,JDK1.8),替换本地的jre\lib\security目录下这两个JAR包
2、检查证书是否正确
证书文件没问题,因为重启后,第一次可以退款。
第2次执行退款方法就失败了
请求读取证书时,每次都重新读取,重新获取流,就不会出现这异常了
我尝试了用这种替换jre这种方法,还是不行