IJPay 中的银联支付
银联支付对接的是「条码支付综合前置平台」
实现原理:微信服务商模式、银行服务商模式
支付配置
IJPay 中微信支付需要配置的参数如下:
- union.machId = 平台分配的商户号
- union.key = 平台分配的密钥
- union.serverUrl = 请求接口 例如:https://qra.95516.com/pay/gateway
- union.domain = 外网访问项目的域名,支付通知中会使用
如何使用?
以刷卡支付为例
/**
* 刷卡支付
*/
@RequestMapping(value = "/microPay", method = {RequestMethod.POST, RequestMethod.GET})
@ResponseBody
public AjaxResult microPay(HttpServletRequest request, HttpServletResponse response) {
try {
String authCode = request.getParameter("authCode");
String totalFee = request.getParameter("totalFee");
String ip = IpKit.getRealIp(request);
if (StrKit.isBlank(ip)) {
ip = "127.0.0.1";
}
// 构建请求参数
Map<String, String> params = MicroPayModel.builder()
.service(ServiceEnum.MICRO_PAY.toString())
.mch_id(unionPayBean.getMachId())
.out_trade_no(WxPayKit.generateStr())
.body("IJPay 云闪付测试")
.attach("聚合支付 SDK")
.total_fee(totalFee)
.mch_create_ip(ip)
.auth_code(authCode)
.nonce_str(WxPayKit.generateStr())
.build()
.createSign(unionPayBean.getKey(), SignType.MD5);
logger.info("请求参数:" + JSONUtil.toJsonStr(params));
String xmlResult = UnionPayApi.execution(unionPayBean.getServerUrl(), params);
logger.info("xmlResult:" + xmlResult);
Map<String, String> result = WxPayKit.xmlToMap(xmlResult);
// 验证签名
if (!WxPayKit.verifyNotify(result, unionPayBean.getKey(), SignType.MD5)) {
return new AjaxResult().addError("签名异常");
}
String returnCode = result.get("status");
String resultCode = result.get("result_code");
String errMsg = result.get("err_msg");
String errCode = result.get("err_code");
// 判断支付状态
if (!"0".equals(returnCode) || !"0".equals(resultCode)) {
return new AjaxResult().addError("errCode:" + errCode + " errMsg:" + errMsg);
}
return new AjaxResult().success(result);
} catch (Exception e) {
e.printStackTrace();
return new AjaxResult().addError(e.getMessage());
}
}
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
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