wechatpay-apiv3/wechatpay-java

springboot中,RSAAutoCertificateConfig 的 privateKeyFromPath 怎么写获取resource下的apiclient_key.pem

smallvq123 opened this issue · 4 comments

错误描述

public static Config payConfig = new RSAAutoCertificateConfig.Builder()
.merchantId(merchantId)
.privateKeyFromPath(privateKeyPath)
.merchantSerialNumber(merchantSerialNumber)
.apiV3Key(apiV3key)
.build();

可以使用相对路劲或者 classpath路劲吗?

重现bug的步骤

1

预期行为

1

导致错误的代码片段

1

操作系统

macOS

Java 版本

java17

wechatpay-java 版本

0.2.9

其他信息

No response

如果你的私钥文件放在 resource 下,可以试试以下方式。

第一步,通过 @Value 获取 Resource 对象。

@Value("classpath:apiclient_key.pem")
private Resource resource;

第二步,获取文件的输入流

InputStream inputStream = resource.getInputStream();

第三步,获取私钥传入 RSAAutoCertificateConfig.Builder

public static Config payConfig = new RSAAutoCertificateConfig.Builder()
  .merchantId(merchantId)
  .privateKey(IoUtil.toString(inputStream))
  .merchantSerialNumber(merchantSerialNumber)
  .apiV3Key(apiV3key)
  .build();

第三步确实不方便,在 RSAAutoCertificateConfig.Builder 加入一个从 InputStream 设置私钥的方法会好。

另,纯手写的代码,未测试,有问题请反馈。

#145 应该是类似的问题。

IoUtil是哪个包下面的?

@value("classpath:apiclient_key.pem")
private Resource resource;
这样也是找不到文件的