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);

                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);

    }
}
