diff --git a/hai-bweb/src/main/java/com/bweb/controller/OutRechargeOrderController.java b/hai-bweb/src/main/java/com/bweb/controller/OutRechargeOrderController.java
index dba5d200..afb35821 100644
--- a/hai-bweb/src/main/java/com/bweb/controller/OutRechargeOrderController.java
+++ b/hai-bweb/src/main/java/com/bweb/controller/OutRechargeOrderController.java
@@ -52,7 +52,6 @@ public class OutRechargeOrderController {
     @Resource
     private OutRechargeOrderService outRechargeOrderService;
 
-
     @Resource
     private GoodsOrderServiceImpl goodsOrderService;
 
diff --git a/hai-cweb/src/main/java/com/cweb/controller/HighTestController.java b/hai-cweb/src/main/java/com/cweb/controller/HighTestController.java
index 4bc59d0a..aeb41292 100644
--- a/hai-cweb/src/main/java/com/cweb/controller/HighTestController.java
+++ b/hai-cweb/src/main/java/com/cweb/controller/HighTestController.java
@@ -1 +1 @@
-package com.cweb.controller;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.cweb.config.SysConst;
import com.hai.common.exception.ErrorCode;
import com.hai.common.exception.ErrorHelp;
import com.hai.common.exception.SysCode;
import com.hai.common.pay.util.XmlUtil;
import com.hai.common.pay.util.sdk.WXPayConstants;
import com.hai.common.utils.*;
import com.hai.config.*;
import com.hai.dao.HighGasOrderPushMapper;
import com.hai.entity.*;
import com.hai.model.*;
import com.hai.service.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.ssl.SSLContexts;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Controller;
import org.springframework.util.IdGenerator;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.net.ssl.SSLContext;
import java.io.FileInputStream;
import java.math.BigDecimal;
import java.security.KeyStore;
import java.util.*;

/**
 * @Auther: 胡锐
 * @Description:
 * @Date: 2021/3/26 23:08
 */
@Controller
@RequestMapping(value = "/test")
@Api(value = "订单接口")
public class HighTestController {

    private static Logger log = LoggerFactory.getLogger(HighTestController.class);

    @Resource
    private HighMerchantService highMerchantService;

    @Resource
    private HighMerchantStoreService highMerchantStoreService;

    @Resource
    private HighGasOilPriceService highGasOilPriceService;

    @Resource
    private HighOrderService highOrderService;

    @Resource
    private HighProfitSharingRecordService highProfitSharingRecordService;

    @Resource
    private HighGasOrderPushMapper highGasOrderPushMapper;

    @Resource
    private HuiLianTongConfig huiLianTongConfig;

    @Resource
    private UnionPayConfig unionPayConfig;

    @Resource
    private UnionUserConfig unionUserConfig;

    @RequestMapping(value = "/initTYMerchantStore", method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation(value = "初始化加油站")
    public ResponseData initTYMerchantStore(@RequestParam(name = "merchantId", required = true) Long merchantId) throws Exception {

        HighMerchantModel merchant = highMerchantService.getMerchantById(merchantId);
        if (merchant == null) {
            throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未找到商户");
        }
        JSONObject jsonObjectP = TuanYouConfig.queryGasInfoListByPage(1, 1000);
        JSONObject resultObjectP = jsonObjectP.getObject("result", JSONObject.class);

        for (int i = 1; i <= resultObjectP.getInteger("totalPageNum").intValue();i++) {
            JSONObject jsonObject = TuanYouConfig.queryGasInfoListByPage(i, 1000);
            JSONObject resultObject = jsonObject.getObject("result", JSONObject.class);
            JSONArray jsonArray = resultObject.getJSONArray("gasInfoList");
            HighMerchantStore highMerchantStore;
            HighGasOilPrice highGasOilPrice;
            for (Object gasObject : jsonArray) {
                JSONObject object = JSONObject.parseObject(JSONObject.toJSONString(gasObject));
                HighMerchantStoreModel store = highMerchantStoreService.getMerchantStoreByKey(object.getString("gasId"));
                if (store != null) {
                    store.setType(1);
                    store.setMerchantId(merchant.getId());
                    store.setCompanyId(merchant.getCompanyId());
                    store.setStoreKey(object.getString("gasId"));
                    store.setStoreName(object.getString("gasName"));
                    store.setStoreLogo(object.getString("gasLogoSmall"));
                    store.setRegionId(object.getLong("provinceCode"));
                    store.setRegionName(object.getString("provinceName"));
                    store.setAddress(object.getString("gasAddress"));
                    store.setLongitude(object.getString("gasAddressLongitude"));
                    store.setLatitude(object.getString("gasAddressLatitude"));
                    store.setStatus(object.getInteger("gasStatus"));
                    store.setOperatorId(0L);
                    store.setOperatorName("系统创建");
                    store.setUpdateTime(new Date());
                    store.setExt1(object.getString("gasSourceId"));
                    highMerchantStoreService.updateMerchantStoreDetail(store);

                    JSONArray oilPriceList = object.getJSONArray("oilPriceList");
                    for (Object oilPrice : oilPriceList) {
                        JSONObject oilPriceObject = JSONObject.parseObject(JSONObject.toJSONString(oilPrice));
                        // 查询门店油号
                        highGasOilPrice = highGasOilPriceService.getGasOilPriceByStoreAndOilNo(store.getId(), oilPriceObject.getInteger("oilNo"));
                        if (highGasOilPrice == null) {
                            highGasOilPrice = new HighGasOilPrice();
                            highGasOilPrice.setMerchantStoreId(store.getId());
                            highGasOilPrice.setOilNo(oilPriceObject.getInteger("oilNo"));
                            highGasOilPrice.setOilNoName(oilPriceObject.getString("oilNoName"));
                            highGasOilPrice.setPriceVip(oilPriceObject.getBigDecimal("priceVip"));
                            highGasOilPrice.setPriceGun(oilPriceObject.getBigDecimal("priceGun"));
                            highGasOilPrice.setPriceOfficial(oilPriceObject.getBigDecimal("priceOfficial"));
                            highGasOilPrice.setOilType(oilPriceObject.getInteger("oilType"));
                            highGasOilPrice.setOilTypeName(oilPriceObject.getString("oilTypeName"));
                        } else {
                            highGasOilPrice.setMerchantStoreId(store.getId());
                            highGasOilPrice.setOilNo(oilPriceObject.getInteger("oilNo"));
                            highGasOilPrice.setOilNoName(oilPriceObject.getString("oilNoName"));
                            highGasOilPrice.setPriceVip(oilPriceObject.getBigDecimal("priceVip"));
                            highGasOilPrice.setPriceGun(oilPriceObject.getBigDecimal("priceGun"));
                            highGasOilPrice.setPriceOfficial(oilPriceObject.getBigDecimal("priceOfficial"));
                            highGasOilPrice.setOilType(oilPriceObject.getInteger("oilType"));
                            highGasOilPrice.setOilTypeName(oilPriceObject.getString("oilTypeName"));
                        }
                        highGasOilPriceService.editGasOilPrice(highGasOilPrice);
                    }
                } else {
                    highMerchantStore = new HighMerchantStore();
                    highMerchantStore.setType(1);
                    highMerchantStore.setMerchantId(merchant.getId());
                    highMerchantStore.setCompanyId(merchant.getCompanyId());
                    highMerchantStore.setStoreKey(object.getString("gasId"));
                    highMerchantStore.setStoreName(object.getString("gasName"));
                    highMerchantStore.setStoreLogo(object.getString("gasLogoSmall"));
                    highMerchantStore.setRegionId(object.getLong("provinceCode"));
                    highMerchantStore.setRegionName(object.getString("provinceName"));
                    highMerchantStore.setAddress(object.getString("gasAddress"));
                    highMerchantStore.setLongitude(object.getString("gasAddressLongitude"));
                    highMerchantStore.setLatitude(object.getString("gasAddressLatitude"));
                    highMerchantStore.setStatus(1);
                    highMerchantStore.setOperatorId(0L);
                    highMerchantStore.setOperatorName("系统创建");
                    highMerchantStore.setCreateTime(new Date());
                    highMerchantStore.setUpdateTime(new Date());
                    highMerchantStore.setExt1(object.getString("gasSourceId"));
                    HighMerchantStoreModel merchantStoreModel = new HighMerchantStoreModel();
                    BeanUtils.copyProperties(highMerchantStore, merchantStoreModel);
                    highMerchantStoreService.insertMerchantStore(merchantStoreModel);

                    JSONArray oilPriceList = object.getJSONArray("oilPriceList");
                    for (Object oilPrice : oilPriceList) {
                        JSONObject oilPriceObject = JSONObject.parseObject(JSONObject.toJSONString(oilPrice));
                        highGasOilPrice = new HighGasOilPrice();
                        highGasOilPrice.setMerchantStoreId(merchantStoreModel.getId());
                        highGasOilPrice.setOilNo(oilPriceObject.getInteger("oilNo"));
                        highGasOilPrice.setOilNoName(oilPriceObject.getString("oilNoName"));
                        highGasOilPrice.setPriceVip(oilPriceObject.getBigDecimal("priceVip"));
                        highGasOilPrice.setPriceGun(oilPriceObject.getBigDecimal("priceGun"));
                        highGasOilPrice.setPriceOfficial(oilPriceObject.getBigDecimal("priceOfficial"));
                        highGasOilPrice.setOilType(oilPriceObject.getInteger("oilType"));
                        highGasOilPrice.setOilTypeName(oilPriceObject.getString("oilTypeName"));
                        highGasOilPriceService.editGasOilPrice(highGasOilPrice);
                    }
                }
            }
        }
        return ResponseMsgUtil.success("初始化完成");
    }

    @RequestMapping(value = "/pushTuanYouOrder", method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation(value = "推送团油订单")
    public ResponseData pushTuanYouOrder() {
        try {
            HighOrder order = highOrderService.getOrderByOrderNo("HF2021102112141171406");
            for (HighChildOrder highChildOrder : order.getHighChildOrderList()) {
                HighMerchantStoreModel store = highMerchantStoreService.getMerchantStoreById(highChildOrder.getGoodsId());
                // 推送团油订单
                Map<String, Object> paramMap = new HashMap<>();
                paramMap.put("gasId", store.getStoreKey());
                paramMap.put("oilNo", highChildOrder.getGasOilNo());
                paramMap.put("gunNo", highChildOrder.getGasGunNo());
                BigDecimal priceGun = highChildOrder.getGasPriceGun();
                BigDecimal priceVip = highChildOrder.getGasPriceVip();
                paramMap.put("priceGun", priceGun);  // 枪单价
                paramMap.put("priceVip", priceVip);  // 优惠价
                paramMap.put("driverPhone", order.getMemPhone());
                // paramMap.put("driverPhone", "17726395120");
                paramMap.put("thirdSerialNo", order.getOrderNo());
                paramMap.put("refuelingAmount", highChildOrder.getTotalPrice());

                // 油品类型 1:汽油:2:柴油;3:天然气
                if (highChildOrder.getGasOilType() == 1) {
                    paramMap.put("accountNo", CommonSysConst.getSysConfig().getTuanYouGasolineAccount());
                } else if (highChildOrder.getGasOilType() == 2) {
                    paramMap.put("accountNo", CommonSysConst.getSysConfig().getTuanYouDieselAccount());
                }
                JSONObject orderPushObject = TuanYouConfig.refuelingOrderPush(paramMap);
                // 推送团油订单记录
                HighGasOrderPush highGasOrderPush = new HighGasOrderPush();
                highGasOrderPush.setCreateTime(new Date());
                highGasOrderPush.setCode(orderPushObject.getString("code"));
                highGasOrderPush.setRequestContent(JSONObject.toJSONString(paramMap));
                highGasOrderPush.setReturnContent(orderPushObject.toJSONString());
                highGasOrderPushMapper.insert(highGasOrderPush);

                if (orderPushObject != null && orderPushObject.getString("code").equals("200")) {
                    highChildOrder.setGasOrderNo(orderPushObject.getJSONObject("result").getString("orderNo"));
                }
                highOrderService.updateOrder(order);
            }
            return ResponseMsgUtil.success(order);
        } catch (Exception e) {
            log.error("HighOrderController --> getOrderById() error!", e);
            return ResponseMsgUtil.exception(e);
        }
    }

    @RequestMapping(value = "/queryCompanyAccountInfo2JD", method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation(value = "查询团油余额")
    public ResponseData queryCompanyAccountInfo2JD() {
        try {

            return ResponseMsgUtil.success(TuanYouConfig.queryCompanyAccountInfo2JD());
        } catch (Exception e) {
            log.error("HighOrderController --> queryCompanyAccountInfo2JD() error!", e);
            return ResponseMsgUtil.exception(e);
        }
    }

    @RequestMapping(value = "/couJointDist", method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation(value = "派发贵州卡券")
    public ResponseData couJointDist(@RequestParam(name = "token", required = true) String token) {
        try {
            return ResponseMsgUtil.success(HuiLianTongConfig.couJointDist(token,"HF"+System.currentTimeMillis(),"20JY000251",2,"17726395120", "oArhO6XxKSvjI9wLP3cTK-iSG8yY"));
        } catch (Exception e) {
            log.error("HighOrderController --> getOrderById() error!", e);
            return ResponseMsgUtil.exception(e);
        }
    }

    @RequestMapping(value = "/unionPay", method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation(value = "银联支付") 
    public ResponseData unionPay() {
        try {
            return ResponseMsgUtil.success(unionPayConfig.upPreOrder("HF"+System.currentTimeMillis(), new BigDecimal("1"), "test",CommonSysConst.getSysConfig().getUnionPayNotifyUrl()));
        } catch (Exception e) {
            log.error("HighOrderController --> getOrderById() error!", e);
            return ResponseMsgUtil.exception(e);
        }
    }

    @RequestMapping(value = "/getToken", method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation(value = "获取贵州中石化token")
    public ResponseData getToken() {
        try {
            return ResponseMsgUtil.success(huiLianTongConfig.getToken());
        } catch (Exception e) {
            log.error("HighOrderController --> getToken() error!", e);
            return ResponseMsgUtil.exception(e);
        }
    }

    @RequestMapping(value = "/unionTradeQuery", method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation(value = "银联交易查询")
    public ResponseData unionTradeQuery(@RequestParam(name = "paySerialNo", required = true) String paySerialNo) {
        try {
            return ResponseMsgUtil.success(UnionPayConfig.tradeQuery(paySerialNo));
        } catch (Exception e) {
            log.error("HighOrderController --> unionTradeQuery() error!", e);
            return ResponseMsgUtil.exception(e);
        }
    }

    @RequestMapping(value = "/getBackendToken", method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation(value = "获取访问令牌backendToken")
    public ResponseData getBackendToken() {
        try {
            return ResponseMsgUtil.success(unionUserConfig.getBackendToken());
        } catch (Exception e) {
            log.error("HighOrderController --> getBackendToken() error!", e);
            return ResponseMsgUtil.exception(e);
        }
    }

    @RequestMapping(value = "/wxSplitAccount", method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation(value = "微信分账")
    public ResponseData wxSplitAccount() {
        try {
            HighOrder orderNo = highOrderService.getOrderByOrderNo("HF2021101812025050304");
            wxProfitsharing(orderNo.getOrderNo(),orderNo.getPaySerialNo(),orderNo.getPayRealPrice());
            return ResponseMsgUtil.success("分账成功");
        } catch (Exception e) {
            log.error("HighOrderController --> getOrderById() error!", e);
            return ResponseMsgUtil.exception(e);
        }
    }

    @RequestMapping(value = "/unionStagingPay", method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation(value = "银联分期支付")
    public ResponseData unionStagingPay() {
        try {

/*            String orderNo = DateUtil.format(new Date(), DateUtil.YMDHMS);
            orderNo += IDGenerator.nextId(28 - orderNo.length());*/

            String orgTrace = CommonSysConst.getSysConfig().getUnionStagingPayOrgId().substring(0,4)
                    +CommonSysConst.getSysConfig().getUnionStagingPayOrgId().substring(CommonSysConst.getSysConfig().getUnionStagingPayOrgId().length() - 4,CommonSysConst.getSysConfig().getUnionStagingPayOrgId().length())
                    +DateUtil.format(new Date(), DateUtil.YMDHMS)
                    +IDGenerator.nextId(6);

            return ResponseMsgUtil.success(UnionStagingPayConfig.advancePay(
                    orgTrace,
                    orgTrace,
                    new BigDecimal("1"),
                    "62285",
                    "c8BHfKVs6l68BBP9KD9jz4QLJCd/IKW/D+EsM0BLKzb/E7l8k4+aO/Y/h5j89s1X",
                    CommonSysConst.getSysConfig().getUnionStagingPayNotifyUrl()));
        } catch (Exception e) {
            log.error("HighOrderController --> unionStagingPay() error!", e);
            return ResponseMsgUtil.exception(e);
        }
    }

    @RequestMapping(value = "/queryStaging", method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation(value = "分期查询")
    public ResponseData queryStaging(@RequestParam(name = "oriOrgTrace", required = true) String oriOrgTrace) {
        try {
            String orgTrace = CommonSysConst.getSysConfig().getUnionStagingPayOrgId().substring(0,4)
                    +CommonSysConst.getSysConfig().getUnionStagingPayOrgId().substring(CommonSysConst.getSysConfig().getUnionStagingPayOrgId().length() - 4,CommonSysConst.getSysConfig().getUnionStagingPayOrgId().length())
                    +DateUtil.format(new Date(), DateUtil.YMDHMS)
                    +IDGenerator.nextId(6);
            return ResponseMsgUtil.success(UnionStagingPayConfig.queryStaging(orgTrace,oriOrgTrace ,"", new Date()));

        } catch (Exception e) {
            log.error("HighOrderController --> unionStagingPay() error!", e);
            return ResponseMsgUtil.exception(e);
        }
    }

    @RequestMapping(value = "/query", method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation(value = "订单查询")
    public ResponseData query(@RequestParam(name = "oriOrgTrace", required = true) String oriOrgTrace) {
        try {
            String orgTrace = CommonSysConst.getSysConfig().getUnionStagingPayOrgId().substring(0,4)
                    +CommonSysConst.getSysConfig().getUnionStagingPayOrgId().substring(CommonSysConst.getSysConfig().getUnionStagingPayOrgId().length() - 4,CommonSysConst.getSysConfig().getUnionStagingPayOrgId().length())
                    +DateUtil.format(new Date(), DateUtil.YMDHMS)
                    +IDGenerator.nextId(6);
            return ResponseMsgUtil.success(UnionStagingPayConfig.query(orgTrace,oriOrgTrace ,"", new Date()));

        } catch (Exception e) {
            log.error("HighOrderController --> unionStagingPay() error!", e);
            return ResponseMsgUtil.exception(e);
        }
    }

    @RequestMapping(value = "/mposrefund", method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation(value = "分期退款")
    public ResponseData mposrefund(@RequestParam(name = "oriOrgTrace", required = true) String oriOrgTrace) {
        try {
            String orgTrace = CommonSysConst.getSysConfig().getUnionStagingPayOrgId().substring(0,4)
                    +CommonSysConst.getSysConfig().getUnionStagingPayOrgId().substring(CommonSysConst.getSysConfig().getUnionStagingPayOrgId().length() - 4,CommonSysConst.getSysConfig().getUnionStagingPayOrgId().length())
                    +DateUtil.format(new Date(), DateUtil.YMDHMS)
                    +IDGenerator.nextId(6);
            return ResponseMsgUtil.success(UnionStagingPayConfig.standardRefund(orgTrace,oriOrgTrace ,new BigDecimal("1"), "", new Date()));

        } catch (Exception e) {
            log.error("HighOrderController --> unionStagingPay() error!", e);
            return ResponseMsgUtil.exception(e);
        }
    }

    @RequestMapping(value = "/mposfindrefund", method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation(value = "分期退款查询")
    public ResponseData mposfindrefund(@RequestParam(name = "oriOrgTrace", required = true) String oriOrgTrace) {
        try {
            String orgTrace = CommonSysConst.getSysConfig().getUnionStagingPayOrgId().substring(0,4)
                    +CommonSysConst.getSysConfig().getUnionStagingPayOrgId().substring(CommonSysConst.getSysConfig().getUnionStagingPayOrgId().length() - 4,CommonSysConst.getSysConfig().getUnionStagingPayOrgId().length())
                    +DateUtil.format(new Date(), DateUtil.YMDHMS)
                    +IDGenerator.nextId(6);
            return ResponseMsgUtil.success(UnionStagingPayConfig.mposfindrefund(orgTrace,oriOrgTrace ,"", new Date()));

        } catch (Exception e) {
            log.error("HighOrderController --> unionStagingPay() error!", e);
            return ResponseMsgUtil.exception(e);
        }
    }

    public void wxProfitsharing(String transaction_id,String out_order_no, BigDecimal amount) {
        try {
            Map<String,String> param = new LinkedHashMap<>();
            param.put("appid", "wx637bd6f7314daa46");
            param.put("mch_id", "1289663601");
            param.put("sub_mch_id" , "1609882817"); // 个体户黎杨珍
            param.put("transaction_id" , transaction_id);
            param.put("out_order_no" , out_order_no);
            param.put("nonce_str" , WxUtils.makeNonStr());

            // 分账金额
            BigDecimal porofitSharingAmount = amount;

            List<Map<String,Object>> receiversList = new ArrayList<>();
            Map<String,Object> receiversMap = new LinkedHashMap<>();
            receiversMap.put("type", "MERCHANT_ID");
            receiversMap.put("account", "1603942866");
            receiversMap.put("amount", porofitSharingAmount.multiply(new BigDecimal("100")).intValue());
            receiversMap.put("description", "分给商户【惠昕石化】");
            receiversList.add(receiversMap);
            param.put("receivers" , JSONObject.toJSONString(receiversList));
            String signStr = WxUtils.generateSignature(param, "Skufk5oi85wDFGl888i6wsRSTkdd5df5" , WXPayConstants.SignType.HMACSHA256);
            param.put("sign" , signStr);
            String resultXmL = this.doRefundRequest(param.get("mch_id"),null, WxUtils.mapToXml(param));

            // 请求分账返回的结果
            ResultProfitSharing resultProfitSharing = XmlUtil.getObjectFromXML(resultXmL, ResultProfitSharing.class);

            if (!resultProfitSharing.getResult_code().equals("FAIL")) {
                HighProfitSharingRecord sharingRecord = new HighProfitSharingRecord();
                sharingRecord.setOutOrderNo(resultProfitSharing.getOut_order_no());
                sharingRecord.setTransactionId(resultProfitSharing.getTransaction_id());
                sharingRecord.setOrderId(resultProfitSharing.getOrder_id());
                sharingRecord.setStatus(resultProfitSharing.getResult_code());
                sharingRecord.setPrice(amount);
                sharingRecord.setCreateTime(new Date());
                sharingRecord.setContent(resultXmL);
                highProfitSharingRecordService.insert(sharingRecord);
            }

        } catch (Exception e) {
            log.error("CmsContentController --> getCorporateAdvertising() error!", e);
        }
    }

    public CloseableHttpClient readCertificate(String mchId) throws Exception{
        /**
         * 注意PKCS12证书 是从微信商户平台-》账户设置-》 API安全 中下载的
         */
        KeyStore keyStore = KeyStore.getInstance("PKCS12");
        //P12文件目录 证书路径,这里需要你自己修改,linux下还是windows下的根路径
        FileInputStream instream = new FileInputStream("/home/project/wx_cert/1289663601_apiclient_cert.p12");
        // FileInputStream instream = new FileInputStream("G:\\hurui-project/hai-parent/hai-service/src/main/java/privatekey/1289663601_apiclient_cert.p12");
        try {
            keyStore.load(instream, "1289663601".toCharArray());//这里写密码..默认是你的MCHID
        } finally {
            instream.close();
        }
        SSLContext sslcontext = SSLContexts.custom().loadKeyMaterial(keyStore, "1289663601".toCharArray()).build();//这里也是写密码的
        SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslcontext, SSLConnectionSocketFactory.getDefaultHostnameVerifier());
        // Allow TLSv1 protocol only
        return HttpClients.custom().setSSLSocketFactory(sslsf).build();
    }

    public String doRefundRequest(String mchId, String url, String data) throws Exception {

        //小程序退款需要调用双向证书的认证
        CloseableHttpClient httpClient = readCertificate(mchId);
        try {
            HttpPost httpost = new HttpPost("https://api.mch.weixin.qq.com/secapi/pay/refund"); // 设置响应头信息
            httpost.addHeader("Connection", "keep-alive");
            httpost.addHeader("Accept", "*/*");
            httpost.addHeader("Content-Type", "text/xml");
            httpost.addHeader("Host", "api.mch.weixin.qq.com");
            httpost.addHeader("X-Requested-With", "XMLHttpRequest");
            httpost.addHeader("Cache-Control", "max-age=0");
            httpost.addHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0) ");
            httpost.setEntity(new StringEntity(data, "UTF-8"));
            CloseableHttpResponse response = httpClient.execute(httpost);
            try {
                HttpEntity entity = response.getEntity();
                String jsonStr = EntityUtils.toString(response.getEntity(), "UTF-8");
                EntityUtils.consume(entity);
                return jsonStr;
            } finally {
                response.close();
            }
        } catch (Exception e){
            throw new RuntimeException(e);
        } finally {
            httpClient.close();
        }
    }

}
\ No newline at end of file
+package com.cweb.controller;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.cweb.config.SysConst;
import com.hai.common.exception.ErrorCode;
import com.hai.common.exception.ErrorHelp;
import com.hai.common.exception.SysCode;
import com.hai.common.pay.util.XmlUtil;
import com.hai.common.pay.util.sdk.WXPayConstants;
import com.hai.common.security.SessionObject;
import com.hai.common.utils.*;
import com.hai.config.*;
import com.hai.dao.HighGasOrderPushMapper;
import com.hai.entity.*;
import com.hai.model.*;
import com.hai.service.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.ssl.SSLContexts;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Controller;
import org.springframework.util.IdGenerator;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.net.ssl.SSLContext;
import javax.servlet.http.HttpServletRequest;
import java.io.FileInputStream;
import java.math.BigDecimal;
import java.security.KeyStore;
import java.util.*;

/**
 * @Auther: 胡锐
 * @Description:
 * @Date: 2021/3/26 23:08
 */
@Controller
@RequestMapping(value = "/test")
@Api(value = "订单接口")
public class HighTestController {

    private static Logger log = LoggerFactory.getLogger(HighTestController.class);

    @Resource
    private HighMerchantService highMerchantService;

    @Resource
    private HighMerchantStoreService highMerchantStoreService;

    @Resource
    private HighGasOilPriceService highGasOilPriceService;

    @Resource
    private HighOrderService highOrderService;

    @Resource
    private HighProfitSharingRecordService highProfitSharingRecordService;

    @Resource
    private HighGasOrderPushMapper highGasOrderPushMapper;

    @Resource
    private HuiLianTongConfig huiLianTongConfig;

    @Resource
    private UnionPayConfig unionPayConfig;

    @Resource
    private UnionUserConfig unionUserConfig;



    @RequestMapping(value = "/getHuiLianTongCardInfo", method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation(value = "查询汇联通工会卡详情")
    public ResponseData getHuiLianTongCardInfo(@RequestParam(name = "cardNo", required = true) String cardNo, HttpServletRequest request) {
        try {
            // 用户
//

            JSONObject cardInfo = HuiLianTongUnionCardConfig.queryCardInfo(cardNo);
            if (StringUtils.isBlank(cardInfo.getString("data"))) {
                throw ErrorHelp.genException(SysCode.System, ErrorCode.REQUEST_ERROR, "");
            }
            return ResponseMsgUtil.success(HuiLianTongUnionCardConfig.resolveResponse(cardInfo.getString("data")));

        } catch (Exception e) {
            log.error("HighUserCardController --> getHuiLianTongCardInfo() error!", e);
            return ResponseMsgUtil.exception(e);
        }
    }

    @RequestMapping(value = "/initTYMerchantStore", method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation(value = "初始化加油站")
    public ResponseData initTYMerchantStore(@RequestParam(name = "merchantId", required = true) Long merchantId) throws Exception {

        HighMerchantModel merchant = highMerchantService.getMerchantById(merchantId);
        if (merchant == null) {
            throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未找到商户");
        }
        JSONObject jsonObjectP = TuanYouConfig.queryGasInfoListByPage(1, 1000);
        JSONObject resultObjectP = jsonObjectP.getObject("result", JSONObject.class);

        for (int i = 1; i <= resultObjectP.getInteger("totalPageNum").intValue();i++) {
            JSONObject jsonObject = TuanYouConfig.queryGasInfoListByPage(i, 1000);
            JSONObject resultObject = jsonObject.getObject("result", JSONObject.class);
            JSONArray jsonArray = resultObject.getJSONArray("gasInfoList");
            HighMerchantStore highMerchantStore;
            HighGasOilPrice highGasOilPrice;
            for (Object gasObject : jsonArray) {
                JSONObject object = JSONObject.parseObject(JSONObject.toJSONString(gasObject));
                HighMerchantStoreModel store = highMerchantStoreService.getMerchantStoreByKey(object.getString("gasId"));
                if (store != null) {
                    store.setType(1);
                    store.setMerchantId(merchant.getId());
                    store.setCompanyId(merchant.getCompanyId());
                    store.setStoreKey(object.getString("gasId"));
                    store.setStoreName(object.getString("gasName"));
                    store.setStoreLogo(object.getString("gasLogoSmall"));
                    store.setRegionId(object.getLong("provinceCode"));
                    store.setRegionName(object.getString("provinceName"));
                    store.setAddress(object.getString("gasAddress"));
                    store.setLongitude(object.getString("gasAddressLongitude"));
                    store.setLatitude(object.getString("gasAddressLatitude"));
                    store.setStatus(object.getInteger("gasStatus"));
                    store.setOperatorId(0L);
                    store.setOperatorName("系统创建");
                    store.setUpdateTime(new Date());
                    store.setExt1(object.getString("gasSourceId"));
                    highMerchantStoreService.updateMerchantStoreDetail(store);

                    JSONArray oilPriceList = object.getJSONArray("oilPriceList");
                    for (Object oilPrice : oilPriceList) {
                        JSONObject oilPriceObject = JSONObject.parseObject(JSONObject.toJSONString(oilPrice));
                        // 查询门店油号
                        highGasOilPrice = highGasOilPriceService.getGasOilPriceByStoreAndOilNo(store.getId(), oilPriceObject.getInteger("oilNo"));
                        if (highGasOilPrice == null) {
                            highGasOilPrice = new HighGasOilPrice();
                            highGasOilPrice.setMerchantStoreId(store.getId());
                            highGasOilPrice.setOilNo(oilPriceObject.getInteger("oilNo"));
                            highGasOilPrice.setOilNoName(oilPriceObject.getString("oilNoName"));
                            highGasOilPrice.setPriceVip(oilPriceObject.getBigDecimal("priceVip"));
                            highGasOilPrice.setPriceGun(oilPriceObject.getBigDecimal("priceGun"));
                            highGasOilPrice.setPriceOfficial(oilPriceObject.getBigDecimal("priceOfficial"));
                            highGasOilPrice.setOilType(oilPriceObject.getInteger("oilType"));
                            highGasOilPrice.setOilTypeName(oilPriceObject.getString("oilTypeName"));
                        } else {
                            highGasOilPrice.setMerchantStoreId(store.getId());
                            highGasOilPrice.setOilNo(oilPriceObject.getInteger("oilNo"));
                            highGasOilPrice.setOilNoName(oilPriceObject.getString("oilNoName"));
                            highGasOilPrice.setPriceVip(oilPriceObject.getBigDecimal("priceVip"));
                            highGasOilPrice.setPriceGun(oilPriceObject.getBigDecimal("priceGun"));
                            highGasOilPrice.setPriceOfficial(oilPriceObject.getBigDecimal("priceOfficial"));
                            highGasOilPrice.setOilType(oilPriceObject.getInteger("oilType"));
                            highGasOilPrice.setOilTypeName(oilPriceObject.getString("oilTypeName"));
                        }
                        highGasOilPriceService.editGasOilPrice(highGasOilPrice);
                    }
                } else {
                    highMerchantStore = new HighMerchantStore();
                    highMerchantStore.setType(1);
                    highMerchantStore.setMerchantId(merchant.getId());
                    highMerchantStore.setCompanyId(merchant.getCompanyId());
                    highMerchantStore.setStoreKey(object.getString("gasId"));
                    highMerchantStore.setStoreName(object.getString("gasName"));
                    highMerchantStore.setStoreLogo(object.getString("gasLogoSmall"));
                    highMerchantStore.setRegionId(object.getLong("provinceCode"));
                    highMerchantStore.setRegionName(object.getString("provinceName"));
                    highMerchantStore.setAddress(object.getString("gasAddress"));
                    highMerchantStore.setLongitude(object.getString("gasAddressLongitude"));
                    highMerchantStore.setLatitude(object.getString("gasAddressLatitude"));
                    highMerchantStore.setStatus(1);
                    highMerchantStore.setOperatorId(0L);
                    highMerchantStore.setOperatorName("系统创建");
                    highMerchantStore.setCreateTime(new Date());
                    highMerchantStore.setUpdateTime(new Date());
                    highMerchantStore.setExt1(object.getString("gasSourceId"));
                    HighMerchantStoreModel merchantStoreModel = new HighMerchantStoreModel();
                    BeanUtils.copyProperties(highMerchantStore, merchantStoreModel);
                    highMerchantStoreService.insertMerchantStore(merchantStoreModel);

                    JSONArray oilPriceList = object.getJSONArray("oilPriceList");
                    for (Object oilPrice : oilPriceList) {
                        JSONObject oilPriceObject = JSONObject.parseObject(JSONObject.toJSONString(oilPrice));
                        highGasOilPrice = new HighGasOilPrice();
                        highGasOilPrice.setMerchantStoreId(merchantStoreModel.getId());
                        highGasOilPrice.setOilNo(oilPriceObject.getInteger("oilNo"));
                        highGasOilPrice.setOilNoName(oilPriceObject.getString("oilNoName"));
                        highGasOilPrice.setPriceVip(oilPriceObject.getBigDecimal("priceVip"));
                        highGasOilPrice.setPriceGun(oilPriceObject.getBigDecimal("priceGun"));
                        highGasOilPrice.setPriceOfficial(oilPriceObject.getBigDecimal("priceOfficial"));
                        highGasOilPrice.setOilType(oilPriceObject.getInteger("oilType"));
                        highGasOilPrice.setOilTypeName(oilPriceObject.getString("oilTypeName"));
                        highGasOilPriceService.editGasOilPrice(highGasOilPrice);
                    }
                }
            }
        }
        return ResponseMsgUtil.success("初始化完成");
    }

    @RequestMapping(value = "/pushTuanYouOrder", method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation(value = "推送团油订单")
    public ResponseData pushTuanYouOrder() {
        try {
            HighOrder order = highOrderService.getOrderByOrderNo("HF2021102112141171406");
            for (HighChildOrder highChildOrder : order.getHighChildOrderList()) {
                HighMerchantStoreModel store = highMerchantStoreService.getMerchantStoreById(highChildOrder.getGoodsId());
                // 推送团油订单
                Map<String, Object> paramMap = new HashMap<>();
                paramMap.put("gasId", store.getStoreKey());
                paramMap.put("oilNo", highChildOrder.getGasOilNo());
                paramMap.put("gunNo", highChildOrder.getGasGunNo());
                BigDecimal priceGun = highChildOrder.getGasPriceGun();
                BigDecimal priceVip = highChildOrder.getGasPriceVip();
                paramMap.put("priceGun", priceGun);  // 枪单价
                paramMap.put("priceVip", priceVip);  // 优惠价
                paramMap.put("driverPhone", order.getMemPhone());
                // paramMap.put("driverPhone", "17726395120");
                paramMap.put("thirdSerialNo", order.getOrderNo());
                paramMap.put("refuelingAmount", highChildOrder.getTotalPrice());

                // 油品类型 1:汽油:2:柴油;3:天然气
                if (highChildOrder.getGasOilType() == 1) {
                    paramMap.put("accountNo", CommonSysConst.getSysConfig().getTuanYouGasolineAccount());
                } else if (highChildOrder.getGasOilType() == 2) {
                    paramMap.put("accountNo", CommonSysConst.getSysConfig().getTuanYouDieselAccount());
                }
                JSONObject orderPushObject = TuanYouConfig.refuelingOrderPush(paramMap);
                // 推送团油订单记录
                HighGasOrderPush highGasOrderPush = new HighGasOrderPush();
                highGasOrderPush.setCreateTime(new Date());
                highGasOrderPush.setCode(orderPushObject.getString("code"));
                highGasOrderPush.setRequestContent(JSONObject.toJSONString(paramMap));
                highGasOrderPush.setReturnContent(orderPushObject.toJSONString());
                highGasOrderPushMapper.insert(highGasOrderPush);

                if (orderPushObject != null && orderPushObject.getString("code").equals("200")) {
                    highChildOrder.setGasOrderNo(orderPushObject.getJSONObject("result").getString("orderNo"));
                }
                highOrderService.updateOrder(order);
            }
            return ResponseMsgUtil.success(order);
        } catch (Exception e) {
            log.error("HighOrderController --> getOrderById() error!", e);
            return ResponseMsgUtil.exception(e);
        }
    }

    @RequestMapping(value = "/queryCompanyAccountInfo2JD", method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation(value = "查询团油余额")
    public ResponseData queryCompanyAccountInfo2JD() {
        try {

            return ResponseMsgUtil.success(TuanYouConfig.queryCompanyAccountInfo2JD());
        } catch (Exception e) {
            log.error("HighOrderController --> queryCompanyAccountInfo2JD() error!", e);
            return ResponseMsgUtil.exception(e);
        }
    }

    @RequestMapping(value = "/couJointDist", method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation(value = "派发贵州卡券")
    public ResponseData couJointDist(@RequestParam(name = "token", required = true) String token) {
        try {
            return ResponseMsgUtil.success(HuiLianTongConfig.couJointDist(token,"HF"+System.currentTimeMillis(),"20JY000251",2,"17726395120", "oArhO6XxKSvjI9wLP3cTK-iSG8yY"));
        } catch (Exception e) {
            log.error("HighOrderController --> getOrderById() error!", e);
            return ResponseMsgUtil.exception(e);
        }
    }

    @RequestMapping(value = "/unionPay", method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation(value = "银联支付") 
    public ResponseData unionPay() {
        try {
            return ResponseMsgUtil.success(unionPayConfig.upPreOrder("HF"+System.currentTimeMillis(), new BigDecimal("1"), "test",CommonSysConst.getSysConfig().getUnionPayNotifyUrl()));
        } catch (Exception e) {
            log.error("HighOrderController --> getOrderById() error!", e);
            return ResponseMsgUtil.exception(e);
        }
    }

    @RequestMapping(value = "/getToken", method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation(value = "获取贵州中石化token")
    public ResponseData getToken() {
        try {
            return ResponseMsgUtil.success(huiLianTongConfig.getToken());
        } catch (Exception e) {
            log.error("HighOrderController --> getToken() error!", e);
            return ResponseMsgUtil.exception(e);
        }
    }

    @RequestMapping(value = "/unionTradeQuery", method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation(value = "银联交易查询")
    public ResponseData unionTradeQuery(@RequestParam(name = "paySerialNo", required = true) String paySerialNo) {
        try {
            return ResponseMsgUtil.success(UnionPayConfig.tradeQuery(paySerialNo));
        } catch (Exception e) {
            log.error("HighOrderController --> unionTradeQuery() error!", e);
            return ResponseMsgUtil.exception(e);
        }
    }

    @RequestMapping(value = "/getBackendToken", method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation(value = "获取访问令牌backendToken")
    public ResponseData getBackendToken() {
        try {
            return ResponseMsgUtil.success(unionUserConfig.getBackendToken());
        } catch (Exception e) {
            log.error("HighOrderController --> getBackendToken() error!", e);
            return ResponseMsgUtil.exception(e);
        }
    }

    @RequestMapping(value = "/wxSplitAccount", method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation(value = "微信分账")
    public ResponseData wxSplitAccount() {
        try {
            HighOrder orderNo = highOrderService.getOrderByOrderNo("HF2021101812025050304");
            wxProfitsharing(orderNo.getOrderNo(),orderNo.getPaySerialNo(),orderNo.getPayRealPrice());
            return ResponseMsgUtil.success("分账成功");
        } catch (Exception e) {
            log.error("HighOrderController --> getOrderById() error!", e);
            return ResponseMsgUtil.exception(e);
        }
    }

    @RequestMapping(value = "/unionStagingPay", method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation(value = "银联分期支付")
    public ResponseData unionStagingPay() {
        try {

/*            String orderNo = DateUtil.format(new Date(), DateUtil.YMDHMS);
            orderNo += IDGenerator.nextId(28 - orderNo.length());*/

            String orgTrace = CommonSysConst.getSysConfig().getUnionStagingPayOrgId().substring(0,4)
                    +CommonSysConst.getSysConfig().getUnionStagingPayOrgId().substring(CommonSysConst.getSysConfig().getUnionStagingPayOrgId().length() - 4,CommonSysConst.getSysConfig().getUnionStagingPayOrgId().length())
                    +DateUtil.format(new Date(), DateUtil.YMDHMS)
                    +IDGenerator.nextId(6);

            return ResponseMsgUtil.success(UnionStagingPayConfig.advancePay(
                    orgTrace,
                    orgTrace,
                    new BigDecimal("1"),
                    "62285",
                    "c8BHfKVs6l68BBP9KD9jz4QLJCd/IKW/D+EsM0BLKzb/E7l8k4+aO/Y/h5j89s1X",
                    CommonSysConst.getSysConfig().getUnionStagingPayNotifyUrl()));
        } catch (Exception e) {
            log.error("HighOrderController --> unionStagingPay() error!", e);
            return ResponseMsgUtil.exception(e);
        }
    }

    @RequestMapping(value = "/queryStaging", method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation(value = "分期查询")
    public ResponseData queryStaging(@RequestParam(name = "oriOrgTrace", required = true) String oriOrgTrace) {
        try {
            String orgTrace = CommonSysConst.getSysConfig().getUnionStagingPayOrgId().substring(0,4)
                    +CommonSysConst.getSysConfig().getUnionStagingPayOrgId().substring(CommonSysConst.getSysConfig().getUnionStagingPayOrgId().length() - 4,CommonSysConst.getSysConfig().getUnionStagingPayOrgId().length())
                    +DateUtil.format(new Date(), DateUtil.YMDHMS)
                    +IDGenerator.nextId(6);
            return ResponseMsgUtil.success(UnionStagingPayConfig.queryStaging(orgTrace,oriOrgTrace ,"", new Date()));

        } catch (Exception e) {
            log.error("HighOrderController --> unionStagingPay() error!", e);
            return ResponseMsgUtil.exception(e);
        }
    }

    @RequestMapping(value = "/query", method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation(value = "订单查询")
    public ResponseData query(@RequestParam(name = "oriOrgTrace", required = true) String oriOrgTrace) {
        try {
            String orgTrace = CommonSysConst.getSysConfig().getUnionStagingPayOrgId().substring(0,4)
                    +CommonSysConst.getSysConfig().getUnionStagingPayOrgId().substring(CommonSysConst.getSysConfig().getUnionStagingPayOrgId().length() - 4,CommonSysConst.getSysConfig().getUnionStagingPayOrgId().length())
                    +DateUtil.format(new Date(), DateUtil.YMDHMS)
                    +IDGenerator.nextId(6);
            return ResponseMsgUtil.success(UnionStagingPayConfig.query(orgTrace,oriOrgTrace ,"", new Date()));

        } catch (Exception e) {
            log.error("HighOrderController --> unionStagingPay() error!", e);
            return ResponseMsgUtil.exception(e);
        }
    }

    @RequestMapping(value = "/mposrefund", method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation(value = "分期退款")
    public ResponseData mposrefund(@RequestParam(name = "oriOrgTrace", required = true) String oriOrgTrace) {
        try {
            String orgTrace = CommonSysConst.getSysConfig().getUnionStagingPayOrgId().substring(0,4)
                    +CommonSysConst.getSysConfig().getUnionStagingPayOrgId().substring(CommonSysConst.getSysConfig().getUnionStagingPayOrgId().length() - 4,CommonSysConst.getSysConfig().getUnionStagingPayOrgId().length())
                    +DateUtil.format(new Date(), DateUtil.YMDHMS)
                    +IDGenerator.nextId(6);
            return ResponseMsgUtil.success(UnionStagingPayConfig.standardRefund(orgTrace,oriOrgTrace ,new BigDecimal("1"), "", new Date()));

        } catch (Exception e) {
            log.error("HighOrderController --> unionStagingPay() error!", e);
            return ResponseMsgUtil.exception(e);
        }
    }

    @RequestMapping(value = "/mposfindrefund", method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation(value = "分期退款查询")
    public ResponseData mposfindrefund(@RequestParam(name = "oriOrgTrace", required = true) String oriOrgTrace) {
        try {
            String orgTrace = CommonSysConst.getSysConfig().getUnionStagingPayOrgId().substring(0,4)
                    +CommonSysConst.getSysConfig().getUnionStagingPayOrgId().substring(CommonSysConst.getSysConfig().getUnionStagingPayOrgId().length() - 4,CommonSysConst.getSysConfig().getUnionStagingPayOrgId().length())
                    +DateUtil.format(new Date(), DateUtil.YMDHMS)
                    +IDGenerator.nextId(6);
            return ResponseMsgUtil.success(UnionStagingPayConfig.mposfindrefund(orgTrace,oriOrgTrace ,"", new Date()));

        } catch (Exception e) {
            log.error("HighOrderController --> unionStagingPay() error!", e);
            return ResponseMsgUtil.exception(e);
        }
    }

    public void wxProfitsharing(String transaction_id,String out_order_no, BigDecimal amount) {
        try {
            Map<String,String> param = new LinkedHashMap<>();
            param.put("appid", "wx637bd6f7314daa46");
            param.put("mch_id", "1289663601");
            param.put("sub_mch_id" , "1609882817"); // 个体户黎杨珍
            param.put("transaction_id" , transaction_id);
            param.put("out_order_no" , out_order_no);
            param.put("nonce_str" , WxUtils.makeNonStr());

            // 分账金额
            BigDecimal porofitSharingAmount = amount;

            List<Map<String,Object>> receiversList = new ArrayList<>();
            Map<String,Object> receiversMap = new LinkedHashMap<>();
            receiversMap.put("type", "MERCHANT_ID");
            receiversMap.put("account", "1603942866");
            receiversMap.put("amount", porofitSharingAmount.multiply(new BigDecimal("100")).intValue());
            receiversMap.put("description", "分给商户【惠昕石化】");
            receiversList.add(receiversMap);
            param.put("receivers" , JSONObject.toJSONString(receiversList));
            String signStr = WxUtils.generateSignature(param, "Skufk5oi85wDFGl888i6wsRSTkdd5df5" , WXPayConstants.SignType.HMACSHA256);
            param.put("sign" , signStr);
            String resultXmL = this.doRefundRequest(param.get("mch_id"),null, WxUtils.mapToXml(param));

            // 请求分账返回的结果
            ResultProfitSharing resultProfitSharing = XmlUtil.getObjectFromXML(resultXmL, ResultProfitSharing.class);

            if (!resultProfitSharing.getResult_code().equals("FAIL")) {
                HighProfitSharingRecord sharingRecord = new HighProfitSharingRecord();
                sharingRecord.setOutOrderNo(resultProfitSharing.getOut_order_no());
                sharingRecord.setTransactionId(resultProfitSharing.getTransaction_id());
                sharingRecord.setOrderId(resultProfitSharing.getOrder_id());
                sharingRecord.setStatus(resultProfitSharing.getResult_code());
                sharingRecord.setPrice(amount);
                sharingRecord.setCreateTime(new Date());
                sharingRecord.setContent(resultXmL);
                highProfitSharingRecordService.insert(sharingRecord);
            }

        } catch (Exception e) {
            log.error("CmsContentController --> getCorporateAdvertising() error!", e);
        }
    }

    public CloseableHttpClient readCertificate(String mchId) throws Exception{
        /**
         * 注意PKCS12证书 是从微信商户平台-》账户设置-》 API安全 中下载的
         */
        KeyStore keyStore = KeyStore.getInstance("PKCS12");
        //P12文件目录 证书路径,这里需要你自己修改,linux下还是windows下的根路径
        FileInputStream instream = new FileInputStream("/home/project/wx_cert/1289663601_apiclient_cert.p12");
        // FileInputStream instream = new FileInputStream("G:\\hurui-project/hai-parent/hai-service/src/main/java/privatekey/1289663601_apiclient_cert.p12");
        try {
            keyStore.load(instream, "1289663601".toCharArray());//这里写密码..默认是你的MCHID
        } finally {
            instream.close();
        }
        SSLContext sslcontext = SSLContexts.custom().loadKeyMaterial(keyStore, "1289663601".toCharArray()).build();//这里也是写密码的
        SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslcontext, SSLConnectionSocketFactory.getDefaultHostnameVerifier());
        // Allow TLSv1 protocol only
        return HttpClients.custom().setSSLSocketFactory(sslsf).build();
    }

    public String doRefundRequest(String mchId, String url, String data) throws Exception {

        //小程序退款需要调用双向证书的认证
        CloseableHttpClient httpClient = readCertificate(mchId);
        try {
            HttpPost httpost = new HttpPost("https://api.mch.weixin.qq.com/secapi/pay/refund"); // 设置响应头信息
            httpost.addHeader("Connection", "keep-alive");
            httpost.addHeader("Accept", "*/*");
            httpost.addHeader("Content-Type", "text/xml");
            httpost.addHeader("Host", "api.mch.weixin.qq.com");
            httpost.addHeader("X-Requested-With", "XMLHttpRequest");
            httpost.addHeader("Cache-Control", "max-age=0");
            httpost.addHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0) ");
            httpost.setEntity(new StringEntity(data, "UTF-8"));
            CloseableHttpResponse response = httpClient.execute(httpost);
            try {
                HttpEntity entity = response.getEntity();
                String jsonStr = EntityUtils.toString(response.getEntity(), "UTF-8");
                EntityUtils.consume(entity);
                return jsonStr;
            } finally {
                response.close();
            }
        } catch (Exception e){
            throw new RuntimeException(e);
        } finally {
            httpClient.close();
        }
    }

}
\ No newline at end of file
diff --git a/hai-cweb/src/main/java/com/cweb/controller/OutRechargeOrderController.java b/hai-cweb/src/main/java/com/cweb/controller/OutRechargeOrderController.java
index 4c0edb09..24b2eeab 100644
--- a/hai-cweb/src/main/java/com/cweb/controller/OutRechargeOrderController.java
+++ b/hai-cweb/src/main/java/com/cweb/controller/OutRechargeOrderController.java
@@ -474,6 +474,10 @@ public class OutRechargeOrderController {
 
             outRechargeOrderService.goldPayOrder(userInfoModel.getHighUser().getId(), order.getId());
 
+            if (order.getRechargeType() == 1) {
+
+            }
+
             return ResponseMsgUtil.success("支付成功");
         } catch (Exception e) {
             log.error("orderToPay error!", e);
diff --git a/hai-cweb/src/main/java/com/cweb/controller/pay/CzOrderController.java b/hai-cweb/src/main/java/com/cweb/controller/pay/CzOrderController.java
index 5a07b254..1f0905e3 100644
--- a/hai-cweb/src/main/java/com/cweb/controller/pay/CzOrderController.java
+++ b/hai-cweb/src/main/java/com/cweb/controller/pay/CzOrderController.java
@@ -1,30 +1,50 @@
 package com.cweb.controller.pay;
 
 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.XmlUtil;
+import com.hai.common.pay.util.sdk.WXPayConstants;
 import com.hai.common.security.AESEncodeUtil;
+import com.hai.common.utils.ResponseMsgUtil;
+import com.hai.common.utils.WxUtils;
 import com.hai.config.CommonSysConst;
+import com.hai.config.HuiLianTongUnionCardConfig;
+import com.hai.config.UnionPayConfig;
 import com.hai.config.WxOrderConfig;
 import com.hai.dao.HighGasOrderRefundMapper;
 import com.hai.entity.HighGasOrderRefund;
 import com.hai.entity.HighOrder;
+import com.hai.entity.HighRefundAudit;
 import com.hai.entity.OutRechargeOrder;
 import com.hai.model.OrderRefundModel;
+import com.hai.model.ResponseData;
+import com.hai.service.HighRefundAuditService;
 import com.hai.service.OutRechargeOrderService;
+import com.hai.service.pay.impl.GoodsOrderServiceImpl;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.http.HttpEntity;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.util.EntityUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.ResponseBody;
+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.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
 
 @Controller
 @RequestMapping(value = "/czOrder")
@@ -39,34 +59,40 @@ public class CzOrderController {
     @Resource
     private OutRechargeOrderService outRechargeOrderService;
 
-    @RequestMapping(value = "/orderRefundNotify", method = RequestMethod.POST)
-    @ApiOperation(value = "退款回调")
+    @Resource
+    private GoodsOrderServiceImpl goodsOrderService;
+
+    @Resource
+    private HighRefundAuditService highRefundAuditService;
+
+    @RequestMapping(value = "/rechargeCallback", method = RequestMethod.POST)
+    @ApiOperation(value = "话费充值回调")
     @ResponseBody
-    public void orderRefundNotify(@RequestBody String reqBodyStr, HttpServletRequest request, HttpServletResponse response) {
+    public void rechargeCallback(@RequestBody String reqBodyStr, HttpServletRequest request, HttpServletResponse response) {
         try {
 
 
             JSONObject dataObject = JSONObject.parseObject(reqBodyStr, JSONObject.class);
-            String dataStr = AESEncodeUtil.aesDecryptByBytes(AESEncodeUtil.base64Decode(dataObject.getString("data")), CommonSysConst.getSysConfig().getTuanYouAppSecret());
-            JSONObject object = JSONObject.parseObject(dataStr);
 
             HighGasOrderRefund highGasOrderRefund = new HighGasOrderRefund();
             highGasOrderRefund.setCreateTime(new Date());
-            highGasOrderRefund.setReturnContent(String.valueOf(object));
+            highGasOrderRefund.setReturnContent(String.valueOf(dataObject));
             highGasOrderRefundMapper.insert(highGasOrderRefund);
 
             // 查询订单
-            OutRechargeOrder order = outRechargeOrderService.findByOrderNo(object.getString("out_order_id"));
+            OutRechargeOrder order = outRechargeOrderService.findByOrderNo(dataObject.getString("out_order_id"));
 
-            // 订单状态 : 1.待支付 2.已支付 3.已完成 4.已取消 5.已退款 6.充值失败
-            if (order != null && order.getStatus() == 5) {
+            // 订单状态 : 订单状态 : 1.待支付 2.已支付 3.已完成 4.已取消 5.已退款  6:退款中
+            if (order != null && order.getStatus() == 2) {
                 // 退单结果 true:成功  false:失败
-                if (object.getInteger("status") == 3) {
-                     order.setStatus(3);
-                     outRechargeOrderService.updateOrder(order);
-                } else if (object.getInteger("rechargeState") == 4) {
-                    order.setStatus(6);
+                if (dataObject.getInteger("status") == 3) {
+                    order.setStatus(3);
                     outRechargeOrderService.updateOrder(order);
+                } else if (dataObject.getInteger("status") == 4) {
+                    if (orderToRefund(order.getId())) {
+                        order.setStatus(6);
+                        outRechargeOrderService.updateOrder(order);
+                    }
                 }
             }
             response.setCharacterEncoding("UTF-8");
@@ -79,42 +105,132 @@ public class CzOrderController {
         }
     }
 
-    @RequestMapping(value = "/rechargeCallback", method = RequestMethod.POST)
-    @ApiOperation(value = "话费充值回调")
-    @ResponseBody
-    public void rechargeCallback(@RequestBody String reqBodyStr, HttpServletRequest request, HttpServletResponse response) {
-        try {
 
+    public Boolean orderToRefund(Long orderId) {
+        try {
 
-            JSONObject dataObject = JSONObject.parseObject(reqBodyStr, JSONObject.class);
+            OutRechargeOrder order = outRechargeOrderService.findByOrderId(orderId);
 
-            HighGasOrderRefund highGasOrderRefund = new HighGasOrderRefund();
-            highGasOrderRefund.setCreateTime(new Date());
-            highGasOrderRefund.setReturnContent(String.valueOf(dataObject));
-            highGasOrderRefundMapper.insert(highGasOrderRefund);
+            HighRefundAudit highRefundAudit = highRefundAuditService.findByOrderNo(order.getOrderNo());
 
-            // 查询订单
-            OutRechargeOrder order = outRechargeOrderService.findByOrderNo(dataObject.getString("orderNumber"));
+            // 订单状态 : 1.待支付 2.已支付 3.已完成 4.已取消 5.已退款 6:退款中
+            if (order.getStatus() != 2) {
+                log.error("orderToPay error!", "无法退款,订单状态错误!");
+                throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "无法退款,订单不处于已支付状态");
+            }
 
-            // 订单状态 : 1.待支付 2.已支付 3.已完成 4.已取消 5.已退款 6.充值失败
-            if (order != null && order.getStatus() == 5) {
-                // 退单结果 true:成功  false:失败
-                if (dataObject.getInteger("rechargeState") == 1 && order != null) {
-                    order.setStatus(3);
+            // 微信退款
+            if (order.getPayType() == 1) {
+                Map<String,String> param = new HashMap<>();
+                param.put("appid", "wx637bd6f7314daa46");
+                param.put("mch_id", "1289663601");
+                param.put("sub_mch_id" , "1614670195");
+                param.put("nonce_str", WxUtils.makeNonStr());
+                param.put("transaction_id", order.getPaySerialNo());
+                param.put("out_refund_no", "HFR"+new Date().getTime());
+                param.put("total_fee", String.valueOf(order.getPayRealPrice().multiply(new BigDecimal("100")).intValue()));
+                param.put("refund_fee", String.valueOf(order.getPayRealPrice().multiply(new BigDecimal("100")).intValue()));
+                param.put("sign_type", "HMAC-SHA256");
+
+                String signStr = WxUtils.generateSignature(param, "Skufk5oi85wDFGl888i6wsRSTkdd5df5" , WXPayConstants.SignType.HMACSHA256);
+                param.put("sign", signStr);
+
+                String resultXmL = doRefundRequest(param.get("mch_id"), WxUtils.mapToXml(param));
+                OrderRefundModel orderRefundModel = XmlUtil.getObjectFromXML(resultXmL, OrderRefundModel.class);
+                if(orderRefundModel.getResult_code().equals("SUCCESS")) {
+                    order.setStatus(5);
+                    order.setRefundTime(new Date());
+                    order.setOutRefundNo(orderRefundModel.getOut_refund_no());
+                    order.setRefundId(orderRefundModel.getRefund_id());
+                    order.setRefundFee(new BigDecimal(orderRefundModel.getRefund_fee()).divide(new BigDecimal("100")));
                     outRechargeOrderService.updateOrder(order);
-                } else if (dataObject.getInteger("rechargeState") == 0 && order != null) {
-                    order.setStatus(6);
+                    highRefundAudit.setStatus(1);
+                    highRefundAuditService.updateRefundAudit(highRefundAudit);
+                } else {
+                    log.error("orderToPay error!", "退款失败");
+                    throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "退款失败!错误代码:"+orderRefundModel.getErr_code()+",错误描述"+orderRefundModel.getErr_code_des());
+                }
+            }
+
+            // 工会卡退款
+            if (order.getPayType() == 2) {
+                JSONObject jsonObject = HuiLianTongUnionCardConfig.refund( "HFR"+new Date().getTime() , order.getOrderNo());
+
+                if (jsonObject == null) {
+                    log.error("orderToPay error!", "请求超时");
+                    throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "请求超时,请重新点击");
+                }
+
+                JSONObject dataObject = HuiLianTongUnionCardConfig.resolveResponse(jsonObject.getString("data"));
+
+                if (dataObject.getBoolean("success") || Objects.equals(dataObject.getString("message"), "原交易已撤销,不可再次操作")) {
+                    order.setStatus(5);
+                    order.setRefundTime(new Date());
+                    order.setOutRefundNo("HFR"+new Date().getTime() );
+                    order.setRefundFee(order.getPayRealPrice());
+                    order.setRefundId(dataObject.getString("orderId"));
+
+                    highRefundAudit.setStatus(1);
+                    highRefundAuditService.updateRefundAudit(highRefundAudit);
                     outRechargeOrderService.updateOrder(order);
+
+                } else {
+                    log.error("orderToPay error!", dataObject.getString("message"));
+                    throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, dataObject.getString("message"));
                 }
             }
-            response.setCharacterEncoding("UTF-8");
-            response.setContentType("text/html;charset=utf-8");
-            PrintWriter writer= response.getWriter();
-            writer.write("success");
 
+            // 银联退款
+            if (order.getPayType() == 4) {
+                // 订单退款
+                JSONObject refund = UnionPayConfig.zwrefund(order.getOrderNo(), order.getPaySerialNo(), order.getPayRealPrice().multiply(new BigDecimal("100")).longValue());
+                if (!refund.getString("resultcode").equals("W6")) {
+                    throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, refund.getString("returnmsg"));
+                }
+
+                order.setStatus(5);
+                order.setRefundTime(new Date());
+                order.setOutRefundNo(refund.getString("oriwtorderid"));
+                order.setRefundFee(order.getPayRealPrice());
+                highRefundAudit.setStatus(1);
+                highRefundAuditService.updateRefundAudit(highRefundAudit);
+                outRechargeOrderService.updateOrder(order);
+            }
+            return true;
         } catch (Exception e) {
-            log.error("WechatPayController --> wechatNotify() error!", e);
+            log.error("HighOrderController --> getUserOrderList() error!", e);
+            return false;
         }
     }
 
+
+    public String doRefundRequest(String mchId,String data) throws Exception {
+
+        //小程序退款需要调用双向证书的认证
+        CloseableHttpClient httpClient = goodsOrderService.readCertificate(mchId);
+        try {
+            HttpPost httpost = new HttpPost("https://api.mch.weixin.qq.com/secapi/pay/refund"); // 设置响应头信息
+            httpost.addHeader("Connection", "keep-alive");
+            httpost.addHeader("Accept", "*/*");
+            httpost.addHeader("Content-Type", "text/xml");
+            httpost.addHeader("Host", "api.mch.weixin.qq.com");
+            httpost.addHeader("X-Requested-With", "XMLHttpRequest");
+            httpost.addHeader("Cache-Control", "max-age=0");
+            httpost.addHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0) ");
+            httpost.setEntity(new StringEntity(data, "UTF-8"));
+            CloseableHttpResponse response = httpClient.execute(httpost);
+            try {
+                HttpEntity entity = response.getEntity();
+                String jsonStr = EntityUtils.toString(response.getEntity(), "UTF-8");
+                EntityUtils.consume(entity);
+                return jsonStr;
+            } finally {
+                response.close();
+            }
+        } catch (Exception e){
+            throw new RuntimeException(e);
+        } finally {
+            httpClient.close();
+        }
+    }
 }
diff --git a/hai-service/src/main/java/com/hai/config/CommonSysConfig.java b/hai-service/src/main/java/com/hai/config/CommonSysConfig.java
index 4ccb5dd2..f10ec09b 100644
--- a/hai-service/src/main/java/com/hai/config/CommonSysConfig.java
+++ b/hai-service/src/main/java/com/hai/config/CommonSysConfig.java
@@ -58,6 +58,10 @@ public class CommonSysConfig {
     private String telUrl;
     private String czOrderNotify;
 
+    private String CzNotifyUrl;
+    private String CzAppKey;
+    private String CzUrl;
+
     public String getTuanYouUrl() {
         return tuanYouUrl;
     }
@@ -369,4 +373,28 @@ public class CommonSysConfig {
     public void setHltMembershipLevelSignCode(String hltMembershipLevelSignCode) {
         HltMembershipLevelSignCode = hltMembershipLevelSignCode;
     }
+
+    public String getCzNotifyUrl() {
+        return CzNotifyUrl;
+    }
+
+    public void setCzNotifyUrl(String czNotifyUrl) {
+        CzNotifyUrl = czNotifyUrl;
+    }
+
+    public String getCzAppKey() {
+        return CzAppKey;
+    }
+
+    public void setCzAppKey(String czAppKey) {
+        CzAppKey = czAppKey;
+    }
+
+    public String getCzUrl() {
+        return CzUrl;
+    }
+
+    public void setCzUrl(String czUrl) {
+        CzUrl = czUrl;
+    }
 }
diff --git a/hai-service/src/main/java/com/hai/service/OutRechargeOrderService.java b/hai-service/src/main/java/com/hai/service/OutRechargeOrderService.java
index 1ea4c046..67073d1d 100644
--- a/hai-service/src/main/java/com/hai/service/OutRechargeOrderService.java
+++ b/hai-service/src/main/java/com/hai/service/OutRechargeOrderService.java
@@ -1,5 +1,6 @@
 package com.hai.service;
 
+import com.alibaba.fastjson.JSONObject;
 import com.hai.entity.OutRechargeOrder;
 import com.hai.model.OrderCountModel;
 import com.hai.model.OutOrderModel;
@@ -142,5 +143,15 @@ public interface OutRechargeOrderService {
     */
     OrderCountModel rechargeOrderByIndex(Integer code);
 
+    /**
+     * @Author Sum1Dream
+     * @name getMobile.java
+     * @Description // 请求话费
+     * @Date 5:02 下午 2022/1/17
+     * @Param [java.lang.String]
+     * @return com.alibaba.fastjson.JSONObject
+     */
+    JSONObject getMobile(String phone) throws Exception;
+
 
 }
diff --git a/hai-service/src/main/java/com/hai/service/impl/OutRechargeOrderServiceImpl.java b/hai-service/src/main/java/com/hai/service/impl/OutRechargeOrderServiceImpl.java
index 7380832c..82b53b43 100644
--- a/hai-service/src/main/java/com/hai/service/impl/OutRechargeOrderServiceImpl.java
+++ b/hai-service/src/main/java/com/hai/service/impl/OutRechargeOrderServiceImpl.java
@@ -6,6 +6,8 @@ import com.hai.common.exception.ErrorCode;
 import com.hai.common.exception.ErrorHelp;
 import com.hai.common.exception.SysCode;
 import com.hai.common.utils.DateUtil;
+import com.hai.common.utils.HttpsUtils;
+import com.hai.common.utils.WxUtils;
 import com.hai.config.HuiLianTongUnionCardConfig;
 import com.hai.dao.HighGasOrderPushMapper;
 import com.hai.dao.OutRechargeOrderMapper;
@@ -347,4 +349,24 @@ public class OutRechargeOrderServiceImpl implements OutRechargeOrderService {
     public OrderCountModel rechargeOrderByIndex(Integer code) {
         return outRechargeOrderMapper.rechargeOrderByIndex(code);
     }
+
+    @Override
+    public JSONObject getMobile(String phone) throws Exception {
+
+        Map<String , Object> map = new HashMap<>();
+        map.put("mobile" , "18090580471");
+        map.put("amount" , "0.01");
+        map.put("out_order_id" , "CZ20220110895732352345");
+        map.put("app_key" , "kg5n9br7evt4q8lp");
+        map.put("timestamp" , DateUtil.date2String(new Date(),"yyyyMMddHHmmss"));
+        map.put("is_fast" , "1");
+        map.put("notify_url" , "https://hsgcs.dctpay.com/crest/czOrder/orderRefundNotify");
+
+        StringBuilder signStr = new StringBuilder(WxUtils.generateSignature(map));
+
+        map.put("sign" , WxUtils.MD5(String.valueOf(signStr.append("key=kg5n9br7evt4q8lp")),true));
+
+        JSONObject object = HttpsUtils.doPost("https://hfcs.dmjvip.com/index.php/third/mobile/createOrder" , map);
+        return object;
+    }
 }
diff --git a/hai-service/src/main/resources/dev/commonConfig.properties b/hai-service/src/main/resources/dev/commonConfig.properties
index 890e3f4b..54bf3ebc 100644
--- a/hai-service/src/main/resources/dev/commonConfig.properties
+++ b/hai-service/src/main/resources/dev/commonConfig.properties
@@ -51,3 +51,7 @@ TelApiKey=2d01f6b520254b1a80f6b167832cea18
 TelApiSecret=d11ee9b41e014a039f030e53ae6f5295
 TelMemberId=d13091df65d64aafbf0f35d2093157b7
 
+// Mobile
+CzNotifyUrl = https://hsgcs.dctpay.com/crest/czOrder/orderRefundNotify
+CzAppKey = kg5n9br7evt4q8lp
+CzUrl = https://hfcs.dmjvip.com/index.php/third/mobile/createOrder
\ No newline at end of file
diff --git a/hai-service/src/main/resources/prod/commonConfig.properties b/hai-service/src/main/resources/prod/commonConfig.properties
index 7cc830e7..08c687a0 100644
--- a/hai-service/src/main/resources/prod/commonConfig.properties
+++ b/hai-service/src/main/resources/prod/commonConfig.properties
@@ -42,3 +42,8 @@ wx_cert=/home/project/wx_cert/
 TelApiKey=2d01f6b520254b1a80f6b167832cea18
 TelApiSecret=d11ee9b41e014a039f030e53ae6f5295
 TelMemberId=d13091df65d64aafbf0f35d2093157b7
+
+// Mobile
+CzNotifyUrl = https://hsg.dctpay.com/crest/czOrder/orderRefundNotify
+CzAppKey = p429mlj3cvn5hb07
+CzUrl = https://hfcs.dmjvip.com/index.php/third/mobile/createOrder
\ No newline at end of file