收藏
回答

微信支付用SDK方式,如何正确传参 商户API私钥路径 privateKeyPath?

我的项目服务端是java springboot,整合微信支付,用SDK方式。

使用自动更新平台证书的RSA配置方式,有个参数是“商户API私钥路径”  privateKeyPath,

// 一个商户号只能初始化一个配置,否则会因为重复的下载任务报错
Config config =
        new RSAAutoCertificateConfig.Builder()
                .merchantId(merchantId)
                .privateKeyFromPath(privateKeyPath)
                .merchantSerialNumber(merchantSerialNumber)
                .apiV3Key(apiV3Key)
                .build();


跟着包调用看到

private static String readPrivateKeyStringFromPath(String keyPath) {
    try {
        FileInputStream inputStream = new FileInputStream(keyPath);

FileInputStream 不支持直接从网络上读取文件内容,需要本地路径,所以把文件放在resource目录下

这样本地开发环境,可以用电脑绝对路径,或者“scr/main/XXXX”这样子读取,但是部署线上后,不存在这个路径了。

问题:部署线上后,privateKeyPath参数应该怎么传?也就是文件路径应该怎么写?


回答关注问题邀请回答
收藏

1 个回答

  • KUEGW
    KUEGW
    02-28

    已解决

    ClassPathResource keyClassPath = new ClassPathResource("/key/apiclient_key.pem");//获取到resources路径下面的文件信息,包含了文件的path
    URL keyUrl = keyClassPath.getURL();
    String path = keyUrl.getPath();
    FileInputStream inputStream = new FileInputStream(path);
    
    02-28
    有用 1
    回复 2
    • 夏
      03-03
      直接在idea启动项目可以,打成jar后运行还是找不到文件路径是怎么解决的
      03-03
      回复
    • KUEGW
      KUEGW
      03-28回复
      用ClassPathResource可以获取,或者不用 privateKeyFromPath,直接用privateKey来构建config
      03-28
      回复
登录 后发表内容