wechatpay-apiv3 / wechatpay-apache-httpclient

微信支付 APIv3 Apache HttpClient装饰器(decorator)
https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pages/index.shtml
Apache License 2.0
674 stars 251 forks source link

empty [Wechatpay-Serial] 应答的微信支付签名验证失败 #178

Closed zgm4z closed 1 year ago

zgm4z commented 1 year ago

按照示例代码,请求统一下单接口时一直提示 应答的微信支付签名验证失败,信息如下: version: 0.4.8

//配置请求参数
  public static WechatServerRequestExecutor create(PaymentProps props) {
    if (builder == null) {
      synchronized (WechatServerRequestExecutor.class) {
        if (builder == null) {
          try {
            List<X509Certificate> certificates =
                List.of(PemUtil.loadCertificate(
                    new FileInputStream("wechatpay_key.pem")));//这里是通过下载器手动下载的平台证书
            PrivateKey merchantPrivateKey =
                PemUtil.loadPrivateKey(new FileInputStream(props.getMerchantPrivateKeyPath()));
            builder = WechatPayHttpClientBuilder.create()
                .withMerchant(props.getMchid(), props.getMerchantSerialNumber(), merchantPrivateKey)
                .withWechatPay(certificates);
            return new WechatServerRequestExecutor();
          } catch (Exception e) {
            throw new BusinessException(e.getMessage());
          }
        }
        return new WechatServerRequestExecutor();
      }
    } else {
      return new WechatServerRequestExecutor();
    }
  }

错误信息: [c.w.p.c.apache.httpclient.auth.WechatPay2Validator.validate] - parameter error: empty [Wechatpay-Serial], request-id=[xxxx] Caused by: org.apache.http.HttpException: 应答的微信支付签名验证失败 at com.wechat.pay.contrib.apache.httpclient.SignatureExec.executeWithSignature(SignatureExec.java:91) at com.wechat.pay.contrib.apache.httpclient.SignatureExec.execute(SignatureExec.java:61)