收藏
回答

下载平台证书返回状态码异常,状态码为:500

新接入商户号,配置后提示错误《下载平台证书返回状态码异常,状态码为:500》,查了下之前有人反馈《新商户不再签发平台证书,需要使用商户公钥进行敏感信息加密和验签》,这个商户公钥是通过 https://pay.weixin.qq.com/doc/v3/merchant/4012153196 这里获取的吗,但是下载的文件pub_key.pem 在加载的时候提示错误,《无效的证书》, 《Unable to initialize, java.io.IOException: Too short》,加载的代码如下 使用的是 https://github.com/wechatpay-apiv3/wechatpay-apache-httpclient

得如何加载和使用这个公钥呢

X509Certificate publicKey = PemUtil.loadCertificate(new ClassPathResource(merchantId + "/pub_key.pem").getInputStream());
Verifier verifier = new CertificatesVerifier(Collections.singletonList(publicKey));

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

2 个回答

  • 支付社区运营
    支付社区运营
    星期五 11:26

    为了帮助商户规避未能及时完成平台证书更换或更换过程中出现系统风险影响线上业务,新申请的微信支付商户号需要使用公私钥模式进行接口验签,针对微信支付公钥使用介绍可参考:https://pay.weixin.qq.com/docs/merchant/products/platform-certificate/wxp-pub-key-guide.html

    星期五 11:26
    有用
    回复
  • Memory (私信不回复)
    Memory (私信不回复)
    10-25

    用https://search.maven.org/artifact/com.github.wechatpay-apiv3/wechatpay-java

    // 可以根据实际情况使用publicKeyFromPath或publicKey加载公钥
    Config config =
        new RSAPublicKeyConfig.Builder()
            .merchantId(merchantId)
            .privateKeyFromPath(privateKeyPath)
            .publicKeyFromPath(publicKeyPath)
            .publicKeyId(publicKeyId)
            .merchantSerialNumber(merchantSerialNumber)
            .apiV3Key(apiV3Key)
            .build();
    


    10-25
    有用 1
    回复 6
    • 神经蛙
      神经蛙
      10-25
      非常感谢。 用wechatpay-apache-httpclient是不是暂时不支持。我们现在系统都是基于这个开发的,已经跑一段时间了。现在要新家商户号,改成wechatpay-java的话系统改动比较大。
      10-25
      回复
    • Memory (私信不回复)
      Memory (私信不回复)
      10-25回复神经蛙
      也能支持,需要自己手动改了
      10-25
      回复
    • 神经蛙
      神经蛙
      10-25
      大神能提示下从哪里修改吗。 下面是我以前的加载方式
      10-25
      回复
    • 神经蛙
      神经蛙
      10-25
      这样加载会报错。 too short 证书无效
      10-25
      回复
    • Memory (私信不回复)
      Memory (私信不回复)
      10-25回复神经蛙
      你不能使用原来的方法了
      10-25
      回复
    查看更多(1)
登录 后发表内容