Browse Source

斗拱支付

Chris-zy 1 year ago
parent
commit
94ab43c313

+ 14 - 15
mp-admin/src/main/java/com/qs/mp/web/controller/api/callback/PayCallBackController.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Maps;
 import com.qs.mp.common.constant.Constants;
 import com.qs.mp.common.constant.Constants;
+import com.qs.mp.common.constant.SysCode;
 import com.qs.mp.common.enums.PayOrderStatusEnum;
 import com.qs.mp.common.enums.PayOrderStatusEnum;
 import com.qs.mp.common.exception.ServiceException;
 import com.qs.mp.common.exception.ServiceException;
 import com.qs.mp.common.utils.DateUtils;
 import com.qs.mp.common.utils.DateUtils;
@@ -117,7 +118,7 @@ public class PayCallBackController {
 
 
   @RequestMapping(value = "dg/orderCallback")
   @RequestMapping(value = "dg/orderCallback")
   @ResponseBody
   @ResponseBody
-  public void orderCallback(HttpServletResponse response, HttpServletRequest request) {
+  public Map<String, Object> orderCallback(HttpServletResponse response, HttpServletRequest request) {
     response.setHeader("Access-Control-Allow-Origin", "*");
     response.setHeader("Access-Control-Allow-Origin", "*");
     Map<String, Object> params = Maps.newHashMap();
     Map<String, Object> params = Maps.newHashMap();
     logger.info("web--orderCallback-->1::");
     logger.info("web--orderCallback-->1::");
@@ -140,42 +141,40 @@ public class PayCallBackController {
     String tradesId = huifuPayId.contains("D") ? huifuPayId.split("D")[0] : huifuPayId;
     String tradesId = huifuPayId.contains("D") ? huifuPayId.split("D")[0] : huifuPayId;
     params.put("tradesId", tradesId);
     params.put("tradesId", tradesId);
     if (Objects.isNull(params.get("tradesId"))) {
     if (Objects.isNull(params.get("tradesId"))) {
-      logger.info("tradesId不能为空");
+      return SysCode.fail("tradesId不能为空");
     }
     }
-
+//        String respCode = Objects.nonNull(params.get("respCode")) ? params.get("respCode").toString() : "";
     if (org.apache.commons.lang3.StringUtils.isNotEmpty(respCode)) {
     if (org.apache.commons.lang3.StringUtils.isNotEmpty(respCode)) {
-      if (!Constants.DOUGONG_ORDER_SUCCESS_CODE.equals(respCode) && (!Constants.DOUGONG_PAY_SUCCESS_CODE.equals(respCode))) {
+      if (!SysCode.DOUGONG_ORDER_SUCCESS_CODE.equals(respCode) && (!SysCode.DOUGONG_PAY_SUCCESS_CODE.equals(respCode))) {
         logger.info("斗拱回调状态:{},失败,订单号:{}", respCode, params.get("tradesId").toString());
         logger.info("斗拱回调状态:{},失败,订单号:{}", respCode, params.get("tradesId").toString());
-        logger.info("斗拱回调状态:[" + respCode + "],失败");
-        return;
+        return SysCode.fail("斗拱回调状态:[" + respCode + "],失败");
       }
       }
 
 
-      if(Constants.DOUGONG_PAY_SUCCESS_CODE.equals(respCode) && Constants.DOUGONG_PAY_TRANS_S.equals(transStat)){
+      if(SysCode.DOUGONG_PAY_SUCCESS_CODE.equals(respCode) && SysCode.DOUGONG_PAY_TRANS_S.equals(transStat)){
         logger.info("orderCallback--->{}", params.get("tradesId").toString());
         logger.info("orderCallback--->{}", params.get("tradesId").toString());
 
 
         try {
         try {
           logger.info("orderCallback----------------->1");
           logger.info("orderCallback----------------->1");
 
 
           PayOrder payOrder = payOrderService.getById(tradesId);
           PayOrder payOrder = payOrderService.getById(tradesId);
+          payOrder.setOrderId(tradesId);
           payOrder.setOrderNo(huifuPayId);
           payOrder.setOrderNo(huifuPayId);
           payOrder.setCompleteDate(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,new Date()));
           payOrder.setCompleteDate(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,new Date()));
-          payOrder.setChannelNo(huifuPayId);
+          payOrder.setChannelNo(huifuId);
           payOrder.setOrderStatus("1");
           payOrder.setOrderStatus("1");
-          boolean ret = payOrderService.saveOrUpdate(payOrder);
-          if (!ret) {
-            throw new ServiceException("支付订单更新失败,orderId:");
-          }
+
+          Map<String,Object> map = payOrderService.dougongPaySuccessCallBack(payOrder);
+          return map;
 
 
         } catch (Exception e) {
         } catch (Exception e) {
           logger.error("斗拱线下扫码订单回调失败:{}", e.getMessage());
           logger.error("斗拱线下扫码订单回调失败:{}", e.getMessage());
           e.printStackTrace();
           e.printStackTrace();
-          logger.error("斗拱线下扫码订单回调失败:" + e.getMessage());
-          return;
+          return SysCode.fail("斗拱线下扫码订单回调失败:" + e.getMessage());
         }
         }
       }
       }
     }
     }
 
 
-    logger.info("斗拱线下扫码订单回调失败.订单:" + huifuPayId);
+    return SysCode.fail("斗拱线下扫码订单回调失败.订单:" + huifuPayId);
 
 
   }
   }
 
 

