最近,微信分账终于更新了微信开发文档,普通商户和服务商都可以分账,微信现在文档还是比较全了,没那么坑了,认真通读文档,开发起来没什么压力。
简单说下微信分账的意思,用户发起一笔微信支付,这笔订单可以标记为分账订单,前提是要在商户后台添加微信分账功能,配置分账比例,通知等。分账前,要先添加分账接收方,添加一次,后续没变化,可以不添加,但是微信好像没提供查询分账接收方列表功能,然后就可以一步一步按文档分账。
这里我想简单说下分账我遇到的问题,
分账接口需要证书,证书路径是个问题,这里借鉴此方法证书路径问题,然后就是带证书post请求方法,这里贴一个自己网上找的ssl方法
/**
* SSL代码
*/
public static StringpostSSL(String url, String data, String certPath, String certPass) {
try {
KeyStore clientStore = KeyStore.getInstance("PKCS12");
// 读取本机存放的PKCS12证书文件
FileInputStream inputStream =new FileInputStream(certPath);
try {
// 指定PKCS12的密码(商户ID)
clientStore.load(inputStream, certPass.toCharArray());
}finally {
inputStream.close();
}
SSLContext sslcontext = SSLContexts.custom().loadKeyMaterial(clientStore, certPass.toCharArray()).build();
// 指定TLS版本
SSLConnectionSocketFactory sslsf =new SSLConnectionSocketFactory(sslcontext, new String[]{"TLSv1"}, null,
SSLConnectionSocketFactory.getDefaultHostnameVerifier());
// 设置httpclient的SSLSocketFactory
CloseableHttpClient httpclient = HttpClients.custom().setSSLSocketFactory(sslsf).build();
try {
HttpPost httpost =new HttpPost(url); // 设置响应头信息
httpost.addHeader("Connection", "keep-alive");
httpost.addHeader("Accept", "*/*");
httpost.addHeader("Content-Type", "*");
httpost.addHeader("X-Requested-With", "XMLHttpRequest");
httpost.addHeader("Cache-Control", "max-age=0");
httpost.addHeader("User-Agent", "*");
httpost.setEntity(new StringEntity(data, "UTF-8"));
CloseableHttpResponse response = httpclient.execute(httpost);
try {
HttpEntity entity = response.getEntity();
String jsonStr = EntityUtils.toString(response.getEntity(), "UTF-8");
EntityUtils.consume(entity);
return jsonStr;
}finally {
response.close();
}
}finally {
httpclient.close();
}
}catch (Exception e) {
log.error("", e);
throw new RuntimeException(e);
}
}
可能要到httpclient 包。
微信开发建议用wxjava大牛开发的工具包比较全,目前好像还没加入分账功能,毕竟微信也没开放多久。推荐lombok和国产工具包hutool
后续有什么问题再更新。
网友评论