目录
一、开发前的准备工作
- 前往商户平台开通「企业付款到零钱」。
- 配置好API密钥和生成API证书。
开通注意事项见下图。详情请戳:企业付款场景介绍&操作指导
二、接入微信企业付款到零钱API
1)接入「企业付款到零钱」API
API 接入注意事项参见下方截图:
嗯,浏览官网文档后,相信应该已经找到感觉,哪怕一丁点都好!
接下来,总体梳理一下编码思路:
- 读取对接必需配置项:appid & 商户号mch_id & 商户API密钥mchKey
- 读取微信「企业付款到零钱」接口URL配置项
- SSL加载API证书
- 组装「企业付款到零钱」接口所需的请求参数
- 按照既定规则生成商户订单号
- 生成签名
- 正式请求「企业付款到零钱」API
- 接收API响应结果,处理相关业务逻辑
2)接入「查询企业付款」API
嗯,还是梳理编码步骤:
- 读取对接必需配置项:appid & 商户号mch_id & 商户API密钥mchKey
- 读取微信「查询企业付款」接口URL配置项
- SSL加载API证书
- 组装「查询企业付款」接口所需的请求参数(此处商户订单号跟付款API使用的商户订单号保持一致)
- 生成签名
- 正式请求「查询企业付款」API
- 接收API响应结果,处理相关业务逻辑
/**
* @return java.util.Map<java.lang.String, java.lang.String>
* @throws
* @description 查询企业付款
* @params [partnerTradeNo]
*/
@Override
public Map<String, String> getTransferInfo(String partnerTradeNo) throws IOException {
// 加载API证书
SSLContext sslContext = initSSLContext();
SSLConnectionSocketFactory sslSkF = new SSLConnectionSocketFactory(sslContext, new String[]{"TLSv1"},
null, SSLConnectionSocketFactory.getDefaultHostnameVerifier());
SortedMap<String, Object> parameters = new TreeMap<>();
// 组装请求参数
parameters.put("partner_trade_no", partnerTradeNo);
parameters.put("nonce_str", weChatUtils.gen32RandomString());
parameters.put("appid", wxEpProperties.getAppid());
parameters.put("mch_id", wxEpProperties.getMchId());
// 生成签名
String sign = weChatUtils.createSign(parameters, wxEpProperties.getMchKey());
parameters.put("sign", sign);
try {
// 查询企业付款 响应结果=> Xml格式
String entPaymentQueryRes = weChatUtils.executeHttpPost(wxEpProperties.getGetTransferInfoUrl(), parameters, sslSkF);
log.info("WeChatEntPaymentServiceImpl.getTransferInfo ======== 查询企业付款响应结果:[{}] ======== ", entPaymentQueryRes);
// XML => Map
Map<String, String> resInfoMap = weChatUtils.transferXmlToMap(entPaymentQueryRes);
log.info("WeChatEntPaymentServiceImpl.getTransferInfo ======== 查询企业付款响应结果Map结构:[{}] ======== ", resInfoMap.toString());
return resInfoMap;
} catch (Exception e) {
log.error("WeChatEntPaymentServiceImpl.getTransferInfo ======== 查询企业付款发生异常 ======== ");
throw n