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

  • Post author:
  • Post category:其他



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中的配置一样即可。


在这里插入图片描述


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





版权声明:本文为qq_46540738原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。