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; }
上一篇:
通过多线程提高代码的执行效率例子