0 问题
在做网站微信二维码扫码支付,微信支付结果查询时提示java.security.InvalidKeyException: Illegal key size
1 代码
// 查询微信支付结果
Config config = new RSAAutoCertificateConfig.Builder()
.merchantId(wechatConfig.getMchId())
.privateKeyFromPath(wechatConfig.getKeyPath())
.merchantSerialNumber(wechatConfig.getMchSerialNo())
.apiV3Key(wechatConfig.getApiKey())
.build();
NativePayService nativePayService = new NativePayService.Builder().config(config).build();
QueryOrderByOutTradeNoRequest queryRequest = new QueryOrderByOutTradeNoRequest();
queryRequest.setMchid(wechatConfig.getMchId());
queryRequest.setOutTradeNo(model.getOutTradeNo());
Transaction transaction = nativePayService.queryOrderByOutTradeNo(queryRequest);
2 原因
在构造RSAAutoCertificateConfig对象时报错,问题原因是:
Java 默认的 JCE(Java Cryptography Extension)权限策略文件限制了加密算法的最大密钥长度(默认仅支持 128 位),而微信支付的 RSA 商户证书是 2048 位,超出了默认限制,触发该异常
3 解决
0.需替换 JDK 内置的「无限制权限策略文件」
1.下载文件
https://www.oracle.com/java/technologies/javase-jce8-downloads.html
2.替换文件
① jdk

② jre

412

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



