收藏
回答

使用wechatpay-apache-httpclient开发的大佬有示例么?

使用微信支付推荐的wechatpay-apache-httpclient 工具,第一个接口统一下单api

https://api.mch.weixin.qq.com/v3/pay/transactions/jsapi

获取证书这一步已经正常了,发起支付请求的返回400 Bad request


有没有大佬使用wechatpay-apache-httpclient工具开发的?求个发起支付示例


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

2 个回答

  • 初遇与你
    初遇与你
    2021-03-25
    private static <T extends WxBaseResult> WxBaseResult doPost(String url, String bodyJsonStr, String serialNo, String mchNo, Class<T> returnClazz) {
        //PemUtil 中也提供有证书加载方法
        WechatPayHttpClientBuilder builder = WechatPayHttpClientBuilder.create()
                .withMerchant(mchNo, serialNo, getPrivateKey(getRealPath(mchNo, ".p12"), mchNo)) //微信证书密码及商户号
                .withWechatpay(getMchX509Cert(mchNo));
        HttpClient httpClient = builder.build();
        HttpPost httpPost = new HttpPost(url);
        //设置微信必要请求头信息
        httpPost.setHeader("Content-Type", "application/json");
        httpPost.setHeader("Accept", "application/json");
        StringEntity entity = new StringEntity(bodyJsonStr, "UTF-8");
        httpPost.setEntity(entity);
        try {
            HttpResponse response = httpClient.execute(httpPost);
            return resultDeal(response, returnClazz);
        } catch (IOException e) {
            log.error("微信远程调用异常:", e);
            throw new RRException("微信远程调用异常");
        }
    }
    


    其实比较简单,主要就是证书的拿取(PrivateKey和X509Cert),我开始是自己写的,后面发现这个工具提供的有相应处理方法在 PemUtil 中有;另外需要注意的是X509Cert证书获取不能直接使用我们商户平台下载的application_key.pem去得到,否则httpClient.execute方法获取结果自动验证返回签名时会报错。需要先使用CertificateDownloader工具转换证书 (java -jar CertificateDownloader-1.1.jar -f 商户私钥文件路径 -k 证书解密的密钥(商户平台APIv3秘钥) -m 商户号  -s 商户证书序列号 -o 新证书保存路径) 工具下载地址 https://github.com/wechatpay-apiv3/CertificateDownloader/releases
    
    
    2021-03-25
    有用 1
    回复 3
    • Uncle·Xiang
      Uncle·Xiang
      2021-04-07
      你这看着不错啊。还有一些方法也分享一下吧。resultDeal。getPrivateKey
      2021-04-07
      回复
    • Uncle·Xiang
      Uncle·Xiang
      2021-04-07
      getMchX509Cert
      2021-04-07
      回复
    • 拾贰
      拾贰
      2023-01-04
      我的方法结构和你这个基本一样,但是我在运行完一个方法后 程序并没有执行结束,main方法显示还在运行中导致我悟线程卡死,请问是否有解决方案
      2023-01-04
      回复
  • 吕健
    吕健
    2022-03-31

    为啥 wechatpay-apache-httpclient gradle Cause: org/gradle/api/internal/plugins/DefaultConvention

    报错啊

    2022-03-31
    有用
    回复
登录 后发表内容
问题标签