【API】微信支付简单集成

这是我参与11月更文挑战的第13天,活动详情查看:2021最后一次更文挑战

说明

当服务服务中需要支付功能,可以尝试使用微信支付。微信支付提供企业向用户付款的功能,支持企业通过API接口付款,或通过微信支付商户平台网页功能操作付款。

功能开通

首先需要在官网进行开通,地址: #PC网站接入支付

授权说明

通过网页授权获取用户的openid(企业向微信用户个人付款 目前支持向指定微信用户的openid付款。),具体获取方法可查网页授权

API调用代码

请求示例

只写了些简单参数,具体参数详情见【微信支付】付款开发者文档

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
java复制代码Map<String, String> reqData = new HashMap<>();
// 签名
reqData.put("sign","abc");
// 用户openid
reqData.put("openid","1657446542123");
// 校验用户姓名选项
reqData.put("check_name","NO_CHECK");
// 付款金额,单位为分
reqData.put("amount","30.0");
// 付款备注
reqData.put("desc","付款");
// 商户账号appid
reqData.put("mch_appid", "wx1234567065d35555");
// 商户号
reqData.put("mchid", "1768826471");
// Ip地址
reqData.put("spbill_create_ip", InetAddress.getLocalHost().getHostAddress());
// 随机字符串
reqData.put("nonce_str", "lst");
// 转成xml格式
String xml = mapToXml(reqData);
String url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers";
// 发起请求
String response = HttpService.Post(xml, url, true, 5000);
map转xml方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
java复制代码public static String mapToXml(Map<String, String> data) throws Exception {
Document document = PayXmlUtil.newDocument();
Element root = document.createElement("xml");
document.appendChild(root);
Iterator var3 = data.keySet().iterator();

while(var3.hasNext()) {
String key = (String)var3.next();
String value = (String)data.get(key);
if (value == null) {
value = "";
}

value = value.trim();
Element filed = document.createElement(key);
filed.appendChild(document.createTextNode(value));
root.appendChild(filed);
}

TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
DOMSource source = new DOMSource(document);
transformer.setOutputProperty("encoding", "UTF-8");
transformer.setOutputProperty("indent", "yes");
StringWriter writer = new StringWriter();
StreamResult result = new StreamResult(writer);
transformer.transform(source, result);
String output = writer.getBuffer().toString();

try {
writer.close();
return output;
} catch (Exception e) {
log.error(e.toString());
}
}

注意

请求头中需要设置格式为xml

1
java复制代码httpPost.addHeader("Content-Type", "text/xml");

参考

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%