WeixinTransfersController.java
2.94 KB
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
package com.rnt.controller;
import java.util.HashMap;
import java.util.Map;
import com.jfinal.core.Controller;
import com.jfinal.kit.StrKit;
import com.jfinal.weixin.sdk.kit.IpKit;
import com.jfinal.weixin.sdk.kit.PaymentKit;
import com.jfinal.weixin.sdk.utils.HttpUtils;
/**
* @author osc就看看
* 企业付款demo
*/
public class WeixinTransfersController extends Controller {
// 商户相关资料
private static String appid = "";
// 微信支付分配的商户号
private static String partner = "";
// API密钥
private static String paternerKey = "";
private static String transfer_url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers";
public void index() throws Exception {
Map<String, String> params = new HashMap<String, String>();
// (apiclient_cert.p12)证书存放路径
String cerPath = "";
// 收款用户在wxappid下的openid
String openid = "";
// 订单号
String orderNo = "";
// 真实姓名(可选)
String reUserName = "";
// 金额 单位:分
params.put("amount", "100");
// 是否验证姓名
// NO_CHECK:不校验真实姓名
// FORCE_CHECK:强校验真实姓名(未实名认证的用户会校验失败,无法转账)
// OPTION_CHECK:针对已实名认证的用户才校验真实姓名(未实名认证用户不校验,可以转账成功)
params.put("check_name", "NO_CHECK");
// 描述
params.put("desc", "企业付款");
params.put("mch_appid", appid);
params.put("mchid", partner);
// 随机字符串
params.put("nonce_str", System.currentTimeMillis() / 1000 + "");
params.put("openid", openid);
params.put("partner_trade_no", orderNo);
// 收款用户真实姓名。
// 如果check_name设置为FORCE_CHECK或OPTION_CHECK,则必填用户真实姓名
params.put("re_user_name", reUserName);
String ip = IpKit.getRealIp(getRequest());
if (StrKit.isBlank(ip)) {
ip = "127.0.0.1";
}
params.put("spbill_create_ip", ip);
String sign = PaymentKit.createSign(params, paternerKey);
params.put("sign", sign);
String xml = PaymentKit.toXml(params);
System.out.println(xml);
String xmlResult = HttpUtils.postSSL(transfer_url, xml, cerPath, partner);
Map<String, String> resultXML = PaymentKit.xmlToMap(xmlResult.toString());
String return_code = resultXML.get("return_code");
String return_msg = resultXML.get("return_msg");
if (StrKit.isBlank(return_code) || !"SUCCESS".equals(return_code)) {
renderText(return_msg);
return;
}
String result_code = resultXML.get("result_code");
if (StrKit.isBlank(result_code) || !"SUCCESS".equals(result_code)) {
renderText(return_msg);
return;
}
}
}