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