+ 313 - 0
mp-common/src/main/java/com/qs/mp/common/constant/SysCode.java

@@ -0,0 +1,313 @@
+package com.qs.mp.common.constant;
+
+import com.google.common.collect.Maps;
+import org.apache.commons.lang3.StringUtils;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class SysCode {
+    public static final String CHARSET = "UTF-8";
+    public static final String IMAGE_FORMAT_JPG = "jpg";
+    public static final String IMAGE_FORMAT_PNG = "png";
+
+    public static final String ORDER_BY_ASC = "asc";
+    public static final String ORDER_BY_DESC = "desc";
+
+    public static final String DES = "DES";
+    public static final String AES = "AES";
+    public static final String SHA1 = "SHA1";
+    public static final String MD5 = "MD5";
+    public static final String FILE_SUFFIX_EXCEL_2003 = "xls";
+    public static final String FILE_SUFFIX_EXCEL_2007 = "xlsx";
+    public static final String REGEXP_DOT = "[.]";
+    public static final String supportedFiles = ".jpg,.jpeg,.png,.doc,.docx,.pdf,.xls,.xlsx,.rptdesign,.wmv,.mp3,.mp4,.avi,.rm,.3gp,.rar,.zip,.gzip,.7z";
+    public static final String FILE_PDF = "PDF";
+    public static final String FILE_HTML = "HTML";
+
+    public static final String CODE_KEY = "code";
+    public static final String MSG_KEY = "msg";
+    public static final String PARAMS_KEY = "paramsx";
+    public static final String BIZ_MSG_KEY = "biz_msg";
+    public static final String DATA_KEY = "data";
+    public static final String EXECUTED_FORMULA_KEY = "executed_formula";
+    public static final String HEADER_DATA_KEY = "headerData";//表头数据,目前仅用于excel读写场景
+    public static final String TOKEN_KEY = "userToken";//当前登录用户token
+    public static final String SCANNER_SCRIPT_KEY = "scannerScriptId";//当前扫码脚本id,即扫码枪提交的脚本id
+    public static final String PAGE_ID_KEY = "data";//页面(配置ID)
+    public static final String PAGE_CONFIG_TABLE = "0";//配置类型:表
+    public static final String PAGE_CONFIG_TREE = "1";//配置类型:树
+    public static final String PAGE_CONFIG_ASSIGNMENT = "2";//配置类型:赋值
+    public static final String PAGE_CONFIG_FORM = "3";//配置类型:表单
+    public static final String PAGE_CONFIG_FILTER_TREEE = "8";//配置类型:过滤树
+
+    public static final String USER_TYPE_WEB = "0";//用户类型:普通用户
+    public static final String USER_TYPE_SUPER = "1";//用户类型:管理用户
+    public static final String USER_TYPE_MES = "2";//用户类型:MES用户
+
+    public static final String PAGE_CONFIG_CLASSIFY_MAPPING_NONE = "0";//分类映射:0:无映射,1:分类ID,2:分类编号,3:分类名称
+    public static final String PAGE_CONFIG_CLASSIFY_MAPPING_ID = "1";//分类映射:0:无映射,1:分类ID,2:分类编号,3:分类名称
+    public static final String PAGE_CONFIG_CLASSIFY_MAPPING_NO = "2";//分类映射:0:无映射,1:分类ID,2:分类编号,3:分类名称
+    public static final String PAGE_CONFIG_CLASSIFY_MAPPING_NAME = "3";//分类映射:0:无映射,1:分类ID,2:分类编号,3:分类名称
+
+    public static final int OPER_SUCCESS = 10000;
+    public static final String OPER_SUCCESS_MSG = "操作成功";
+
+    public static final String SUCCESS = "SUCCESS";
+
+    public static final int OPER_FAIL = 20000;
+    public static final String OPER_FAIL_MSG = "操作失败";
+
+    public static final String FAIL = "FAIL";
+
+    public static final int OPER_FAIL_AND_EXPIRED = 20001;//操作失败,并提示软件已经到期
+
+    public static final int AUTH_FAIL_UNAUTHORIZED = 30000;
+    public static final String AUTH_FAIL_UNAUTHORIZED_MSG = "操作失败,用户无此访问权限";
+
+    public static final int AUTH_FAIL_EXPIRED = 30001;
+    public static final String AUTH_FAIL_EXPIRED_MSG = "操作失败,用户登录过期";
+
+    public static final int AUTH_FAIL_LOGIN_TAKEN = 30002;
+    public static final String AUTH_FAIL_LOGIN_TAKEN_MSG = "操作失败,当前用户已在其它设备登录";
+
+    public static final int AUTH_SUCCESS_WITH_TOKEN_REFRESH = 30003;
+    public static final String AUTH_SUCCESS_WITH_TOKEN_REFRESH_MSG = "操作成功,并刷新token";
+
+    public static final String REG_CODE_KEY = "regCode";//注册code
+    public static final String REG_MSG_KEY = "regMsg";//注册msg
+    public static final int REGISTRAION_SUCCESS = 10000;//软件注册状态正常
+    public static final int REGISTRAION_SUCCESS_EXPIRING = 10001;//软件注册状态正常,并提示软件即将到期
+    public static final int REGISTRAION_FAIL = 20000;//软件注册状态异常,并提示软件未注册
+    public static final int REGISTRAION_FAIL_EXPIRED = 20001;//软件注册状态异常,并提示软件注册已过期
+
+    public static final String OPER_FAIL_CLASSIFY_HAS_CHILDREN = "当前分类存在下一级分类,无法删除";
+    public static final String OPER_FAIL_CLASSIFY_HAS_DATA = "当前分类存数据,无法删除";
+    public static final String OPER_FAIL_PAGE_ID_NOT_EXISTS = "页面配置ID[pageId]不能为空";
+    public static final String OPER_FAIL_PAGE_CONFIG_DETAIL_ID_NOT_EXISTS = "页面配置项ID[pageConfigDetailId]不能为空";
+    public static final String OPER_FAIL_PAGE_CONFIG_PRIMARY_KEY_ID_NOT_EXISTS = "主键ID[id]不能为空";
+    public static final String OPER_FAIL_WEB_TABLE_NUM_NOT_EXISTS = "页面配置表序列[webTableNum]不能为空";
+    public static final String OPER_FAIL_TREE_NODE_ID_NOT_EXISTS = "通用树节点ID[treeNodeId]不能为空";
+    public static final String OPER_FAIL_TABLE_NAME_NOT_EXISTS = "表名称[tableName]不能为空";
+    public static final String OPER_FAIL_QUOTATION_CONFIG_ID_NOT_EXISTS = "报价配置标识[quotationConfigId]参数必须提供";
+
+    public static final String PAGE_CONFIG_DATASOURCE_TYPE_URL = "0";
+    public static final String PAGE_CONFIG_DATASOURCE_TYPE_SQL = "1";
+    public static final String PAGE_CONFIG_DATASOURCE_TYPE_CONSTANT = "2";
+
+    public static final String FORMULA_TYPE_BJ = "0";//报价公式
+    public static final String FORMULA_TYPE_CB = "1";//成本
+    public static final String FORMULA_TYPE_JJ = "2";//计件
+    public static final String FORMULA_TYPE_CN = "3";//产能
+    public static final String FORMULA_TYPE_XSTC = "4";//销售提成
+    public static final String FORMULA_TYPE_FS = "5";//防损
+    public static final String FORMULA_TYPE_YF = "6";//运费
+    public static final String FORMULA_TYPE_SL = "7";//算料
+    public static final String FORMULA_TYPE_FW = "8";//发外
+    public static final String FORMULA_TYPE_PCQS = "9";//排程取数
+
+    public static final String FORMULA_TYPE_COMMON = "0";//计算方案-通用模式
+    public static final String FORMULA_TYPE_EXPERT = "1";//计算方案-专家模式
+    public static final String FORMULA_TYPE_COMMON_YS = "00";//计算方案-通用模式-印刷工序
+    public static final String FORMULA_TYPE_COMMON_YH = "01";//计算方案-通用模式-后道工序
+    public static final String FORMULA_TYPE_COMMON_YH_CGJJ = "10";//计算方案-通用模式-后道工序-常规计价
+    public static final String FORMULA_TYPE_COMMON_YH_PFJJ = "11";//计算方案-通用模式-后道工序-平方计价
+
+    public static final String FIELD_CREATE_TIME = "create_time";//创建时间字段
+    public static final String FIELD_UPDATE_TIME = "update_time";//更新时间字段
+
+    public static final String FIELD_TYPE_VARCHAR = "VARCHAR";
+    public static final String FIELD_TYPE_STRING= "STRING";
+    public static final String FIELD_TYPE_DATETIME = "DATETIME";
+    public static final String FIELD_TYPE_DATE = "DATE";
+    public static final String FIELD_TYPE_BIT = "BIT";
+    public static final String FIELD_TYPE_INTEGER = "INT";
+    public static final String FIELD_TYPE_DECIMAL = "DECIMAL";
+    public static final String FIELD_TYPE_BOOLEAN = "BOOLEAN";
+    public static final String FIELD_TYPE_INT_UNSIGNED = "INT UNSIGNED";
+    public static final String FIELD_TYPE_DECIMAL_UNSIGNED = "DECIMAL UNSIGNED";
+    public static final String FIELD_TYPE_INT_TINY = "TINYINT";
+    public static final String FIELD_TYPE_INT_SMALL = "SMALLINT";
+    public static final String FIELD_TYPE_INT_MEDIUM = "MEDIUMINT";
+    public static final List<String> SKIPPED_FIELDS = Arrays.asList("create_time", "update_time","del_tag");
+    public static final List<String> SKIPPED_FIELDS0 = Arrays.asList("create_time", "update_time");
+
+    public static final String JAVA_TYPE_STRING = "java.lang.String";
+    public static final String JAVA_TYPE_INTEGER = "java.lang.Integer";
+
+
+
+    public static final String ENTITY_CLASS_PATH_PREFIX = "com.bluesx.erp.entity.";
+
+    public static final String ENV_KEY_PROFILE = "spring.profiles.active";
+    public static final String SYSTEM_PROFILE = "system.profiles.active";//docker环境下,上面那个环境变量无法直接读取
+    public static final String SYSTEM_ID = "system.id";
+
+    public static final String SCRIPT_ID = "script_";
+
+    public static final String DATEFORMAT0 = "yyyy-MM-dd HH:mm:ss";
+    public static final String DATEFORMAT_DATE = "yyyyMMdd";
+
+    //脚本dataList参数名
+    public static final String SCRIPT_DATALIST_KEY = "dataList";
+
+    public static final String SQL_OPER_TYPE = "sqlType";
+    public static final String SQL_OPER_INSERT = "insert";
+    public static final String SQL_OPER_UPDATE = "update";
+    //SQL操作影响到的表id,包括新增和更新的实际id
+    public static final String SQL_OPER_ID = "id";
+    //SQL操作影响到的表,实际key值为 id.tableName,遵循dataList的key结构
+    public static final String SQL_OPER_TABLE = "tableName";
+
+    public static final String CACHE_KEY_ALL_FORMULAS = "cached_formula";
+    public static final String CACHE_KEY_ALL_PARAMS = "cached_param";
+    public static final String CACHE_KEY_ALL_PAGE_CONFIG_DETAILS = "cached_page_config_detail";
+    public static final String CACHE_KEY_ALL_PAGE_CONFIG_TABLES = "cached_page_config_table";
+    public static final String CACHE_KEY_ALL_PAGE_CONFIG_OPERATIONS = "cached_page_config_operation";
+    public static final String CACHE_KEY_ALL_PAGE_CONFIG_UNFINISHEDS = "cached_page_config_unfinished";
+    public static final String CACHE_KEY_ALL_PAGE_CONFIG_INDEXS = "cached_page_config_index";
+    public static final String CACHE_KEY_ALL_PAGE_STYLES = "cached_page_styles";
+    public static final String CACHE_KEY_ALL_BASE_URLS = "cached_base_urls";
+
+    //权限节点类型:0页面,1表,2按钮 3未清  4权限字段 5菜单
+    public static final int PERMISSION_TYPE_NONE = -1;
+    public static final int PERMISSION_TYPE_PAGE = 0;
+    public static final int PERMISSION_TYPE_TABLE = 1;
+    public static final int PERMISSION_TYPE_BUTTON = 2;
+    public static final int PERMISSION_TYPE_UNFINISHED = 3;
+    public static final int PERMISSION_TYPE_AUTH_FIELD = 4;
+    public static final int PERMISSION_TYPE_MENU = 5;
+
+    public static final String TRAFFIC_MACHINE_ID_NOT_EXISTS = "TR0001";//traffic机器码不存在
+
+    //是否
+    public static final int YES = 1;
+    public static final int NO = 0;
+
+    public static final int TRUE = 1;
+    public static final int FALSE = 0;
+
+    public static final String SQL_OPER_AND = "AND";
+    public static final String SQL_OPER_OR = "OR";
+
+    public static final String SCRIPT_CACHE = "script_";
+
+    //默认分页条数
+    public static final int DEFAULT_PAGE_SIZE = Integer.MAX_VALUE;
+
+    public static final int TRADES_TIMEOUT_DAYS = 3;//订单id缓存时间: 30天
+
+    public static final String HUIFU_PAY_SUCCESS_CODE = "000000";//这个值是由汇付支付接口定义
+    public static final String DOUGONG_PAY_SUCCESS_CODE = "00000000";//斗拱交易成功
+    public static final String DOUGONG_ORDER_SUCCESS_CODE = "00000100";//斗拱下单成功
+    public static final String DOUGONG_PAY_PROCESSING_CODE = "00000100";//斗拱交易处理中
+    public static final String HUIFU_PAY_TRANS_S = "S";//这个值是由汇付支付接口定义,表示 交易状态:成功
+    public static final String DOUGONG_PAY_TRANS_S = "S";
+    public static final String HUIFU_PAY_TRANS_F = "F";//这个值是由汇付支付接口定义,表示 交易状态:失败
+    public static final String HUIFU_PAY_ACC_S = "S";//这个值是由汇付支付接口定义,表示 财务状态:成功
+    public static final String HUIFU_PAY_ACC_F = "F";//这个值是由汇付支付接口定义,表示 财务状态:失败
+    public static final String HUIFU_PAY_CALLBACK_TAG_PREFIX = "huifupay_callback_";//待回调订单key标志,拼接后在redis存取
+    public static final String DOUGONG_PAY_CALLBACK_TAG_PREFIX = "dougong_callback_";//待回调订单key标志,拼接后在redis存取
+    public static final String PAYMENT_DUPLICATE_CODE = "222";//重复支付状态码
+
+    public static final String FINAL_SUCCESS_KEY = "finalSuccess";
+
+    //http methods
+    public static final String HTTP_METHOD_OPTIONS = "OPTIONS";
+    public static final String HTTP_METHOD_GET = "GET";
+    public static final String HTTP_METHOD_POST = "POST";
+    public static final String AUTHORIZATION_HEADER = "Authorization";
+
+//    public static Map<String,String> JOB_CRON_DAYS = new ImmutableMap.Builder().put("每天","")
+
+    public static final String DEFAULT_EXPOR_FILE_NAME = "export-result";
+
+    public static final String PRODUCT_TYPE_LY_RECHARGE = "ly-recharge";//充值类商品(杭州老杨)
+    public static final String PRODUCT_TYPE_RECHARGE = "recharge";//充值类商品
+    public static final String PRODUCT_TYPE_CHUN = "chun";//chun.0x00.tech平台特定产品名
+
+    public static String birtLogPath(){
+        return "/var/log/java/es/";
+    }
+
+    public static Map<String,Object> map(){
+       return new HashMap<>();
+    }
+
+    public static Map<String,String> success(){
+        Map<String,String> result = Maps.newHashMap();
+        result.put(SysCode.CODE_KEY, String.valueOf(SysCode.OPER_SUCCESS));
+        result.put(SysCode.MSG_KEY, SysCode.OPER_SUCCESS_MSG);
+        result.put(SysCode.DATA_KEY, null);
+        return result;
+    }
+
+    public static Map<String,Object> success(String successMessage){
+        Map<String,Object> result = Maps.newHashMap();
+        result.put(SysCode.CODE_KEY, SysCode.OPER_SUCCESS);
+        if(StringUtils.isNotEmpty(successMessage)){
+            result.put(SysCode.MSG_KEY, successMessage);
+        }else{
+            result.put(SysCode.MSG_KEY, SysCode.OPER_SUCCESS_MSG);
+        }
+
+        result.put(SysCode.DATA_KEY, null);
+        return result;
+    }
+
+    public static Map<String,Object> success(String successMessage,Object data){
+        Map<String,Object> result = Maps.newHashMap();
+        result.put(SysCode.CODE_KEY, SysCode.OPER_SUCCESS);
+        if(StringUtils.isNotEmpty(successMessage)){
+            result.put(SysCode.MSG_KEY, successMessage);
+        }else{
+            result.put(SysCode.MSG_KEY, SysCode.OPER_SUCCESS_MSG);
+        }
+
+        result.put(SysCode.DATA_KEY, data);
+        return result;
+    }
+
+    public static Map<String,Object> fail(){
+        Map<String,Object> result = Maps.newHashMap();
+        result.put(SysCode.CODE_KEY,SysCode.OPER_FAIL);
+        result.put(SysCode.MSG_KEY,SysCode.OPER_FAIL_MSG);
+        result.put(SysCode.DATA_KEY, null);
+        return result;
+    }
+
+    public static Map<String,Object> fail(String failMessage){
+        Map<String,Object> result = Maps.newHashMap();
+        result.put(SysCode.CODE_KEY,SysCode.OPER_FAIL);
+        if(StringUtils.isNotEmpty(failMessage)){
+            result.put(SysCode.MSG_KEY, failMessage);
+        }else{
+            result.put(SysCode.MSG_KEY, SysCode.OPER_FAIL_MSG);
+        }
+        result.put(SysCode.DATA_KEY, null);
+        return result;
+    }
+
+    public static Map<String,Object> data(Object data){
+        Map<String,Object> result = Maps.newHashMap();
+        result.put(SysCode.CODE_KEY,SysCode.OPER_SUCCESS);
+        result.put(SysCode.DATA_KEY, data);
+        return result;
+    }
+
+    public static Map<String,Object> data(Object data,String message){
+        Map<String,Object> result = Maps.newHashMap();
+        result.put(SysCode.CODE_KEY,SysCode.OPER_SUCCESS);
+        result.put(SysCode.MSG_KEY,message);
+        result.put(SysCode.DATA_KEY, data);
+        return result;
+    }
+
+    public static void main(String[] args) {
+        String jsonStr = "[{\"conditon\":\"c1\",\"meet\":\"m1\",\"notMeet\":\"nm1\",\"children\":[{\"conditon\":\"c11\",\"meet\":\"m11\",\"notMeet\":\"nm11\"},{\"conditon\":\"c12\",\"meet\":\"m12\",\"notMeet\":\"nm12\"}]},{\"conditon\":\"c1\",\"meet\":\"m1\",\"notMeet\":\"nm1\"}]\n";
+//        List<Map<String,Object>> commonLines = JsonUtils.json2ListMap(jsonStr);
+    }
+}

