收藏
回答

特约商户进件提交申请单API 400

response=HttpResponseProxy{HTTP/1.1 400 Bad Request [Server: nginx, Date: Thu, 09 Jul 2020 01:26:53 GMT, Content-Type: text/html, Content-Length: 166, Connection: close] ResponseEntityProxy{[Content-Type: text/html,Content-Length: 166,Chunked: false]}}

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

2 个回答

  • 微信支付技术助手8
    微信支付技术助手8
    2020-07-09

    400 Bad Request 是由于明显的客户端错误(例如,格式错误的请求语法,太大的大小,无效的请求消息或欺骗性路由请求),服务器不能或不会处理该请求。应该是你本地的请求语法有问题。麻烦仔细检查一下。

    2020-07-09
    有用 1
    回复 1
    • 艾菲儿
      艾菲儿
      2020-07-09
      ClassPathResource classPathResource = new ClassPathResource(privateKey);
                  InputStream inputStream = classPathResource.getInputStream();
                  PrivateKey merchantPrivateKey = PemUtil.loadPrivateKey(inputStream);
                  WechatPay2Credentials wechatPay2Credentials = new WechatPay2Credentials(mchId, new PrivateKeySigner(mchSerialNo, merchantPrivateKey));
                  AutoUpdateCertificatesVerifier verifier = new AutoUpdateCertificatesVerifier(wechatPay2Credentials,
                          apiV3Key.getBytes(PayConstant.WXPAY_CHARSET));
                  CloseableHttpClient httpClient = WechatPayHttpClientBuilder.create()
                          .withMerchant(mchId, mchSerialNo, merchantPrivateKey)
                          .withValidator(new WechatPay2Validator(verifier))
                          .build();

                  // 封装请求参数
                  String req = JSONUtil.toJsonStr(applymentObj);
                  log.info("生成请求微信商户入驻申请数据,req={}", req);
                  HttpPost request = new HttpPost(PayConstant.MERCHANT_APPLY);
                  request.setHeader(HttpHeaders.CONTENT_TYPE, ContentType.APPLICATION_JSON.getMimeType()+"; charset="+ContentType.APPLICATION_JSON.getCharset().name());
                  request.addHeader("Wechatpay-Serial", mchSerialNo);
                  request.addHeader(HttpHeaders.ACCEPT, ContentType.APPLICATION_JSON.getMimeType());
                  request.addHeader(HttpHeaders.USER_AGENT, "wxpay sdk java v1.0 " + mchId);
                  request.setEntity(new StringEntity(req, ContentType.APPLICATION_JSON.getCharset()));
                  request.setHeader(HttpHeaders.AUTHORIZATION, wechatPay2Credentials.getSchema() + " " + wechatPay2Credentials.getToken(HttpRequestWrapper.wrap(request)));
                  CloseableHttpResponse response = httpClient.execute(request);

      请问我那个请求语法不对呀?
      2020-07-09
      回复
  • 北望沣渭
    北望沣渭
    2020-07-09

    PayConstant.MERCHANT_APPLY 你的这个常量可能定义错了,切记不能少了末尾的斜杠(/ slash),少了即400错了

    2020-07-09
    有用
    回复 11
    • 艾菲儿
      艾菲儿
      2020-07-09
      https://api.mch.weixin.qq.com/v3/applyment4sub/applyment/
      有/呢
      2020-07-09
      回复
    • 北望沣渭
      北望沣渭
      2020-07-09回复艾菲儿
      有些开发包有可能会末尾斜杠抹掉,建议debug日志打开再次确认下
      2020-07-09
      回复
    • 北望沣渭
      北望沣渭
      2020-07-09回复艾菲儿
      2020-07-09
      回复
    • 艾菲儿
      艾菲儿
      2020-07-09回复北望沣渭
      debug过了,URL没问题,是带着/的
      2020-07-09
      回复
    • 北望沣渭
      北望沣渭
      2020-07-09回复艾菲儿
      把URL写成 https://api.mch.weixin.qq.com/v3/applyment4sub/applyment/checkin 试试
      2020-07-09
      回复
    查看更多(6)
登录 后发表内容
问题标签