You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
271 lines
10 KiB
271 lines
10 KiB
package com.hai.config;
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.hai.common.exception.ErrorCode;
|
|
import com.hai.common.exception.ErrorHelp;
|
|
import com.hai.common.exception.SysCode;
|
|
import com.hai.common.pay.util.MD5Util;
|
|
import com.hai.common.pay.util.sdk.WXPayConstants;
|
|
import com.hai.common.security.DesUtil;
|
|
import com.hai.common.utils.DateUtil;
|
|
import com.hai.common.utils.HttpsUtils;
|
|
|
|
import com.hai.common.utils.WxUtils;
|
|
import org.apache.commons.collections4.MapUtils;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
import java.math.BigDecimal;
|
|
import java.nio.charset.Charset;
|
|
import java.util.*;
|
|
|
|
/**
|
|
* 汇联通会员卡业务接口【贵州高速工会卡】
|
|
*/
|
|
public class HuiLianTongUnionCardConfig {
|
|
|
|
/**
|
|
* 根据手机号查询工会卡
|
|
* @param phone
|
|
* @return
|
|
* @throws Exception
|
|
*/
|
|
public static JSONObject queryCardByMobile(String phone) throws Exception {
|
|
Map<String,Object> dataMap = new HashMap<>();
|
|
dataMap.put("userMobile", phone);
|
|
return request("qgk/queryCardByMobile", dataMap);
|
|
}
|
|
|
|
/**
|
|
* 查询卡信息
|
|
* @param cardNo 工会卡号
|
|
* @return
|
|
* @throws Exception
|
|
*/
|
|
public static JSONObject queryCardInfo(String cardNo) throws Exception {
|
|
Map<String,Object> dataMap = new HashMap<>();
|
|
dataMap.put("cardNo", cardNo);
|
|
return request("qgk/queryCardInfo", dataMap);
|
|
}
|
|
|
|
/**
|
|
* 查询余额
|
|
* @param cardNo 工会卡号
|
|
* @return
|
|
* @throws Exception
|
|
*/
|
|
public static JSONObject queryBalance(String cardNo) throws Exception {
|
|
Map<String,Object> dataMap = new HashMap<>();
|
|
dataMap.put("cardType", "ghk");
|
|
dataMap.put("cardNo", cardNo);
|
|
return request("qtk/queryBalance", dataMap);
|
|
}
|
|
|
|
/**
|
|
* 根据业务类型查询消费记录
|
|
* @param businessType 业务类型 1.卖中石化加油券的,固定填sinopec_oil_code 2.其他商品或服务的,固定填hisen_consume
|
|
* @param cardNo 工会卡号
|
|
* @param page 页数
|
|
* @param pageSize 每页条数
|
|
* @param sdate 起始日期 yyyy-MM-dd格式
|
|
* @param edate 截止日期 yyyy-MM-dd格式
|
|
* @return
|
|
* @throws Exception
|
|
*/
|
|
public static JSONObject queryConsumptionRecordByBusiness(String businessType,String cardNo,Long sdate,Long edate,Integer page,Integer pageSize) throws Exception {
|
|
try {
|
|
Map<String,Object> dataMap = new HashMap<>();
|
|
dataMap.put("businessType", businessType);
|
|
dataMap.put("cardNo", cardNo);
|
|
dataMap.put("page", page);
|
|
dataMap.put("pageSize", pageSize);
|
|
if (sdate != null) {
|
|
dataMap.put("sdate", DateUtil.date2String(new Date(sdate), "yyyy-MM-dd"));
|
|
}
|
|
if (edate != null) {
|
|
dataMap.put("edate", DateUtil.date2String(new Date(edate), "yyyy-MM-dd"));
|
|
}
|
|
return request("qtk/queryConsumptionRecordByBusiness", dataMap);
|
|
} catch (Exception e) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQUEST_TIMED_OUT, "");
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* @Author Sum1Dream
|
|
* @name TCheckEMsgUnionCardVipRights.java
|
|
* @Description // 会员体系接口
|
|
* @Date 11:29 上午 2021/11/24
|
|
* @Param [java.lang.String]
|
|
* @return com.alibaba.fastjson.JSONObject
|
|
*/
|
|
public static JSONObject TCheckEMsgUnionCardVipRights(String phone) {
|
|
try {
|
|
Map<String , String> map = new HashMap<>();
|
|
map.put("phone" , phone);
|
|
// 签名码
|
|
String signCode = CommonSysConst.getSysConfig().getHltMembershipLevelSignCode();
|
|
map.put("appId", signCode);
|
|
|
|
Map<String,Object> dataMap = new HashMap<>();
|
|
dataMap.put("phone" , phone);
|
|
dataMap.put("appId", signCode);
|
|
// Md5加密
|
|
dataMap.put("sign", WxUtils.generateSignature(map, "chg;l;l23e2!~%^&22ovndfgf*@11212ouower=@=HSG!Business#Controller!" , WXPayConstants.SignType.MD5));
|
|
return requestMembership("etcextra/checkEMsgUnionCardVipRights" , dataMap);
|
|
|
|
} catch (Exception e) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQUEST_TIMED_OUT, "");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 充值
|
|
* @param orderNo 订单号
|
|
* @param cardNo 卡号
|
|
* @param tranAmount 支付金额
|
|
* @param businessType 业务类型 1.卖中石化加油券的,固定填sinopec_oil_code 2.其他商品或服务的,固定填hisen_consume
|
|
* @param tranVoucher 银行卡充值可填银行卡号;支付宝、微信充值可填相应的扣款单号;接入方也可自定义填入交易流水跟踪号,但长度不能超过50
|
|
* @param tranDesc 交易描述
|
|
* @return
|
|
* @throws Exception
|
|
*/
|
|
public static JSONObject deposit(String orderNo, String cardNo, BigDecimal tranAmount, String businessType, String tranVoucher , String tranDesc) throws Exception {
|
|
Map<String,Object> dataMap = new HashMap<>();
|
|
dataMap.put("orderNo", orderNo);
|
|
dataMap.put("cardType", "ghk");
|
|
dataMap.put("cardNo", cardNo);
|
|
dataMap.put("tranAmount", tranAmount);
|
|
dataMap.put("tranChannel", "HiSen");
|
|
dataMap.put("businessType", businessType);
|
|
dataMap.put("tranVoucher", tranVoucher);
|
|
dataMap.put("tranDesc", tranDesc);
|
|
System.out.println("工会卡支付请求参数" + JSON.toJSONString(dataMap));
|
|
return request("qtk/deposit", dataMap);
|
|
}
|
|
|
|
/**
|
|
* 支付
|
|
* @param orderNo 订单号
|
|
* @param cardNo 卡号
|
|
* @param tranAmount 支付金额
|
|
* @param businessType 业务类型 1.卖中石化加油券的,固定填sinopec_oil_code 2.其他商品或服务的,固定填hisen_consume
|
|
* @param instCode 消费终端号
|
|
* @param goodsDesc 商品描述
|
|
* @param tranDesc 交易描述
|
|
* @return
|
|
* @throws Exception
|
|
*/
|
|
public static JSONObject consumption(String orderNo, String cardNo, BigDecimal tranAmount, String businessType, String instCode,String goodsDesc, String tranDesc) throws Exception {
|
|
Map<String,Object> dataMap = new HashMap<>();
|
|
dataMap.put("orderNo", orderNo);
|
|
dataMap.put("cardType", "ghk");
|
|
dataMap.put("cardNo", cardNo);
|
|
dataMap.put("checkPassword", "N");
|
|
dataMap.put("tranAmount", tranAmount);
|
|
dataMap.put("tranChannel", "HiSen");
|
|
dataMap.put("businessType", businessType);
|
|
dataMap.put("instCode", instCode);
|
|
dataMap.put("goodsDesc", goodsDesc);
|
|
dataMap.put("tranDesc", tranDesc);
|
|
System.out.println("工会卡支付请求参数" + JSON.toJSONString(dataMap));
|
|
return request("qtk/consumption", dataMap);
|
|
}
|
|
|
|
/**
|
|
* 退款
|
|
* @param refundOrderNo 退款订单号
|
|
* @param origOrderNo 支付订单号
|
|
* @return
|
|
* @throws Exception
|
|
*/
|
|
public static JSONObject refund(String refundOrderNo, String origOrderNo) throws Exception {
|
|
Map<String,Object> dataMap = new HashMap<>();
|
|
dataMap.put("orderNo", refundOrderNo);
|
|
dataMap.put("origOrderNo", origOrderNo);
|
|
dataMap.put("checkPassword", "N");
|
|
return request("qtk/refund", dataMap);
|
|
}
|
|
|
|
|
|
/**
|
|
* 会员卡业务请求
|
|
* @param method 接口名称
|
|
* @param param 业务参数
|
|
* @return
|
|
* @throws Exception
|
|
*/
|
|
private static JSONObject request(String method,Map<String,Object> param) throws Exception {
|
|
// 签名码
|
|
String signCode = CommonSysConst.getSysConfig().getHuiLianTongUnionCardSignCode();
|
|
|
|
Map<String,Object> map = new LinkedHashMap<>();
|
|
map.put("accessCode", CommonSysConst.getSysConfig().getHuiLianTongUnionCardAccessCode());
|
|
map.put("requestId", new Date().getTime());
|
|
map.put("method", method);
|
|
|
|
// DES加密
|
|
map.put("data", DesUtil.encode(JSONObject.toJSONString(param), Charset.forName("UTF-8"),signCode).replace("\\n", ""));
|
|
|
|
// 数据签名字符串
|
|
String str = (MapUtils.getString(map,"accessCode")+signCode);
|
|
str +=(MapUtils.getString(map,"requestId")+signCode) ;
|
|
str += (MapUtils.getString(map,"method") + signCode);
|
|
str += (MapUtils.getString(map,"data") + signCode);
|
|
|
|
// MD5加密
|
|
map.put("sign", MD5Util.MD5Encode(str, "UTF-8").toUpperCase());
|
|
return HttpsUtils.doPost(CommonSysConst.getSysConfig().getHuiLianTongUnionCardUrl(), JSON.toJSONString(map));
|
|
}
|
|
|
|
private static JSONObject requestMembership(String method,Map<String,Object> param) throws Exception {
|
|
// 签名码
|
|
String signCode = CommonSysConst.getSysConfig().getHltMembershipLevelSignCode();
|
|
|
|
Map<String,Object> map = new LinkedHashMap<>();
|
|
map.put("accessCode", CommonSysConst.getSysConfig().getHltMembershipLevelAccessCode());
|
|
map.put("requestId", new Date().getTime());
|
|
map.put("method", method);
|
|
|
|
// DES加密
|
|
map.put("data", DesUtil.encode(JSONObject.toJSONString(param), Charset.forName("UTF-8"),signCode).replace("\\n", ""));
|
|
|
|
// 数据签名字符串
|
|
String str = (MapUtils.getString(map,"accessCode")+signCode);
|
|
str +=(MapUtils.getString(map,"requestId")+signCode) ;
|
|
str += (MapUtils.getString(map,"method") + signCode);
|
|
str += (MapUtils.getString(map,"data") + signCode);
|
|
|
|
// MD5加密
|
|
map.put("sign", MD5Util.MD5Encode(str, "UTF-8").toUpperCase());
|
|
return HttpsUtils.doPost(CommonSysConst.getSysConfig().getHuiLianTongUnionCardUrl(), JSON.toJSONString(map));
|
|
}
|
|
|
|
/**
|
|
* 解析响应的参数
|
|
* @param param 参数
|
|
* @return
|
|
*/
|
|
public static JSONObject resolveResponse(String param) {
|
|
String data = param.replace("\\n", "");
|
|
String decodeData = DesUtil.decode(CommonSysConst.getSysConfig().getHuiLianTongUnionCardSignCode(), data, Charset.forName("UTF-8"));
|
|
return JSONObject.parseObject(decodeData);
|
|
}
|
|
|
|
/**
|
|
* 解析响应的参数
|
|
* @param param 参数
|
|
* @return
|
|
*/
|
|
public static JSONObject resolveResponseMembership(String param) {
|
|
String data = param.replace("\\n", "");
|
|
String decodeData = DesUtil.decode(CommonSysConst.getSysConfig().getHltMembershipLevelSignCode(), data, Charset.forName("UTF-8"));
|
|
return JSONObject.parseObject(decodeData);
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|