Java 微信支付APP V3示例思路

这篇文章只是说一下个人的实现思路,大家了解一下实现的思路就行了,并不是全流程可以粘贴复制就能用的案例,个人觉得整体比较麻烦的地方就是前期准备工作,你要去注册账号获取 商户ID 商户证书,商户证书下载后直接拉进项目里,后期需要读取证书里面的序列号。我放到resources下了,也就是我项目的所有的xml文件目录。放哪里都行。

上面的是官网的例子, 下面是我实现的例子,封装参数,读取证书里的序列号

resPayObj = WechatPayUtil.creatOrder_v3(orderNum, payMoney, "APP", subject, null,
                                                "".equals(ip) ? "127.0.0.1" : ip, null,"");

post方法

public static String requestOncePOST(String url, String data, String merchantId, String merchantSerialNumber,
                                         PrivateKey merchantPrivateKey, String certificate ){
          
   
        String res = "";
        try {
          
   
            Tools.LogOut("WXPayRequest::requestOncePOST", "url ==" + url + "     
data ==" + data);
            KeyFactory kf = KeyFactory.getInstance("RSA");

            CertificateFactory cf = CertificateFactory.getInstance("X.509");
            ArrayList<X509Certificate> listCertificates = (ArrayList<X509Certificate>) cf.generateCertificates(new ByteArrayInputStream(certificate.getBytes("utf-8")));

            WechatPayHttpClientBuilder builder = WechatPayHttpClientBuilder.create()
                    .withMerchant(merchantId, merchantSerialNumber, merchantPrivateKey).withWechatpay(listCertificates);

            CloseableHttpClient httpClient = builder.build();
            HttpPost httpPost = new HttpPost(url);
            InputStream stream = new ByteArrayInputStream(data.getBytes("utf-8"));
            InputStreamEntity reqEntity = new InputStreamEntity(stream);
            reqEntity.setContentType("application/json");
            httpPost.setEntity(reqEntity);
            httpPost.addHeader("Accept", "application/json");



            CloseableHttpResponse httpResponse = httpClient.execute(httpPost);


            HttpEntity httpEntity = httpResponse.getEntity();
            res = EntityUtils.toString(httpEntity, "UTF-8");

            Tools.LogOut("WXPayRequest::requestOncePOST", "url ==" + url + "     
res ==" + res);

        } catch (Exception e) {
          
   
            e.printStackTrace();
            Tools.LogOut("WXPayRequest::requestOncePOST", "ERR ==" + e.toString());
        }
        return res;
    }
经验分享 程序员 微信小程序 职场和发展