微信支付申请退款:java.io.IOException: Short read of DER length

项目里微信支付使用的wxpay-sdk,在调用微信退款方法,报错:

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.(DerValue.java:332)
at sun.security.util.DerValue.(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.WXPayRequest.requestOnce(WXPayRequest.java:55)
at com.github.wxpay.sdk.WXPayRequest.request(WXPayRequest.java:127)
at com.github.wxpay.sdk.WXPayRequest.requestWithCert(WXPayRequest.java:256)
at com.github.wxpay.sdk.WXPay.requestWithCert(WXPay.java:177)
at com.github.wxpay.sdk.WXPay.refund(WXPay.java:502)
at com.github.wxpay.sdk.WXPay.refund(WXPay.java:480)

问题是在开发测试环境,都没有重现这个问题,于是网上搜索一番,找到如下答案:

  • 因为某些国家的进口管制限制,Java发布的运行环境包中的加解密有一定的限制。比如默认不允许256位密钥的AES加解密,解决方法就是修改策略文件。
  • 下载与JDK或JRE对应版本的jce文件包,如jdk为1.8,所以下载 jce_policy-8.zip下载地址
  • 下载解压后,把jar文件上传到需要安装jce机器上JDK或JRE的security目录下,覆盖源文件即可。
    JDK:将两个jar文件放到%JDK_HOME%\jre\lib\security下
    JRE:将两个jar文件放到%JRE_HOME%\lib\security下
    覆盖之前,记得备份源文件,以防万一。

网上基本上都是这样的说法,正当我准备去oracle官网下载时,发现我自己服务器上jre下已经有两个版本的jar包了,所以就直接将 unlimited 包下jar包复制到了 security 下。
问题解决了。

但是,我也看到网上有人说这个方法不管用,以后碰到再说吧~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值