问题记录描述:对接微信退款的时候报错DerInputStream.getLength(): lengthTag=111, too big,退款失败。网上查找资料该异常是由于证书加载不正确导致,要不就是证书过期,要不就是有人修改了证书内容,排除了第一种情况,那就是证书内容被修改过了。在本地文件查询发现每次项目经过maven打包编译后,即使没有修改过微信支付退款的证书,证书文件都被编译更新过了,
原来是pom.xml文件中的maven-resources-plugin作怪。
解决方案是在pom.xml文件中,增加以下配置,过滤证书文件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
<!-- 过滤后缀为pem、pfx的证书文件 -->
<nonFilteredFileExtensions>
<nonFilteredFileExtension>p12</nonFilteredFileExtension>
<nonFilteredFileExtension>pem</nonFilteredFileExtension>
<nonFilteredFileExtension>pfx</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
加这段代码是为了下次打包编译是过滤掉这些证书文件,不再自动篡改。加完之后需要把之前被篡改的证书文件替换回原来正确的证书文件。