收藏
回答

小程序支付API,加载秘钥报错,如何解决?腾讯能不能出一个完整的小程序支付代码demo,太耽误事了!

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

3 个回答

  • A小状元北京家教
    A小状元北京家教
    04-17

    这个问题解决了,我把我现在遇到的小程序支付方面的坑说一下。一是API私钥证书文件一定要是下载的,最好是直接加载私钥证书文件路径,不要手动复制字符串的,这样可能格式会出问题;二是证书序列号是API私钥证书对应的证书序列号,每个私钥证书都有一个唯一对应的证书序列号,不是平台序列号,不要搞错了。三是加载私钥文件的那一步,用下面的这个方法。当然了,API Maven依赖包不要忘了加载,我一开始还下载不下来jar包。图片及代码如下:

     /**
      * 获取私钥。
      *
      * @param filename 私钥文件路径  (required)
      * @return 私钥对象
      */
    public static PrivateKey getPrivateKey(String filename) throws IOException {
    
    
      String content = new String(Files.readAllBytes(Paths.get(filename)), "utf-8");
      try {
        String privateKey = content.replace("-----BEGIN PRIVATE KEY-----", "")
            .replace("-----END PRIVATE KEY-----", "")
            .replaceAll("\\s+", "");
    
    
        KeyFactory kf = KeyFactory.getInstance("RSA");
        return kf.generatePrivate(
            new PKCS8EncodedKeySpec(Base64.getDecoder().decode(privateKey)));
      } catch (NoSuchAlgorithmException e) {
        throw new RuntimeException("当前Java环境不支持RSA", e);
      } catch (InvalidKeySpecException e) {
        throw new RuntimeException("无效的密钥格式");
      }
    }
    
    <dependency>
        <groupId>com.github.wechatpay-apiv3</groupId>
        <artifactId>wechatpay-java</artifactId>
        <version>0.2.12</version>
    </dependency>
    


    04-17
    有用
    回复
  • 图图
    图图
    04-17

    商户私钥是你自己配置证书的时候那个

    04-17
    有用
    回复
  • Memory
    Memory
    04-17

    这里有提供sdkhttps://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay6_0.shtml

    04-17
    有用
    回复
登录 后发表内容