微信支付专题 —— 获取商户私钥时获取的是一串地址,没有获取具体的私钥的解决办法,亲测有效

        hello呀,今天写微信支付测试代码的时候,出现了一个异常的问题,不知道大家遇到过吗?就是获取商户私钥的时候,获取不到具体的私钥内容,获取到的是一个地址。
        下面是代码:

@Configuration
@PropertySource("classpath:wxpay.properties")  //读取配置文件
@ConfigurationProperties(prefix = "wxpay")      //读取的节点
@Data   //getter和setter 方法
public class WxPayConfig {
    // 商户号
    private String mchId;

    // 商户API证书序列号
    private String mchSerialNo;

    // 商户私钥文件
    private String privateKeyPath;

    // APIv3密钥
    private String apiV3Key;

    // APPID
    private String appid;

    // 微信服务器地址
    private String domain;

    // 接收结果通知地址
    private String notifyDomain;

    /**
     * @Decription 获取商户的私钥
     * @Param   fileName  私钥文件的路径
     * @Return  java.security.PrivateKey
     * @Author  lmh
     * @Date    2022/5/12 0:48
     */
    public PrivateKey getPrivateKey(String fileName){
        try {
            PrivateKey merchantPrivateKey = PemUtil.loadPrivateKey(
                    new FileInputStream(fileName));
            return merchantPrivateKey;
        } catch (FileNotFoundException e) {
            //抛出异常,并把错误文件继续向上抛出
            throw new RuntimeException("私钥文件不存在",e);
        }
    }

}

在这里插入图片描述

        然后我用test测试了一下

@SpringBootTest
class PaymentDemoApplicationTests {

    @Resource
    private WxPayConfig wxPayConfig;

    /**
     * @Decription 测试获取商户私钥
     * @Param   null
     * @Return  void
     * @Author  lmh
     * @Date    2022/5/12 0:55
     */
    @Test
    void getPrivateKey() {
        //1,获取私钥文件路径
        String privateKeyPath = wxPayConfig.getPrivateKeyPath();
        //2,获取私钥
        PrivateKey privateKey = wxPayConfig.getPrivateKey("src/main/resources/"+privateKeyPath);
        //3,打印私钥
        System.out.println("============privateKeyPath:"+privateKeyPath);
        System.out.println(privateKey.toString());
    }

}

        打印之后的结果是:sun.security.rsa.RSAPrivateCrtKeyImpl@ffdd3c1b
        这明显的不是私钥呀,tostring()也不行,仔细检查了代码,代码也没有错误呀。百度了好久看到一篇博客说,是jdk版本低的原因,我就抱着尝试的心态重新下载了JDK 8u333的版本,又等待下载了半个小时,最终终于获取成功了。获取之后的结果是这样的:
在这里插入图片描述

        如果有跟我出现同样问题的同志们,也可以尝试一下这个方式,梦梦试过了,是可以解决问题的。
        下载jdk的地址:oracle官网

        对了,下载完jdk之后要记得重新配置一下哦,cmd试一下 java -version配置的jdk对不对,idea中关于jdk的配置也需要改一下哦,分别是下面的几部分:

        1,java 编译器的版本,就是生成class文件的jdk版本
在这里插入图片描述

        2,更新一下SDK的版本
在这里插入图片描述

        3,项目中实际的JDK最低版本要求以及实际的jdk版本
在这里插入图片描述
在这里插入图片描述

        4,这里也改一下,与Modules中的配置一样即可。
在这里插入图片描述

        好辽,以上就是梦梦今天遇到问题、解决问题、记录问题的一个过程辽,希望能给遇到同样问题的同志们一个帮助,哈哈哈。
        

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦梦~~

你的鼓励是对我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值