微信分账

2019-08-15  本文已影响0人  昵称违规

最近,微信分账终于更新了微信开发文档,普通商户和服务商都可以分账,微信现在文档还是比较全了,没那么坑了,认真通读文档,开发起来没什么压力。

简单说下微信分账的意思,用户发起一笔微信支付,这笔订单可以标记为分账订单,前提是要在商户后台添加微信分账功能,配置分账比例,通知等。分账前,要先添加分账接收方,添加一次,后续没变化,可以不添加,但是微信好像没提供查询分账接收方列表功能,然后就可以一步一步按文档分账。

这里我想简单说下分账我遇到的问题,

分账接口需要证书,证书路径是个问题,这里借鉴此方法证书路径问题,然后就是带证书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

后续有什么问题再更新。

上一篇 下一篇

猜你喜欢

热点阅读