+ 4 - 0
mp-service/src/main/java/com/qs/mp/pay/service/IPayOrderService.java

@@ -3,6 +3,8 @@ package com.qs.mp.pay.service;
 import com.qs.mp.pay.domain.PayOrder;
 import com.qs.mp.pay.domain.PayOrder;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 
+import java.util.Map;
+
 /**
 /**
  * <p>
  * <p>
  * 支付订单表 服务类
  * 支付订单表 服务类
@@ -13,4 +15,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
  */
 public interface IPayOrderService extends IService<PayOrder> {
 public interface IPayOrderService extends IService<PayOrder> {
 
 
+
+    Map<String, Object> dougongPaySuccessCallBack(PayOrder payOrder);
 }
 }

+ 62 - 0
mp-service/src/main/java/com/qs/mp/pay/service/impl/PayOrderServiceImpl.java

@@ -1,10 +1,25 @@
 package com.qs.mp.pay.service.impl;
 package com.qs.mp.pay.service.impl;
 
 
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.json.JSONUtil;
+import com.google.common.collect.Maps;
+import com.qs.mp.common.constant.SysCode;
+import com.qs.mp.common.enums.PayOrderStatusEnum;
+import com.qs.mp.common.utils.http.OkHttpUtil;
 import com.qs.mp.pay.domain.PayOrder;
 import com.qs.mp.pay.domain.PayOrder;
 import com.qs.mp.pay.mapper.PayOrderMapper;
 import com.qs.mp.pay.mapper.PayOrderMapper;
 import com.qs.mp.pay.service.IPayOrderService;
 import com.qs.mp.pay.service.IPayOrderService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -17,4 +32,51 @@ import org.springframework.stereotype.Service;
 @Service
 @Service
 public class PayOrderServiceImpl extends ServiceImpl<PayOrderMapper, PayOrder> implements IPayOrderService {
 public class PayOrderServiceImpl extends ServiceImpl<PayOrderMapper, PayOrder> implements IPayOrderService {
 
 
+    Logger log = LoggerFactory.getLogger(PayOrderServiceImpl.class);
+
+    @Autowired
+    private IPayOrderService payOrderService;
+
+    @Transactional
+    public Map<String,Object> dougongPaySuccessCallBack(PayOrder payOrder) {
+        Map<String,Object> result = SysCode.fail();
+        log.info("dougongPaySuccessCallBack---------->tradesId:{},huifuPayId:{}",payOrder.getOrderId(),payOrder.getOrderNo());
+        log.info("dougongPaySuccessCallBack---------->tradesOrder:{}", JSONUtil.toJsonStr(payOrder));
+        try {
+            if ("2".equals(payOrder.getOrderStatus())) {
+                log.info("dougongPaySuccessCallBack---------->0,huifuPaId:{}", payOrder.getOrderNo());
+                payOrder.setOrderStatus(PayOrderStatusEnum.SUCCESS.getValue());
+                payOrderService.saveOrUpdate(payOrder);
+
+                Map<String,String> resultx = SysCode.success();
+
+                resultx.put(SysCode.DATA_KEY, JSONUtil.toJsonStr(payOrder));
+                resultx.put(SysCode.MSG_KEY,"订单支付成功,单号:" + payOrder.getOrderId());
+                log.info("dougongPaySuccessCallBack----->1");
+
+                String xurl = "https://openapi.donghuid.com/yinLianPay/yinLianPayNotify";
+                for (int i = 0; i < 5; i++) {
+                    String xresult = OkHttpUtil.post(xurl, resultx);
+                    log.info("向第三方继续回调结果:{}", xresult);
+                    Map<String, Object> xmap = JSONUtil.toBean(xresult, Map.class);
+                    if (xmap.containsKey("code")) {
+                        String v = xmap.get("code").toString();
+                        if (String.valueOf(SysCode.OPER_SUCCESS).equals(v)) {//1W成功,2W失败
+                            break;
+                        }
+                    }
+                }
+
+
+                result = SysCode.success("dg支付回调成功,单号:{}" + payOrder.getOrderId());
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error("线下订单回调处理出错{}", e.getMessage());
+            result = SysCode.fail("dg支付回调失败,单号:{}" + payOrder.getOrderId());
+        }
+
+
+        return result;
+    }
 }
 }

+ 1 - 0
mp-service/src/main/java/com/qs/mp/pay/service/impl/WalletServiceImpl.java

@@ -551,6 +551,7 @@ public class WalletServiceImpl implements IWalletService {
       payOrder.setBizType(bizType);
       payOrder.setBizType(bizType);
       payOrder.setBizId(bizId);
       payOrder.setBizId(bizId);
       payOrder.setOrderStatus("");
       payOrder.setOrderStatus("");
+      payOrder.setOrderStatus(PayOrderStatusEnum.SUCCESS.getValue());
       boolean ret = payOrderService.save(payOrder);
       boolean ret = payOrderService.save(payOrder);
 
 
       if (!ret) {
       if (!ret) {