收藏
回答

微信支付 API V3,微信商户证书文件的私玥文件获取错误,如何排查?

之前使用 2023.7.7生成的apiclient_key.pem进行读取,始终提示 No Such File,后重新生成新的证书。

目前还未进展至获取平台证书阶段,仍在读取本地私钥证书阶段,报错Illegal base64 character 3f。

已排查证书文件,确认文件没有问题,确认序列号没有问题,确认商户号没有问题,APIv3 密钥也重新设置了。

String appid = "wxf67**********e70";
String merchantId = "16******62";
String privateKeyPath = "apiclient_key.pem";
String merchantSerialNumber = "5E1E********************9FCA7";
String apiV3Key = "llV*****************jcX";

Config config =
        new RSAAutoCertificateConfig.Builder()
                .merchantId(merchantId)
                .privateKeyFromPath(privateKeyPath)
                .merchantSerialNumber(merchantSerialNumber)
                .apiV3Key(apiV3Key)
                .build();

以下为报错:
严重: Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException: Illegal base64 character 3f] with root cause
java.lang.IllegalArgumentException: Illegal base64 character 3f
	at java.base/java.util.Base64$Decoder.decode0(Base64.java:848)
	at java.base/java.util.Base64$Decoder.decode(Base64.java:566)
	at java.base/java.util.Base64$Decoder.decode(Base64.java:589)
	at com.wechat.pay.java.core.util.PemUtil.loadPrivateKeyFromString(PemUtil.java:41)
	at com.wechat.pay.java.core.util.PemUtil.loadPrivateKeyFromPath(PemUtil.java:81)
	at com.wechat.pay.java.core.AbstractRSAConfigBuilder.privateKeyFromPath(AbstractRSAConfigBuilder.java:31)
最后一次编辑于  02-18
回答关注问题邀请回答
收藏

1 个回答

  • Memory (私信不回复)
    Memory (私信不回复)
    02-18

    这报错还是读取的证书格式问题吧,换P12试下,或者看下这个https://blog.51cto.com/u_16213402/7068997

    02-18
    有用
    回复 2
    • Jerry
      Jerry
      02-19
      的确是读取证书格式问题,但不是换p12,把 pem 移到了根目录读取到了,我得继续研究下为什么放在 resource 没有读取成功
      02-19
      回复
    • 自在独行
      自在独行
      03-15回复Jerry
      这个你是咋放的,路径又是咋获取的,试了几次都不行
      03-15
      回复
登录 后发表内容