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.
596 lines
27 KiB
596 lines
27 KiB
package com.cweb.controller.pay;
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.cweb.config.SysConst;
|
|
import com.cweb.config.WxMsgConfig;
|
|
import com.google.gson.JsonObject;
|
|
import com.hai.common.exception.ErrorCode;
|
|
import com.hai.common.exception.ErrorHelp;
|
|
import com.hai.common.exception.SysCode;
|
|
import com.hai.common.pay.WechatPayUtil;
|
|
import com.hai.common.pay.entity.WeChatPayReqInfo;
|
|
import com.hai.common.pay.util.MD5Util;
|
|
import com.hai.common.security.AESEncodeUtil;
|
|
import com.hai.common.security.SessionObject;
|
|
import com.hai.common.security.UserCenter;
|
|
import com.hai.common.utils.*;
|
|
import com.hai.config.CommonSysConst;
|
|
import com.hai.config.UnionPayConfig;
|
|
import com.hai.dao.HighGasOrderPushMapper;
|
|
import com.hai.dao.HighGasOrderRefundMapper;
|
|
import com.hai.entity.*;
|
|
import com.hai.enum_type.OrderPushType;
|
|
import com.hai.enum_type.RechargePayType;
|
|
import com.hai.model.HighUserModel;
|
|
import com.hai.model.ResponseData;
|
|
import com.hai.service.*;
|
|
import com.hai.service.pay.impl.GoodsOrderServiceImpl;
|
|
import io.swagger.annotations.Api;
|
|
import io.swagger.annotations.ApiOperation;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.springframework.stereotype.Controller;
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import java.io.PrintWriter;
|
|
import java.math.BigDecimal;
|
|
import java.util.*;
|
|
import java.util.concurrent.ThreadLocalRandom;
|
|
|
|
@Controller
|
|
@RequestMapping(value = "/czOrder")
|
|
@Api(value = "充值回调")
|
|
public class CzOrderController {
|
|
|
|
private static Logger log = LoggerFactory.getLogger(TuanYouController.class);
|
|
|
|
@Resource
|
|
private UserCenter userCenter;
|
|
|
|
@Resource
|
|
private OutRechargeOrderService outRechargeOrderService;
|
|
|
|
@Resource
|
|
private OutRechargeChildOrderService outRechargeChildOrderService;
|
|
|
|
@Resource
|
|
private BsRequestRecordService bsRequestRecordService;
|
|
|
|
@Resource
|
|
private HighUserService highUserService;
|
|
|
|
@Resource
|
|
private UnionPayConfig unionPayConfig;
|
|
|
|
@Resource
|
|
private HighUserPayPasswordService highUserPayPasswordService;
|
|
|
|
@Resource
|
|
private HighUserCardService highUserCardService;
|
|
|
|
@Resource
|
|
private HighGasOrderPushMapper highGasOrderPushMapper;
|
|
|
|
@Resource
|
|
private WechatPayUtil wechatPayUtil;
|
|
|
|
@Resource
|
|
private ApiOrderRecordService apiOrderRecordService;
|
|
|
|
@Resource
|
|
private BsIntegralRebateService bsIntegralRebateService;
|
|
|
|
@Resource
|
|
private HighGoldRecService highGoldRecService;
|
|
|
|
@RequestMapping(value = "/rechargeCallbackByJj", method = RequestMethod.POST)
|
|
@ApiOperation(value = "尖椒充值回调")
|
|
@ResponseBody
|
|
public void rechargeCallbackByJj(@RequestBody String reqBodyStr, HttpServletRequest request, HttpServletResponse response) {
|
|
try {
|
|
|
|
JSONObject dataObject = JSONObject.parseObject(reqBodyStr, JSONObject.class);
|
|
|
|
// 推送记录
|
|
HighGasOrderPush highGasOrderPush = new HighGasOrderPush();
|
|
highGasOrderPush.setType(OrderPushType.type2.getType());
|
|
highGasOrderPush.setOrderNo(dataObject.getString("out_order_id"));
|
|
highGasOrderPush.setCreateTime(new Date());
|
|
highGasOrderPush.setCode(dataObject.getString("status"));
|
|
highGasOrderPush.setRequestContent(JSONObject.toJSONString(dataObject));
|
|
highGasOrderPush.setReturnContent(dataObject.toJSONString());
|
|
highGasOrderPushMapper.insert(highGasOrderPush);
|
|
|
|
|
|
// 1 尖椒 2 龙阅
|
|
dataObject.put("orderNo" , dataObject.getString("out_order_id"));
|
|
|
|
OutRechargeChildOrder childOrder = outRechargeChildOrderService.findByOrderNo(dataObject.getString("out_order_id"));
|
|
|
|
OutRechargeOrder rechargeOrder = outRechargeOrderService.findByOrderId(childOrder.getParentOrderId());
|
|
|
|
BsRequestRecord bsRequestRecord = bsRequestRecordService.findRequestRecordByOrderNo(childOrder.getOrderNo());
|
|
|
|
bsRequestRecord.setReturnContent(String.valueOf(dataObject));
|
|
bsRequestRecord.setUpdateTime(new Date());
|
|
bsRequestRecordService.updateRequestRecord(bsRequestRecord);
|
|
|
|
// 判断是否充值成功
|
|
if (dataObject.getInteger("status") == 3) {
|
|
new Thread(() -> {
|
|
|
|
JSONObject object = new JSONObject();
|
|
|
|
object.put("type" , 3);
|
|
object.put("productId" , rechargeOrder.getOperatorType());
|
|
object.put("companyId" , rechargeOrder.getCompanyId());
|
|
object.put("price" , rechargeOrder.getPayRealPrice());
|
|
object.put("userId" , rechargeOrder.getUserId());
|
|
object.put("orderId" , rechargeOrder.getId());
|
|
object.put("remark" , "话费订单" + rechargeOrder.getOrderNo() + "积分返利:");
|
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
map.put("goldType", 1);
|
|
map.put("resType", 4);
|
|
map.put("userId", rechargeOrder.getUserId());
|
|
map.put("resId", rechargeOrder.getId());
|
|
|
|
List<HighGoldRec> goldRecs = highGoldRecService.getGoldRec(map);
|
|
|
|
if (goldRecs.size() == 0) {
|
|
bsIntegralRebateService.integralRebate(object);
|
|
}
|
|
|
|
HighUser highUser = highUserService.findByUserId(rechargeOrder.getUserId());
|
|
WxMsgConfig.rechargedSuccess(
|
|
rechargeOrder.getRechargeContent() + "充值成功",
|
|
String.valueOf(rechargeOrder.getPayRealPrice()),
|
|
rechargeOrder.getOrderNo(),
|
|
rechargeOrder.getFinishTime(),
|
|
RechargePayType.getNameByType(rechargeOrder.getPayType()),
|
|
highUser.getOpenId());
|
|
}).start();
|
|
childOrder.setStatus(101);
|
|
rechargeOrder.setRechargeStatus(202);
|
|
rechargeOrder.setPayStatus(100);
|
|
|
|
outRechargeOrderService.updateOrder(rechargeOrder);
|
|
outRechargeChildOrderService.updateOrder(childOrder);
|
|
if (rechargeOrder.getPayType() == 6) {
|
|
apiOrderRecord(rechargeOrder);
|
|
}
|
|
|
|
} else {
|
|
callbackResult(childOrder , rechargeOrder);
|
|
}
|
|
|
|
response.setCharacterEncoding("UTF-8");
|
|
response.setContentType("text/html;charset=utf-8");
|
|
PrintWriter writer= response.getWriter();
|
|
writer.write("SUCCESS");
|
|
|
|
|
|
} catch (Exception e) {
|
|
log.error("WechatPayController --> wechatNotify() error!", e);
|
|
}
|
|
}
|
|
|
|
@RequestMapping(value = "/rechargeCallbackByLy", method = RequestMethod.POST)
|
|
@ApiOperation(value = "龙阅充值回调")
|
|
@ResponseBody
|
|
public void rechargeCallbackByLy(
|
|
@RequestParam(name = "out_trade_num", required = true) String out_trade_num,
|
|
@RequestParam(name = "userid", required = true) Long userid,
|
|
@RequestParam(name = "state", required = true) Long state,
|
|
@RequestBody String reqBodyStr ,
|
|
HttpServletRequest request, HttpServletResponse response) {
|
|
try {
|
|
// 推送记录
|
|
HighGasOrderPush highGasOrderPush = new HighGasOrderPush();
|
|
highGasOrderPush.setType(OrderPushType.type2.getType());
|
|
highGasOrderPush.setOrderNo(out_trade_num);
|
|
highGasOrderPush.setCreateTime(new Date());
|
|
highGasOrderPush.setCode(state.toString());
|
|
highGasOrderPush.setReturnContent(reqBodyStr);
|
|
highGasOrderPushMapper.insert(highGasOrderPush);
|
|
|
|
OutRechargeChildOrder childOrder = outRechargeChildOrderService.findByOrderNo(out_trade_num);
|
|
|
|
OutRechargeOrder rechargeOrder = outRechargeOrderService.findByOrderId(childOrder.getParentOrderId());
|
|
|
|
BsRequestRecord bsRequestRecord = bsRequestRecordService.findRequestRecordByOrderNo(childOrder.getOrderNo());
|
|
|
|
bsRequestRecord.setReturnContent(reqBodyStr);
|
|
bsRequestRecord.setUpdateTime(new Date());
|
|
bsRequestRecordService.updateRequestRecord(bsRequestRecord);
|
|
|
|
|
|
// 判断是否充值成功
|
|
if (state == 1) {
|
|
new Thread(() -> {
|
|
|
|
JSONObject object = new JSONObject();
|
|
|
|
object.put("type" , 3);
|
|
object.put("productId" , rechargeOrder.getOperatorType());
|
|
object.put("companyId" , rechargeOrder.getCompanyId());
|
|
object.put("price" , rechargeOrder.getPayRealPrice());
|
|
object.put("userId" , rechargeOrder.getUserId());
|
|
object.put("orderId" , rechargeOrder.getId());
|
|
object.put("remark" , "话费订单" + rechargeOrder.getOrderNo() + "积分返利:");
|
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
map.put("goldType", 1);
|
|
map.put("resType", 4);
|
|
map.put("userId", rechargeOrder.getUserId());
|
|
map.put("resId", rechargeOrder.getId());
|
|
|
|
List<HighGoldRec> goldRecs = highGoldRecService.getGoldRec(map);
|
|
|
|
if (goldRecs.size() == 0) {
|
|
bsIntegralRebateService.integralRebate(object);
|
|
}
|
|
|
|
HighUser highUser = highUserService.findByUserId(rechargeOrder.getUserId());
|
|
WxMsgConfig.rechargedSuccess(
|
|
rechargeOrder.getRechargeContent() + "充值成功",
|
|
String.valueOf(rechargeOrder.getPayRealPrice()),
|
|
rechargeOrder.getOrderNo(),
|
|
rechargeOrder.getFinishTime(),
|
|
RechargePayType.getNameByType(rechargeOrder.getPayType()),
|
|
highUser.getOpenId());
|
|
}).start();
|
|
childOrder.setStatus(101);
|
|
rechargeOrder.setRechargeStatus(202);
|
|
rechargeOrder.setPayStatus(100);
|
|
rechargeOrder.setFinishTime(new Date());
|
|
|
|
outRechargeOrderService.updateOrder(rechargeOrder);
|
|
outRechargeChildOrderService.updateOrder(childOrder);
|
|
if (rechargeOrder.getPayType() == 6) {
|
|
apiOrderRecord(rechargeOrder);
|
|
}
|
|
} else {
|
|
callbackResult(childOrder , rechargeOrder);
|
|
}
|
|
|
|
response.setCharacterEncoding("UTF-8");
|
|
response.setContentType("text/html;charset=utf-8");
|
|
PrintWriter writer= response.getWriter();
|
|
writer.write("SUCCESS");
|
|
|
|
|
|
} catch (Exception e) {
|
|
log.error("WechatPayController --> wechatNotify() error!", e);
|
|
}
|
|
}
|
|
|
|
@RequestMapping(value = "/rechargeCallbackByCy", method = RequestMethod.POST)
|
|
@ApiOperation(value = "城宇充值回调")
|
|
@ResponseBody
|
|
public void rechargeCallbackByCy(@RequestBody String reqBodyStr, HttpServletRequest request, HttpServletResponse response) {
|
|
try {
|
|
|
|
JSONObject dataObject = JSONObject.parseObject(reqBodyStr, JSONObject.class);
|
|
|
|
// 推送记录
|
|
HighGasOrderPush highGasOrderPush = new HighGasOrderPush();
|
|
highGasOrderPush.setType(OrderPushType.type2.getType());
|
|
highGasOrderPush.setOrderNo(dataObject.getString("out_order_id"));
|
|
highGasOrderPush.setCreateTime(new Date());
|
|
highGasOrderPush.setCode(dataObject.getString("status"));
|
|
highGasOrderPush.setRequestContent(JSONObject.toJSONString(dataObject));
|
|
highGasOrderPush.setReturnContent(dataObject.toJSONString());
|
|
highGasOrderPushMapper.insert(highGasOrderPush);
|
|
//
|
|
//
|
|
// // 1 尖椒 2 龙阅
|
|
// dataObject.put("orderNo" , dataObject.getString("out_order_id"));
|
|
//
|
|
// OutRechargeChildOrder childOrder = outRechargeChildOrderService.findByOrderNo(dataObject.getString("out_order_id"));
|
|
//
|
|
// OutRechargeOrder rechargeOrder = outRechargeOrderService.findByOrderId(childOrder.getParentOrderId());
|
|
//
|
|
// BsRequestRecord bsRequestRecord = bsRequestRecordService.findRequestRecordByOrderNo(childOrder.getOrderNo());
|
|
//
|
|
// bsRequestRecord.setReturnContent(String.valueOf(dataObject));
|
|
// bsRequestRecord.setUpdateTime(new Date());
|
|
// bsRequestRecordService.updateRequestRecord(bsRequestRecord);
|
|
//
|
|
// // 判断是否充值成功
|
|
// if (dataObject.getInteger("status") == 3) {
|
|
// new Thread(() -> {
|
|
// HighUser highUser = highUserService.findByUserId(rechargeOrder.getUserId());
|
|
// WxMsgConfig.rechargedSuccess(
|
|
// rechargeOrder.getRechargeContent() + "充值成功",
|
|
// String.valueOf(rechargeOrder.getPayRealPrice()),
|
|
// rechargeOrder.getOrderNo(),
|
|
// rechargeOrder.getFinishTime(),
|
|
// RechargePayType.getNameByType(rechargeOrder.getPayType()),
|
|
// highUser.getOpenId());
|
|
// }).start();
|
|
// childOrder.setStatus(101);
|
|
// rechargeOrder.setRechargeStatus(202);
|
|
// rechargeOrder.setPayStatus(100);
|
|
//
|
|
// outRechargeOrderService.updateOrder(rechargeOrder);
|
|
// outRechargeChildOrderService.updateOrder(childOrder);
|
|
// if (rechargeOrder.getPayType() == 6) {
|
|
// apiOrderRecord(rechargeOrder);
|
|
// }
|
|
//
|
|
// } else {
|
|
// callbackResult(childOrder , rechargeOrder);
|
|
// }
|
|
|
|
response.setCharacterEncoding("UTF-8");
|
|
response.setContentType("text/html;charset=utf-8");
|
|
PrintWriter writer= response.getWriter();
|
|
writer.write("SUCCESS");
|
|
|
|
|
|
} catch (Exception e) {
|
|
log.error("WechatPayController --> wechatNotify() error!", e);
|
|
}
|
|
}
|
|
|
|
// 回调结果处理
|
|
private void callbackResult(OutRechargeChildOrder childOrder , OutRechargeOrder rechargeOrder) throws Exception {
|
|
|
|
// 101:充值成功 102: 充值中 103:充值失败 104 未充值
|
|
// 订单支付状态 : 101.待支付 102.已支付 100.已完成 104.已取消 105.已退款
|
|
if (childOrder.getStatus() == 102 && rechargeOrder.getPayStatus() == 102) {
|
|
|
|
Date rechargeTime = rechargeOrder.getCreateTimed();
|
|
Date currentTime = new Date();
|
|
// 当前时间减去充值时间
|
|
int hours = (int) ((currentTime.getTime() - rechargeTime.getTime()) / (1000 * 60 * 60));
|
|
|
|
// // 判断快充 并且 充值时间小于6
|
|
// if (rechargeOrder.getRechargeType() == 1 && hours < 6) {
|
|
// outRechargeOrderService.pollRequest(rechargeOrder);
|
|
// return;
|
|
// }
|
|
// 判断慢充 并且 充值时间小于72
|
|
if (hours < 72) {
|
|
outRechargeOrderService.pollRequest(rechargeOrder);
|
|
return;
|
|
}
|
|
|
|
rechargeOrder.setRechargeStatus(203);
|
|
childOrder.setStatus(103);
|
|
outRechargeOrderService.updateOrder(rechargeOrder);
|
|
outRechargeChildOrderService.updateOrder(childOrder);
|
|
|
|
outRechargeOrderService.rechargeOrderToRefund(rechargeOrder.getId());
|
|
|
|
|
|
new Thread(() -> {
|
|
HighUser highUser = highUserService.findByUserId(rechargeOrder.getUserId());
|
|
WxMsgConfig.rechargedFail(
|
|
rechargeOrder.getRechargeContent() + "充值失败",
|
|
String.valueOf(rechargeOrder.getPayRealPrice()),
|
|
highUser.getOpenId());
|
|
}).start();
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
@RequestMapping(value="/apiCallBack",method = RequestMethod.POST)
|
|
@ResponseBody
|
|
@ApiOperation(value = "apiCallBack")
|
|
public String test(@RequestBody String reqBodyStr) {
|
|
try {
|
|
if (StringUtils.isBlank(reqBodyStr)) {
|
|
log.error("orderToPay error!", "参数错误");
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, "");
|
|
}
|
|
|
|
System.out.println("reqBodyStr");
|
|
|
|
return "SUCCESS";
|
|
|
|
|
|
} catch (Exception e) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, "");
|
|
}
|
|
}
|
|
|
|
|
|
@RequestMapping(value="/orderToPayByWx",method = RequestMethod.POST)
|
|
@ResponseBody
|
|
@ApiOperation(value = "微信订单支付发起支付")
|
|
public ResponseData orderToPayByWx(@RequestBody String reqBodyStr) {
|
|
try {
|
|
if (StringUtils.isBlank(reqBodyStr)) {
|
|
log.error("orderToPay error!", "参数错误");
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, "");
|
|
}
|
|
JSONObject jsonObject = JSONObject.parseObject(reqBodyStr);
|
|
Long orderId = jsonObject.getLong("orderId");
|
|
Integer openIdType = jsonObject.getInteger("openIdType"); // openId类型 1:小程序 2:公众号
|
|
String openId = jsonObject.getString("openId"); // openId
|
|
if (orderId == null || StringUtils.isBlank(openId)) {
|
|
log.error("orderToPay error!", "参数错误");
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, "");
|
|
}
|
|
|
|
// 订单
|
|
OutRechargeOrder order = outRechargeOrderService.findByOrderId(orderId);
|
|
if (order == null) {
|
|
log.error("orderToPay error!", "未找到订单信息");
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未找到订单信息");
|
|
}
|
|
|
|
// 订单状态 : 订单支付状态 : 101.待支付 102.已支付 100.已完成 104.已取消 105.已退款
|
|
if (order.getPayStatus() != 101) {
|
|
log.error("orderToPayByWx error!", "无法支付,订单不处于待支付状态");
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "无法支付,订单不处于待支付状态");
|
|
}
|
|
|
|
Map<String,Object> map = new HashMap<>();
|
|
map.put("orderNo", order.getOrderNo());
|
|
map.put("payPrice", order.getPayRealPrice());
|
|
map.put("orderScene", "RECHARGE_ORDER");
|
|
map.put("body","充值话费");
|
|
map.put("subject","充值话费");
|
|
|
|
//微信支付
|
|
String nonce_str = MD5Util.MD5Encode(String.valueOf(ThreadLocalRandom.current().nextInt(10000)), "UTF-8");
|
|
int total_fee = MathUtils.objectConvertBigDecimal(map.get("payPrice")).multiply(new BigDecimal("100")).intValue();
|
|
WeChatPayReqInfo weChatPayReqInfo = new WeChatPayReqInfo();
|
|
weChatPayReqInfo.setAppid(SysConst.getSysConfig().getWxMchAppId()); //公众号id
|
|
weChatPayReqInfo.setMch_id(SysConst.getSysConfig().getWxMchId()); //商户号
|
|
if (openIdType != null && openIdType.equals(2)) {
|
|
weChatPayReqInfo.setSub_appid("wxa075e8509802f826"); //商户号公众号
|
|
} else {
|
|
weChatPayReqInfo.setSub_appid(SysConst.getSysConfig().getWxSubAppId());//小程序
|
|
}
|
|
weChatPayReqInfo.setSub_mch_id("1614670195");
|
|
weChatPayReqInfo.setSub_openid(openId);
|
|
weChatPayReqInfo.setNonce_str(nonce_str); //随机字符串
|
|
weChatPayReqInfo.setBody(map.get("body").toString()); //商品描述
|
|
weChatPayReqInfo.setOut_trade_no(map.get("orderNo").toString()); //商户订单号
|
|
weChatPayReqInfo.setTotal_fee(total_fee); //总金额
|
|
weChatPayReqInfo.setSpbill_create_ip("139.159.177.244"); //终端ip
|
|
weChatPayReqInfo.setNotify_url(SysConst.getSysConfig().getNotifyUrl()); //通知url
|
|
weChatPayReqInfo.setTrade_type("JSAPI"); //交易类型
|
|
weChatPayReqInfo.setAttach(map.get("orderScene").toString());
|
|
weChatPayReqInfo.setProfit_sharing("N");
|
|
//附加数据,区分订单类型
|
|
Map<String,String> payMap = new HashMap<>();
|
|
|
|
payMap.put("app_id", weChatPayReqInfo.getSub_appid());
|
|
payMap.put("api_key",SysConst.getSysConfig().getWxApiKey());
|
|
payMap.put("unified_order_url",SysConst.getSysConfig().getWxUnifiedOrderUrl());
|
|
SortedMap<Object, Object> sortedMap = wechatPayUtil.goWechatPay(weChatPayReqInfo,payMap);
|
|
return ResponseMsgUtil.success(sortedMap);
|
|
} catch (Exception e) {
|
|
log.error("orderToPay error!", e);
|
|
return ResponseMsgUtil.exception(e);
|
|
}
|
|
}
|
|
|
|
@RequestMapping(value="/hltUnionCardPay",method = RequestMethod.POST)
|
|
@ResponseBody
|
|
@ApiOperation(value = "工会卡支付")
|
|
public ResponseData hltUnionCardPay(@RequestBody JSONObject body,HttpServletRequest request) {
|
|
try {
|
|
// 用户
|
|
SessionObject sessionObject = userCenter.getSessionObject(request);
|
|
HighUserModel userInfoModel = (HighUserModel) sessionObject.getObject();
|
|
|
|
if (body == null
|
|
|| body.getLong("orderId") == null
|
|
|| StringUtils.isBlank(body.getString("password"))
|
|
|| StringUtils.isBlank(body.getString("cardNo"))
|
|
) {
|
|
log.error("orderToPay error!", "参数错误");
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, "");
|
|
}
|
|
|
|
// 订单
|
|
OutRechargeOrder order = outRechargeOrderService.findByOrderId(body.getLong("orderId"));
|
|
|
|
if (order == null) {
|
|
log.error("hltUnionCardPay error!", "未找到订单信息");
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未找到订单信息");
|
|
}
|
|
|
|
// 订单状态 : 订单支付状态 : 101.待支付 102.已支付 100.已完成 104.已取消 105.已退款
|
|
if (order.getPayStatus() != 101) {
|
|
log.error("hltUnionCardPay error!", "无法支付,订单不处于待支付状态");
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "无法支付,订单不处于待支付状态");
|
|
}
|
|
|
|
// 查询用户支付密码
|
|
HighUserPayPassword userPayPassword = highUserPayPasswordService.getDetailByUser(order.getUserId());
|
|
|
|
if (userPayPassword == null) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.NOT_SET_USER_PAY_PWD, "");
|
|
}
|
|
if (StringUtils.isBlank(body.getString("password"))) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.NOT_ENTER_USER_PAY_PWD, "");
|
|
}
|
|
// 校验支付密码
|
|
if (!AESEncodeUtil.aesEncrypt(body.getString("password")).equals(userPayPassword.getPassword())) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.USER_PAY_PWD_ERROR, "");
|
|
}
|
|
|
|
// 查询用户与卡号的关系
|
|
HighUserCard userCard = highUserCardService.getDetailByUserCardNo(userInfoModel.getHighUser().getId(), body.getString("cardNo"));
|
|
if (userCard == null) {
|
|
log.error("hltUnionCardPay() ERROR", "未绑定卡号");
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未绑定卡号");
|
|
}
|
|
|
|
outRechargeOrderService.hltUnionCardPay(userCard, order);
|
|
|
|
return ResponseMsgUtil.success(outRechargeOrderService.findByOrderId(body.getLong("orderId")));
|
|
} catch (Exception e) {
|
|
log.error("hltUnionCardPay error!", e);
|
|
return ResponseMsgUtil.exception(e);
|
|
}
|
|
}
|
|
|
|
@RequestMapping(value="/orderToUnionPay",method = RequestMethod.POST)
|
|
@ResponseBody
|
|
@ApiOperation(value = "订单支付发起银联支付")
|
|
public ResponseData orderToUnionPay(@RequestBody String reqBodyStr,HttpServletRequest request) {
|
|
try {
|
|
// 用户
|
|
SessionObject sessionObject = userCenter.getSessionObject(request);
|
|
HighUserModel userInfoModel = (HighUserModel) sessionObject.getObject();
|
|
|
|
if (StringUtils.isBlank(reqBodyStr)) {
|
|
log.error("orderToPay error!", "参数错误");
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, "");
|
|
}
|
|
JSONObject jsonObject = JSONObject.parseObject(reqBodyStr);
|
|
Long orderId = jsonObject.getLong("orderId");
|
|
|
|
if (orderId == null) {
|
|
log.error("orderToPay error!", "参数错误");
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, "");
|
|
}
|
|
// 订单
|
|
OutRechargeOrder order = outRechargeOrderService.findByOrderId(orderId);
|
|
if (order == null) {
|
|
log.error("hltUnionCardPay error!", "未找到订单信息");
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未找到订单信息");
|
|
}
|
|
|
|
// 订单状态 : 订单支付状态 : 101.待支付 102.已支付 100.已完成 104.已取消 105.已退款
|
|
if (order.getPayStatus() != 101) {
|
|
log.error("hltUnionCardPay error!", "无法支付,订单不处于待支付状态");
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "无法支付,订单不处于待支付状态");
|
|
}
|
|
|
|
return ResponseMsgUtil.success(unionPayConfig.upPreOrder(UnionPayConfig.MER_ID2, UnionPayConfig.TERM_ID2, order.getOrderNo(), order.getPayRealPrice(), "话费充值", CommonSysConst.getSysConfig().getUnionPayTelNotifyUrl(), request));
|
|
|
|
} catch (Exception e) {
|
|
log.error("orderToPay error!", e);
|
|
return ResponseMsgUtil.exception(e);
|
|
}
|
|
}
|
|
|
|
|
|
private void apiOrderRecord(OutRechargeOrder rechargeOrder) {
|
|
Map<String, Object> orderMap = new HashMap<>();
|
|
orderMap.put("orderId" , rechargeOrder.getId());
|
|
|
|
// 查询是否用重复订单
|
|
ApiOrderRecord apiOrderRecord = apiOrderRecordService.queryOrderResult(orderMap);
|
|
|
|
apiOrderRecord.setStatus(100);
|
|
apiOrderRecord.setRequestTime(new Date());
|
|
apiOrderRecordService.updateOrderRecord(apiOrderRecord);
|
|
|
|
}
|
|
}
|
|
|