From df4733091b30b0434a04dacd0e844663114d4cfe Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期三, 09 七月 2025 17:51:56 +0800
Subject: [PATCH] 修改支付宝支付和bug修改

---
 cloud-server-other/src/main/java/com/dsh/other/util/PayMoneyUtil.java                                        |  143 +--
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/DeptController.java      |    6 
 cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java                                      |  146 +--
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/DeptServiceImpl.java          |   35 
 cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java                     |   21 
 cloud-server-management/src/main/java/com/dsh/course/mapper/RoleMapper.java                                  |    2 
 cloud-server-account/src/main/java/com/dsh/account/service/impl/VipPaymentServiceImpl.java                   |    4 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/RoleServiceImpl.java          |   19 
 cloud-server-management/src/main/resources/mapper/DeptMapper.xml                                             |   29 
 cloud-server-account/src/main/java/com/dsh/account/controller/PaymentCallbackController.java                 |    1 
 cloud-server-competition/src/main/java/com/dsh/competition/util/PayMoneyUtil.java                            |  149 +--
 cloud-server-management/src/main/resources/mapper/RoleMapper.xml                                             |   22 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tSite/TSite_add.html                             |    2 
 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java                 |  134 +--
 cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/impl/WorldCupServiceImpl.java |   45 +
 cloud-server-management/src/main/java/com/dsh/course/mapper/DeptMapper.java                                  |    7 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/RoleController.java      |    2 
 cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java          |  137 +--
 cloud-server-other/src/main/java/com/dsh/other/controller/GameController.java                                |    4 
 cloud-server-account/src/main/java/com/dsh/account/util/PayMoneyUtil.java                                    |  161 ++--
 cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/IWorldCupService.java         |    3 
 cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java                     |  465 +++++++------
 cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java                             |    3 
 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java          |  251 +++----
 cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/util/PayMoneyUtil.java                |  149 +--
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java      |    3 
 cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java                              |    3 
 cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite_info.js                            |   14 
 28 files changed, 962 insertions(+), 998 deletions(-)

diff --git a/cloud-server-account/src/main/java/com/dsh/account/controller/PaymentCallbackController.java b/cloud-server-account/src/main/java/com/dsh/account/controller/PaymentCallbackController.java
index bee4929..1470c33 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/controller/PaymentCallbackController.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/controller/PaymentCallbackController.java
@@ -297,6 +297,7 @@
     @PostMapping("/base/pointMer/exchangeGoodPaymentAliCallback")
     public void exchangeGoodPaymentAliCallback(HttpServletRequest request, HttpServletResponse response) {
         try {
+            System.err.println("积分商品支付宝回调");
             Map<String, String> map = payMoneyUtil.alipayCallback(request);
             if (null != map) {
                 String out_trade_no = map.get("out_trade_no");
diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java b/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java
index 9664571..31be31a 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java
@@ -1,5 +1,6 @@
 package com.dsh.account.service;
 
+import com.alipay.api.AlipayApiException;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.dsh.account.dto.BindDto;
 import com.dsh.account.dto.SelectDto;
@@ -161,7 +162,7 @@
 
 
 
-    ResultUtil exchangeAddPaymentCallback(String code, String orderNumber);
+    ResultUtil exchangeAddPaymentCallback(String code, String orderNumber) throws AlipayApiException;
 
     List<StoreResponse> queryStoresOfExchange(Integer goodsType, Integer pointsMerId);
 
diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
index 261559a..c8b72d8 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
@@ -193,9 +193,6 @@
     private GameRecordClient gameRecordClient;
 
 
-
-
-
     // 对数据进行分页处理的方法
     private static Page<Goods> getPage(List<Goods> dataList, Pageable pageable) {
         int start = (int) pageable.getOffset();
@@ -947,14 +944,14 @@
         List<WorldCupPayment> worldCupPayment = worldCupPaymentClinet.getWorldCupPayment(getWorldCupPayment);
         for (WorldCupPayment cupPayment : worldCupPayment) {
             ConsumeDetail consumeDetail = new ConsumeDetail();
-            if(cupPayment.getPayStatus() != 3){
+            if (cupPayment.getPayStatus() != 3) {
                 consumeDetail.setConsumeName(RechargeRecordEnum.WORLD_CIP_PAYMENT.getMsg());
                 consumeDetail.setConsumeTime(simpleDateFormat.format(cupPayment.getCreateTime()));
                 consumeDetail.setConsumeAmount("-" + cupPayment.getAmount());
                 consumeDetail.setType(2);
                 consumeDetail.setDateTime(cupPayment.getPayTime().getTime());
                 details.add(consumeDetail);
-            }else{
+            } else {
                 consumeDetail = new ConsumeDetail();
                 consumeDetail.setConsumeName(RechargeRecordEnum.WORLD_CIP_PAYMENT.getMsg());
                 consumeDetail.setConsumeTime(simpleDateFormat.format(cupPayment.getCreateTime()));
@@ -1245,7 +1242,7 @@
             }
             TAppUser tAppUser1 = appUserMapper.selectOne(new LambdaQueryWrapper<TAppUser>()
                     .eq(TAppUser::getPhone, dto.getInvitePhone()).eq(TAppUser::getState, 1));
-            if(null == tAppUser1){
+            if (null == tAppUser1) {
                 return ResultUtil.error("邀请人还未注册账号");
             }
             Map<String, String> geocode = null;
@@ -1383,7 +1380,7 @@
             userCouponPayment.setInsertTime(new Date());
 
             //积分兑换
-            if(coupon.getRedemptionMethod() == 1){
+            if (coupon.getRedemptionMethod() == 1) {
                 UserCoupon userCoupon = new UserCoupon();
                 userCoupon.setCouponId(exchangeType.getGoodId());
                 userCoupon.setUserId(userIdFormRedis);
@@ -1404,13 +1401,13 @@
                 return ResultUtil.success(returnId);
             }
             //积分+现金
-            if(coupon.getRedemptionMethod() == 2){
+            if (coupon.getRedemptionMethod() == 2) {
                 userCouponPaymentClient.addUserCouponPayment(userCouponPayment);
                 try {
-                    if(exchangeType.getPayType() == 1){
+                    if (exchangeType.getPayType() == 1) {
                         return weChatPaymentCoupon("购买优惠券", userCouponPayment);
                     }
-                    if(exchangeType.getPayType() == 2){
+                    if (exchangeType.getPayType() == 2) {
                         return aliPaymentCoupon("购买优惠券", userCouponPayment);
                     }
                 } catch (Exception e) {
@@ -1418,14 +1415,14 @@
                 }
             }
         }
-        System.out.println("兑换积分商品"+exchangeType);
+        System.out.println("兑换积分商品" + exchangeType);
         try {
             SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
             String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5);
             PointsMerchandise merchandise = new PointsMerchandise();
-            if(exchangeType.getGoodsType() != 4){
+            if (exchangeType.getGoodsType() != 4) {
                 merchandise = mcClient.selectPointsMerchandiseById(exchangeType.getGoodId());
-            }else{
+            } else {
                 Coupon coupon = ucponClient.queryCouponById(exchangeType.getGoodId());
                 merchandise.setId(coupon.getId());
                 merchandise.setUserPopulation(coupon.getUserPopulation());
@@ -1516,26 +1513,26 @@
             pointsMerchandise.setCode(code);
             pointsMerchandise.setInsertTime(new Date());
             pointsMerchandise.setPayType(exchangeType.getExchangeType());
-            if(null != merchandise.getIntegral()){
+            if (null != merchandise.getIntegral()) {
                 pointsMerchandise.setIntegral(merchandise.getIntegral() * goodsNums);
             }
-            if(exchangeType.getExchangeType() == 2 || exchangeType.getExchangeType() == 3){
+            if (exchangeType.getExchangeType() == 2 || exchangeType.getExchangeType() == 3) {
                 pointsMerchandise.setCash(merchandise.getCash());
                 pointsMerchandise.setCashPayType(exchangeType.getPayType());
             }
-            
+
             Double m = new BigDecimal((merchandise.getIntegral() == null ? 0 : merchandise.getIntegral())).add((merchandise.getCash() == null ? BigDecimal.ZERO : merchandise.getCash())).doubleValue();
-            if((m * goodsNums) == 0) {
+            if ((m * goodsNums) == 0) {
                 pointsMerchandise.setPayStatus(2);
                 pointsMerchandise.setPaymentTime(new Date());
             }
             returnId = mcClient.saveDetailsUserPointMercase(pointsMerchandise);
-            if((m * goodsNums) == 0 && pointsMerchandise.getPayStatus() == 2){
+            if ((m * goodsNums) == 0 && pointsMerchandise.getPayStatus() == 2) {
                 returnModel.setReturnId(returnId);
                 return ResultUtil.success(returnModel);
             }
 
-            System.err.println("兑换方式"+exchangeType);
+            System.err.println("兑换方式" + exchangeType);
             switch (exchangeType.getExchangeType()) {
 //            积分
                 case 1:
@@ -1629,11 +1626,11 @@
                                     coursePackageOrder.setInsertTime(new Date());
                                     coursePackageOrder.setOrderType(2);
                                     paymentClient.savePaymentCoursePackage(coursePackageOrder);
-                                    return WechatPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code,merchandise.getId());
-                                } else if (merchandise.getType() == 1){
-                                    return WechatPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(goodsNums)), code,merchandise.getId());
-                                }else if(merchandise.getType() == 3){
-                                    return WechatPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(goodsNums)), code,merchandise.getId());
+                                    return WechatPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code, merchandise.getId());
+                                } else if (merchandise.getType() == 1) {
+                                    return WechatPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(goodsNums)), code, merchandise.getId());
+                                } else if (merchandise.getType() == 3) {
+                                    return WechatPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(goodsNums)), code, merchandise.getId());
                                 }
                             } catch (Exception e) {
                                 return ResultUtil.runErr();
@@ -1653,9 +1650,9 @@
                         case 1:
                             try {
                                 if (merchandise.getType() == 2) {
-                                    return WechatPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code,merchandise.getId());
+                                    return WechatPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code, merchandise.getId());
                                 } else {
-                                    return WechatPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(goodsNums)), code,merchandise.getId());
+                                    return WechatPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(goodsNums)), code, merchandise.getId());
                                 }
                             } catch (Exception e) {
                                 return ResultUtil.runErr();
@@ -1685,6 +1682,7 @@
 
     /**
      * 优惠券微信支付
+     *
      * @param body
      * @param userCouponPayment
      * @return
@@ -1697,24 +1695,25 @@
         Coupon coupon = userConponClient.queryCouponById(couponId);
         List<Integer> couponStoreIds = userConponClient.getCouponStoreIds(couponId);
         System.err.println("购买优惠券");
-        if (coupon!=null){
-            if (!couponStoreIds.isEmpty()&&!couponStoreIds.contains(-1)){
-                        // 微信商户号
-                        String s2 = storeClient.getmerchantNumberByOperatorId(couponStoreIds.get(0));
-                    System.err.println("微信商户号"+s2);
+        if (coupon != null) {
+            if (!couponStoreIds.isEmpty() && !couponStoreIds.contains(-1)) {
+                Store store = storeClient.queryStoreById(couponStoreIds.get(0));
+                // 微信商户号
+                String s2 = storeClient.getmerchantNumberByOperatorId(store.getOperatorId());
+                System.err.println("微信商户号" + s2);
 
-                        if(!StringUtils.hasLength(s2)){
-                            return ResultUtil.error("运营商未配置微信商户号,获取支付失败!");
-                        }
-                    ResultUtil weixinpay = payMoneyUtil.weixinpayV3(s2,"购买优惠券",
-                            code,"/base/coupon/weChatPaymentCouponCallback1",
-                            cash.toString());
-                    return weixinpay;
+                if (!StringUtils.hasLength(s2)) {
+                    return ResultUtil.error("运营商未配置微信商户号,获取支付失败!");
+                }
+                ResultUtil weixinpay = payMoneyUtil.weixinpayV3(s2, "购买优惠券",
+                        code, "/base/coupon/weChatPaymentCouponCallback1",
+                        cash.toString());
+                return weixinpay;
 
-            }else{
+            } else {
                 // 平台发布
-                        ResultUtil weixinpay = payMoneyUtil.weixinpay(body, "", code, cash.toString(),
-                "/base/coupon/weChatPaymentCouponCallback", "APP", "");
+                ResultUtil weixinpay = payMoneyUtil.weixinpay(body, "", code, cash.toString(),
+                        "/base/coupon/weChatPaymentCouponCallback", "APP", "");
                 return weixinpay;
             }
         }
@@ -1730,118 +1729,110 @@
      * @throws Exception
      */
     private String smid = "2088330203191220";//平台支付宝商户号
+
     public ResultUtil aliPaymentCoupon(String body, UserCouponPayment userCouponPayment) throws Exception {
+        ResultUtil alipay= ResultUtil.error("");
+        String smidRes = smid;// 结算资金到商户号
         String code = userCouponPayment.getCode();
         Double cash = userCouponPayment.getCash();
         Integer couponId = userCouponPayment.getCouponId();
         Coupon coupon = userConponClient.queryCouponById(couponId);
         List<Integer> couponStoreIds = userConponClient.getCouponStoreIds(couponId);
-        if (coupon!=null){
-            if (!couponStoreIds.isEmpty()&&!couponStoreIds.contains(-1)){
-                    // 门店 向上查询运营商
-                    Store store = storeClient.queryStoreById(couponStoreIds.get(0));
-                    if (store.getOperatorId()==null || store.getOperatorId()==0){
-                        // 平台
-                        ResultUtil alipay = payMoneyUtil.alipay(smid, body, "",String.valueOf(userCouponPayment.getId()), code, cash.toString(),
-                                "/base/coupon/aliPaymentCouponCallback");
-                        return alipay;
-                    }else{
-                        // 支付宝商户号
-                        String s2 = storeClient.getmerchantNumberAliByOperatorId(store.getOperatorId());
-                        System.err.println("支付宝商户号"+s2);
+        if (coupon != null) {
+            if (!couponStoreIds.isEmpty() && !couponStoreIds.contains(-1)) {
+                // 门店 向上查询运营商
+                Store store = storeClient.queryStoreById(couponStoreIds.get(0));
+                if (store.getOperatorId() == null || store.getOperatorId() == 0) {
 
-                        if(!StringUtils.hasLength(s2)){
-                            return ResultUtil.error("运营商未配置支付宝商户号,获取支付失败!");
-                        }
-                        ResultUtil alipay = payMoneyUtil.alipay(s2, body, "",String.valueOf(userCouponPayment.getId()), code, cash.toString(),
-                                "/base/coupon/aliPaymentCouponCallback");
-                        return alipay;
+                } else {
+                    // 支付宝商户号
+                    String s2 = storeClient.getmerchantNumberAliByOperatorId(store.getOperatorId());
+                    System.err.println("支付宝商户号" + s2);
+
+                    if (!StringUtils.hasLength(s2)) {
+                        return ResultUtil.error("运营商未配置支付宝商户号,获取支付失败!");
                     }
-            }else {
-                // 平台发布
-                ResultUtil alipay = payMoneyUtil.alipay(smid, body, "",String.valueOf(userCouponPayment.getId()), code, cash.toString(),
-                        "/base/coupon/aliPaymentCouponCallback");
-                return alipay;
+                    smidRes = s2;
+                }
             }
         }
-//        ResultUtil alipay = payMoneyUtil.alipay(smid, body, "",String.valueOf(userCouponPayment.getId()), code, cash.toString(),
-//                "/base/coupon/aliPaymentCouponCallback");
-//        if (alipay.getCode() == 200) {
-//            new Thread(new Runnable() {
-//                @Override
-//                public void run() {
-//                    try {
-//                        Thread.sleep(1000);
-//
-//                        int num = 1;
-//                        int wait = 0;
-//                        while (num <= 10) {
-//                            int min = 5000;
-//                            wait += (min * num);
-//                            Thread.sleep(wait);
-//                            UserCouponPayment userCouponPayment1 = userCouponPaymentClient.getUserCouponPayment(code);
-//                            if (userCouponPayment1.getStatus() == 2) {
-//                                break;
-//                            }
-//                            AlipayTradeQueryResponse alipayTradeQueryResponse = payMoneyUtil.queryALIOrder(code);
-//                            if (null != alipayTradeQueryResponse) {
-//                                /**
-//                                 * WAIT_BUYER_PAY(交易创建,等待买家付款)、
-//                                 * TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、
-//                                 * TRADE_SUCCESS(交易支付成功)、
-//                                 * TRADE_FINISHED(交易结束,不可退款)
-//                                 */
-//                                String s = alipayTradeQueryResponse.getTradeStatus();
-//
-//                                String tradeNo = alipayTradeQueryResponse.getTradeNo();
-//                                if ("TRADE_CLOSED".equals(s) || "TRADE_FINISHED".equals(s) || num == 10) {
-//                                    //有待支付的订单,这里不处理
-//                                    userCouponPayment1.setStatus(-1);
-//                                    userCouponPaymentClient.updateUserCouponPayment(userCouponPayment1);
-//                                    if ("TRADE_FINISHED".equals(s)) {
-//                                        // todo 资金结算
-//
-//                                    }
-//                                    break;
-//                                }
-//                                if ("TRADE_SUCCESS".equals(s)) {
-//                                    userCouponPayment1.setStatus(2);
-//                                    userCouponPayment1.setPaymentTime(new Date());
-//                                    userCouponPayment1.setOrderNumber(tradeNo);
-//                                    userCouponPaymentClient.updateUserCouponPayment(userCouponPayment1);
-//                                    UserCoupon userCoupon = new UserCoupon();
-//                                    userCoupon.setCouponId(userCouponPayment1.getCouponId());
-//                                    userCoupon.setUserId(userCouponPayment1.getUserId());
-//                                    userCoupon.setStatus(1);
-//                                    userCoupon.setInsertTime(new Date());
-//                                    userConponClient.insertToAppuserCoupon(userCoupon);
-//                                    if(null != userCouponPayment1.getIntegral() && 0 != userCouponPayment1.getIntegral()){
-//                                        //扣积分
-//                                        TAppUser user = appUserService.getById(userCouponPayment1.getUserId());
-//                                        user.setIntegral(user.getIntegral() - userCouponPayment1.getIntegral().intValue());
-//                                        appUserService.updateById(user);
-//                                    }
-////                                    payMoneyUtil.confirm(smid,code,tradeNo,cash.toString());
-//                                    break;
-//
-//                                }
-//
-//                                if ("WAIT_BUYER_PAY".equals(s)) {
-//                                    num++;
-//                                }
-//                            }
-//                        }
-//                    } catch (Exception e) {
-//                        e.printStackTrace();
-//                    }
-//                }
-//            }).start();
-//        }
-        return ResultUtil.error("支付失败");
+         alipay = payMoneyUtil.alipay(smidRes, body, "",String.valueOf(userCouponPayment.getId()), code, cash.toString(),
+                "/base/coupon/aliPaymentCouponCallback");
+        if (alipay.getCode() == 200) {
+            String finalSmidRes = smidRes;
+            new Thread(new Runnable() {
+                @Override
+                public void run() {
+                    try {
+                        Thread.sleep(1000);
+
+                        int num = 1;
+                        int wait = 0;
+                        while (num <= 10) {
+                            int min = 5000;
+                            wait += (min * num);
+                            Thread.sleep(wait);
+                            UserCouponPayment userCouponPayment1 = userCouponPaymentClient.getUserCouponPayment(code);
+                            if (userCouponPayment1.getStatus() == 2) {
+                                break;
+                            }
+                            AlipayTradeQueryResponse alipayTradeQueryResponse = payMoneyUtil.queryALIOrder(code);
+                            if (null != alipayTradeQueryResponse) {
+                                /**
+                                 * WAIT_BUYER_PAY(交易创建,等待买家付款)、
+                                 * TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、
+                                 * TRADE_SUCCESS(交易支付成功)、
+                                 * TRADE_FINISHED(交易结束,不可退款)
+                                 */
+                                String s = alipayTradeQueryResponse.getTradeStatus();
+
+                                String tradeNo = alipayTradeQueryResponse.getTradeNo();
+                                if ("TRADE_CLOSED".equals(s) || "TRADE_FINISHED".equals(s) || num == 10) {
+                                    //有待支付的订单,这里不处理
+                                    userCouponPayment1.setStatus(-1);
+                                    userCouponPaymentClient.updateUserCouponPayment(userCouponPayment1);
+
+                                    break;
+                                }
+                                if ("TRADE_SUCCESS".equals(s)) {
+                                    userCouponPayment1.setStatus(2);
+                                    userCouponPayment1.setPaymentTime(new Date());
+                                    userCouponPayment1.setOrderNumber(tradeNo);
+                                    userCouponPaymentClient.updateUserCouponPayment(userCouponPayment1);
+                                    UserCoupon userCoupon = new UserCoupon();
+                                    userCoupon.setCouponId(userCouponPayment1.getCouponId());
+                                    userCoupon.setUserId(userCouponPayment1.getUserId());
+                                    userCoupon.setStatus(1);
+                                    userCoupon.setInsertTime(new Date());
+                                    userConponClient.insertToAppuserCoupon(userCoupon);
+                                    if(null != userCouponPayment1.getIntegral() && 0 != userCouponPayment1.getIntegral()){
+                                        //扣积分
+                                        TAppUser user = appUserService.getById(userCouponPayment1.getUserId());
+                                        user.setIntegral(user.getIntegral() - userCouponPayment1.getIntegral().intValue());
+                                        appUserService.updateById(user);
+                                    }
+                                    Thread.sleep(30000);
+                                    payMoneyUtil.confirm(finalSmidRes,code,tradeNo,cash.toString());
+                                    break;
+                                }
+
+                                if ("WAIT_BUYER_PAY".equals(s)) {
+                                    num++;
+                                }
+                            }
+                        }
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+                }
+            }).start();
+        }
+        return alipay;
     }
 
     /**
      * 支付回调
+     *
      * @param code
      * @param orderNumber
      * @return
@@ -1865,7 +1856,7 @@
         userCoupon.setInsertTime(new Date());
         userConponClient.insertToAppuserCoupon(userCoupon);
 
-        if(null != userCouponPayment1.getIntegral() && 0 != userCouponPayment1.getIntegral()){
+        if (null != userCouponPayment1.getIntegral() && 0 != userCouponPayment1.getIntegral()) {
             //扣积分
             SaveUserIntegralChangesVo vo = new SaveUserIntegralChangesVo();
             vo.setAppUserId(userCouponPayment1.getUserId());
@@ -1903,19 +1894,18 @@
     }
 
     private ResultUtil AlipayPayment(Integer type, BigDecimal cash, String code, Integer returnId) {
+        ResultUtil alipay= ResultUtil.error("");
+        String smidRes = smid;// 结算资金到商户号
         PointsMerchandise pointsMerchandise = mcClient.selectPointsMerchandiseById(returnId);
-        System.err.println("查询积分商品"+pointsMerchandise);
+        System.err.println("查询积分商品" + pointsMerchandise);
         List<Integer> integers = mcsClient.queryPointMerStoreIds(pointsMerchandise.getId());
-        String name = (type == 1 ? "购买实体商品" : type == 2 ? "报名运动营": type == 3 ? "购买门票" : "购买优惠券");
+        String name = (type == 1 ? "购买实体商品" : type == 2 ? "报名运动营" : type == 3 ? "购买门票" : "购买优惠券");
         switch (type) {
             case 1:
                 if (!integers.isEmpty()) {
                     Store store1 = storeClient.queryStoreById(integers.get(0));
                     if (store1.getOperatorId() == null || store1.getOperatorId() == 0) {
-                        // 平台门票
-                        ResultUtil alipay = payMoneyUtil.alipay(smid, name, name, String.valueOf(returnId), code, cash.toString(),
-                                "/base/pointMer/exchangeGoodPaymentAliCallback");
-                        return alipay;
+
                     } else {
                         String s2 = storeClient.getmerchantNumberAliByOperatorId(store1.getOperatorId());
                         System.err.println("支付宝商户号" + s2);
@@ -1923,26 +1913,15 @@
                         if (!StringUtils.hasLength(s2)) {
                             return ResultUtil.error("运营商未配置支付宝商户号,获取支付失败!");
                         }
-                        ResultUtil alipay = payMoneyUtil.alipay(s2, name, name, String.valueOf(returnId), code, cash.toString(),
-                                "/base/pointMer/exchangeGoodPaymentAliCallback");
-                        return alipay;
+                        smidRes = s2;
                     }
-                }else{
-                    // 平台门票
-                    ResultUtil alipay = payMoneyUtil.alipay(smid, name, name, String.valueOf(returnId), code, cash.toString(),
-                            "/base/pointMer/exchangeGoodPaymentAliCallback");
-                    return alipay;
-
                 }
+                break;
             case 2:
                 // 判断课包属于平台还是运营商
                 CoursePackage coursePackage = cpageClient.queryCoursePackageById(pointsMerchandise.getCoursePackageId());
                 Store store = storeClient.queryStoreById(coursePackage.getStoreId());
                 if (store.getOperatorId() == null || store.getOperatorId() == 0) {
-                    // 平台课包
-                    ResultUtil alipay = payMoneyUtil.alipay(smid, name, name, String.valueOf(returnId), code, cash.toString(),
-                            "/base/pointMer/exchangeGoodPaymentAliCallback");
-                    return alipay;
                 } else {
                     String s2 = storeClient.getmerchantNumberAliByOperatorId(store.getOperatorId());
                     System.err.println("支付宝商户号" + s2);
@@ -1950,37 +1929,104 @@
                     if (!StringUtils.hasLength(s2)) {
                         return ResultUtil.error("运营商未配置支付宝商户号,获取支付失败!");
                     }
-                    ResultUtil alipay = payMoneyUtil.alipay(s2, name, name, String.valueOf(returnId), code, cash.toString(),
-                            "/base/pointMer/exchangeGoodPaymentAliCallback");
-                    return alipay;
+                    smidRes = s2;
                 }
+                break;
             case 3:
                 if (!integers.isEmpty()) {
                     Store store1 = storeClient.queryStoreById(integers.get(0));
                     if (store1.getOperatorId() == null || store1.getOperatorId() == 0) {
-                        // 平台门票
-                        ResultUtil alipay = payMoneyUtil.alipay(smid, name, name, String.valueOf(returnId), code, cash.toString(),
-                                "/base/pointMer/exchangeGoodPaymentAliCallback");
-                        return alipay;
+
                     } else {
                         String s2 = storeClient.getmerchantNumberAliByOperatorId(store1.getOperatorId());
                         System.err.println("支付宝商户号" + s2);
                         if (!StringUtils.hasLength(s2)) {
                             return ResultUtil.error("运营商未配置支付宝商户号,获取支付失败!");
                         }
-                            ResultUtil alipay = payMoneyUtil.alipay(s2, name, name, String.valueOf(returnId), code, cash.toString(),
-                                    "/base/pointMer/exchangeGoodPaymentAliCallback");
-                            return alipay;
-                        }
-                    }else{
-                    // 平台门票
-                    ResultUtil alipay = payMoneyUtil.alipay(smid, name, name, String.valueOf(returnId), code, cash.toString(),
-                            "/base/pointMer/exchangeGoodPaymentAliCallback");
-                    return alipay;
+                        smidRes = s2;
+                    }
                 }
-                }
-        return ResultUtil.error("获取支付失败!");
+                break;
+        }
+        alipay = payMoneyUtil.alipay(smidRes, name, name, String.valueOf(returnId), code, cash.toString(),
+                "/base/pointMer/exchangeGoodPaymentAliCallback");
+        if (alipay.getCode() == 200) {
+            new Thread(new Runnable() {
+                @Override
+                public void run() {
+                    try {
+                        int num = 1;
+                        int wait = 0;
+                        while (num <= 10) {
+                            int min = 5000;
+                            wait += (min * num);
+                            Thread.sleep(wait);
+                            System.out.println("支付宝查询code:" + code);
+                            List<UserPointsMerchandise> userPointsMerchandises = mcClient.queryUserPointMerchaseByCode(code);
+                            System.out.println("list-----" + userPointsMerchandises);
+                            if (userPointsMerchandises.get(0).getPayStatus() == 2) {
+                                break;
+                            }
+//                            ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryALIOrder(code);
+                            AlipayTradeQueryResponse resultUtil = payMoneyUtil.queryALIOrder(code);
+                            if (resultUtil.getCode().equals("10000") && userPointsMerchandises.get(0).getPayStatus() == 1) {
+                                /**
+                                 * WAIT_BUYER_PAY(交易创建,等待买家付款)、
+                                 * TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、
+                                 * TRADE_SUCCESS(交易支付成功)、
+                                 * TRADE_FINISHED(交易结束,不可退款)
+                                 */
+//                                Map<String, String> data1 = resultUtil.getData();
+//                                String s = data1.get("tradeStatus");
+//                                String tradeNo = data1.get("tradeNo");
 
+                                String tradeNo = resultUtil.getTradeNo();
+                                String tradeStatus = resultUtil.getTradeStatus();
+                                System.out.println("ssssss" + tradeStatus);
+
+                                if ("TRADE_SUCCESS".equals(tradeStatus)) {
+                                    for (UserPointsMerchandise userPointsMerchandise : userPointsMerchandises) {
+                                        userPointsMerchandise.setPayStatus(2);
+                                        userPointsMerchandise.setPaymentTime(new Date());
+                                        userPointsMerchandise.setOrderNumber(tradeNo);
+                                        userPointsMerchandise.setCashPayType(2);
+                                        userPointsMerchandise.setInsertTime(null);
+                                        userPointsMerchandise.setUserId(null);
+                                        mcClient.updateDetailsUserPointMercase(userPointsMerchandise);
+                                    }
+                                    List<Integer> integers = mcsClient.queryPointMerStoreIds(pointsMerchandise.getId());
+                                    Store store1 = storeClient.queryStoreById(integers.get(0));
+                                    if (store1.getOperatorId()!=null && store1.getOperatorId() != 0){
+                                        String s2 = storeClient.getmerchantNumberAliByOperatorId(store1.getOperatorId());
+                                        System.err.println("查询支付宝商户号"+s2);
+                                        // todo 资金结算 支付宝推荐30s之后再进行结算
+                                        Thread.sleep(30000);
+                                        payMoneyUtil.confirm(s2,code, tradeNo,cash.toString());
+                                    }
+                                    break;
+                                }
+                                if ("TRADE_FINISHED".equals(tradeStatus)) {
+
+                                    break;
+                                }
+//                                if("REFUND".equals(tradeStatus) || "NOTPAY".equals(tradeStatus) || "CLOSED".equals(tradeStatus) || "REVOKED".equals(tradeStatus) || "PAYERROR".equals(tradeStatus) || num == 10){
+//                                    mcClient.deletePaymentRecord(code);
+//                                    break;
+//                                }
+
+                                if ("WAIT_BUYER_PAY".equals(tradeStatus)) {
+                                    num++;
+                                }
+                            }
+                        }
+                    } catch (Exception e) {
+                        mcClient.deletePaymentRecord(code);
+                        e.printStackTrace();
+                    }
+                }
+            }).start();
+        }
+        return alipay;
     }
 
     public void moneyOut(String outNum, String tradeNo) throws AlipayApiException {
@@ -2029,7 +2075,7 @@
 
         List<UserPointsMerchandise> userPointsMerchandises = merChandiseClient.queryUserPointMerchaseByCode(outNum);
 //        PaymentCompetition code = paymentCompetitionService.getOne(new QueryWrapper<PaymentCompetition>().eq("code", outNum));
-        if(userPointsMerchandises.size() > 0){
+        if (userPointsMerchandises.size() > 0) {
             Integer storeId = userPointsMerchandises.get(0).getStoreId();
 
 //        Competition byId1 = competitionService.getById(code.getCompetitionId());
@@ -2075,31 +2121,31 @@
     }
 
 
-    private ResultUtil WechatPayment(Integer type, BigDecimal cash, String code,Integer id) throws Exception {
-        String name = (type == 1 ? "购买实体商品" : type == 2 ? "报名运动营": type == 3 ? "购买门票" : "购买优惠券");
-        System.err.println("微信支付:"+name);
+    private ResultUtil WechatPayment(Integer type, BigDecimal cash, String code, Integer id) throws Exception {
+        String name = (type == 1 ? "购买实体商品" : type == 2 ? "报名运动营" : type == 3 ? "购买门票" : "购买优惠券");
+        System.err.println("微信支付:" + name);
 
         PointsMerchandise pointsMerchandise = mcClient.selectPointsMerchandiseById(id);
-        System.err.println("查询积分商品"+pointsMerchandise);
+        System.err.println("查询积分商品" + pointsMerchandise);
         List<Integer> integers = mcsClient.queryPointMerStoreIds(pointsMerchandise.getId());
 
-        switch (type){
+        switch (type) {
             case 1:
-                if (!integers.isEmpty()){
+                if (!integers.isEmpty()) {
                     Store store1 = storeClient.queryStoreById(integers.get(0));
-                    if (store1.getOperatorId() ==null || store1.getOperatorId() == 0){
+                    if (store1.getOperatorId() == null || store1.getOperatorId() == 0) {
                         // 平台门票
                         ResultUtil weixinpay = payMoneyUtil.weixinpay(name, "", code, cash.toString(),
                                 "/base/pointMer/exchangeGoodPaymentWeChatCallback", "APP", "");
                         return weixinpay;
-                    }else{
+                    } else {
                         String s2 = storeClient.getmerchantNumberByOperatorId(store1.getOperatorId());
-                        System.err.println("微信商户号"+s2);
+                        System.err.println("微信商户号" + s2);
 
-                        if(!StringUtils.hasLength(s2)){
+                        if (!StringUtils.hasLength(s2)) {
                             return ResultUtil.error("运营商未配置微信商户号,获取支付失败!");
                         }
-                        ResultUtil weixinpay = payMoneyUtil.weixinpayV3(s2,name,  code,
+                        ResultUtil weixinpay = payMoneyUtil.weixinpayV3(s2, name, code,
                                 "/base/pointMer/exchangeGoodPaymentWeChatCallback1",
                                 cash.toString());
                         return weixinpay;
@@ -2110,44 +2156,44 @@
                 // 判断课包属于平台还是运营商
                 CoursePackage coursePackage = cpageClient.queryCoursePackageById(pointsMerchandise.getCoursePackageId());
                 Store store = storeClient.queryStoreById(coursePackage.getStoreId());
-                if (store.getOperatorId() ==null || store.getOperatorId() == 0){
+                if (store.getOperatorId() == null || store.getOperatorId() == 0) {
                     // 平台课包
                     ResultUtil weixinpay = payMoneyUtil.weixinpay(name, "", code, cash.toString(),
                             "/base/pointMer/exchangeGoodPaymentWeChatCallback", "APP", "");
                     return weixinpay;
-                }else{
+                } else {
                     String s2 = storeClient.getmerchantNumberByOperatorId(store.getOperatorId());
-                    System.err.println("微信商户号"+s2);
+                    System.err.println("微信商户号" + s2);
 
-                    if(!StringUtils.hasLength(s2)){
+                    if (!StringUtils.hasLength(s2)) {
                         return ResultUtil.error("运营商未配置微信商户号,获取支付失败!");
                     }
-                    ResultUtil weixinpay = payMoneyUtil.weixinpayV3(s2,name,  code,
+                    ResultUtil weixinpay = payMoneyUtil.weixinpayV3(s2, name, code,
                             "/base/pointMer/exchangeGoodPaymentWeChatCallback1",
                             cash.toString());
                     return weixinpay;
                 }
             case 3:
-                if (!integers.isEmpty()){
+                if (!integers.isEmpty()) {
                     Store store1 = storeClient.queryStoreById(integers.get(0));
-                    if (store1.getOperatorId() ==null || store1.getOperatorId() == 0){
+                    if (store1.getOperatorId() == null || store1.getOperatorId() == 0) {
                         // 平台门票
                         ResultUtil weixinpay = payMoneyUtil.weixinpay(name, "", code, cash.toString(),
                                 "/base/pointMer/exchangeGoodPaymentWeChatCallback", "APP", "");
                         return weixinpay;
-                    }else{
+                    } else {
                         String s2 = storeClient.getmerchantNumberByOperatorId(store1.getOperatorId());
-                        System.err.println("微信商户号"+s2);
+                        System.err.println("微信商户号" + s2);
 
-                        if(!StringUtils.hasLength(s2)){
+                        if (!StringUtils.hasLength(s2)) {
                             return ResultUtil.error("运营商未配置微信商户号,获取支付失败!");
                         }
-                        ResultUtil weixinpay = payMoneyUtil.weixinpayV3(s2,name,  code,
+                        ResultUtil weixinpay = payMoneyUtil.weixinpayV3(s2, name, code,
                                 "/base/pointMer/exchangeGoodPaymentWeChatCallback1",
                                 cash.toString());
                         return weixinpay;
                     }
-                }else{
+                } else {
                     // 平台门票
                     ResultUtil weixinpay = payMoneyUtil.weixinpay(name, "", code, cash.toString(),
                             "/base/pointMer/exchangeGoodPaymentWeChatCallback", "APP", "");
@@ -2161,10 +2207,10 @@
 
 
     @Override
-    public ResultUtil exchangeAddPaymentCallback(String code, String orderNumber) {
-        System.err.println("进入回调"+code);
+    public ResultUtil exchangeAddPaymentCallback(String code, String orderNumber) throws AlipayApiException {
+        System.err.println("进入回调" + code);
         UserPointsMerchandise userPointsMerchandise = mcClient.queryUserPointMerchaseByCode(code).get(0);
-        System.err.println("商品"+userPointsMerchandise);
+        System.err.println("商品" + userPointsMerchandise);
         if (userPointsMerchandise.getPayStatus() == 2) {
             return ResultUtil.success();
         }
@@ -2179,10 +2225,10 @@
 
         Integer pointsMerchandiseId = userPointsMerchandise.getPointsMerchandiseId();
         PointsMerchandise pointsMerchandise = mcClient.selectPointsMerchandiseById(pointsMerchandiseId);
-        if(pointsMerchandise.getType() == 2){
+        if (pointsMerchandise.getType() == 2) {
             //课程
             CoursePackageOrder coursePackageOrder1 = paymentClient.getCoursePackageOrderByCode(code);
-            if(null != coursePackageOrder1){
+            if (null != coursePackageOrder1) {
                 coursePackageOrder1.setPayStatus(2);
                 coursePackageOrder1.setOrderNumber(orderNumber);
                 coursePackageOrder1.setAppUserId(null);
@@ -2199,6 +2245,13 @@
                 paymentClient.addCoursePackageOrderStudent(addCoursePackageOrderStudent);
             }
         }
+        List<Integer> integers = mcsClient.queryPointMerStoreIds(pointsMerchandise.getId());
+        Store store1 = storeClient.queryStoreById(integers.get(0));
+        if (store1.getOperatorId() != null && store1.getOperatorId() != 0) {
+            String s2 = storeClient.getmerchantNumberAliByOperatorId(store1.getOperatorId());
+            System.err.println("支付宝商户号" + s2);
+            payMoneyUtil.confirm(s2, code, orderNumber, userPointsMerchandise.getCash().toString());
+        }
         return ResultUtil.success();
     }
 
diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java
index 4ab5f6f..677f74b 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java
@@ -476,6 +476,7 @@
         ResultUtil alipay = payMoneyUtil.alipay(smid1,"课包续费", "课包续费", "", code, amount.toString(),
                 "/base/coursePackage/alipayPaymentCallback");
         if (alipay.getCode() == 200) {
+            String finalSmid = smid1;
             new Thread(new Runnable() {
                 @Override
                 public void run() {
@@ -516,24 +517,8 @@
                                     coursePackagePayment.setOrderNumber(tradeNo);
                                     couPayClient.updatePaymentCoursePackage(coursePackagePayment);
                                     Integer coursePackageId = coursePackagePayment.getCoursePackageId();
-                                    // 判断这个课包是属于哪个运营商的
-                                    CoursePackage coursePackage = coursePackageClient.queryCoursePackageById(coursePackageId);
-                                    Integer storeId = coursePackage.getStoreId();
-                                    Store store = storeClient.queryStoreById(storeId);
-                                    String smid1= "";
-                                    if (store.getOperatorId()==null || store.getOperatorId() == 0){
-                                        // 平台
-                                        smid1 = smid;
-                                        // 属于平台 不做资金冻结 不做分账处理
-//                                        payMoneyUtil.confirm(smid1,code,tradeNo,amount.toString());
-                                    }else{
-                                        String smidByOperatorId = storeClient.getSMIDByOperatorId(store.getOperatorId());
-                                        smid1 = smidByOperatorId;
-                                        payMoneyUtil.confirm1(smid1,code,tradeNo,amount.toString());
-                                        // 分账处理
-                                        extracted(store.getOperatorId(), amount, tradeNo);
-                                    }
-                                    
+                                    Thread.sleep(30000);
+                                        payMoneyUtil.confirm(finalSmid,code,tradeNo,amount.toString());
                                     break;
                                 }
                                 if ("WAIT_BUYER_PAY".equals(tradeStatus)) {
diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/VipPaymentServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/VipPaymentServiceImpl.java
index 343d8b3..53dfda7 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/VipPaymentServiceImpl.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/VipPaymentServiceImpl.java
@@ -160,8 +160,8 @@
                                     // 注册会员送券 先判断是否有注册送券类型的优惠券 判断优惠券状态 审核是否通过 是否删除 是否在有效期内 是否领取数量达上限
                                     List<Long> longs = userConponClient.queryCouponByUser(appUser.getId());
                                     redisUtil.setStrValue("VIP_P_" + vipPayment1.getAppUserId(), JSON.toJSONString(longs), 3600);
-                                    // 如果交易结束 将当前订单金额分配到商户
-//                                    payMoneyUtil.confirm(smid,vipPayment.getCode(),tradeNo,amount);
+                                    Thread.sleep(30000);
+                                    payMoneyUtil.confirm(smid, code, tradeNo, amount);
                                     return;
                                 }
                                 if ("WAIT_BUYER_PAY".equals(tradeStatus)) {
diff --git a/cloud-server-account/src/main/java/com/dsh/account/util/PayMoneyUtil.java b/cloud-server-account/src/main/java/com/dsh/account/util/PayMoneyUtil.java
index 5cd4639..733d682 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/util/PayMoneyUtil.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/util/PayMoneyUtil.java
@@ -4,10 +4,7 @@
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-import com.alipay.api.AlipayApiException;
-import com.alipay.api.AlipayClient;
-import com.alipay.api.CertAlipayRequest;
-import com.alipay.api.DefaultAlipayClient;
+import com.alipay.api.*;
 import com.alipay.api.domain.*;
 import com.alipay.api.request.*;
 import com.alipay.api.response.*;
@@ -59,7 +56,21 @@
 import java.util.*;
 
 import static com.dsh.account.util.akeylogin.Md5Util.byteArrayToHexString;
+import com.alipay.api.AlipayApiException;
+import com.alipay.api.AlipayClient;
+import com.alipay.api.DefaultAlipayClient;
+import com.alipay.api.AlipayConfig;
+import com.alipay.api.domain.SettleDetailInfo;
+import com.alipay.api.response.AlipayTradeSettleConfirmResponse;
+import com.alipay.api.domain.SettleConfirmExtendParams;
+import com.alipay.api.request.AlipayTradeSettleConfirmRequest;
+import com.alipay.api.domain.AlipayTradeSettleConfirmModel;
+import com.alipay.api.domain.SettleInfo;
 
+import com.alipay.api.FileItem;
+import java.util.Base64;
+import java.util.ArrayList;
+import java.util.List;
 /**
  * 第三方支付工具类
  */
@@ -187,56 +198,6 @@
      */
     public ResultUtil  alipay(String smid,String body, String subject,
                               String passbackParams, String outTradeNo, String amount, String notifyUrl) {
-//        //构造client
-//        CertAlipayRequest certAlipayRequest = new CertAlipayRequest ();
-//        //设置网关地址
-//        certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do");
-//        //设置应用Id
-//        certAlipayRequest.setAppId(aliAppid);
-//        //设置应用私钥
-//        certAlipayRequest.setPrivateKey(appPrivateKey);
-//        //设置请求格式,固定值json
-//        certAlipayRequest.setFormat("json");
-//        //设置字符集
-//        certAlipayRequest.setCharset("UTF-8");
-//        //设置签名类型
-//        certAlipayRequest.setSignType("RSA2");
-//        //设置应用公钥证书路径
-//        certAlipayRequest.setCertPath(app_cert_path);
-//        //设置支付宝公钥证书路径
-//        certAlipayRequest.setAlipayPublicCertPath(alipay_cert_path);
-//        //设置支付宝根证书路径
-//        certAlipayRequest.setRootCertPath(alipay_root_cert_path);
-//        //构造client
-//        AlipayClient alipayClient = null;
-//        try {
-//            alipayClient = new DefaultAlipayClient(certAlipayRequest);
-//        } catch (AlipayApiException e) {
-//            e.printStackTrace();
-//        }
-//        //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
-//        AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest ();
-//        //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。
-//        AlipayTradeAppPayModel model = new AlipayTradeAppPayModel ();
-//        model.setBody(body);
-//        model.setSubject (subject);
-//        model.setOutTradeNo (outTradeNo);
-//        model.setTimeoutExpress ("30m" );
-//        model.setTotalAmount (amount);
-//        model.setProductCode ( "QUICK_MSECURITY_PAY" );
-//        model.setPassbackParams(passbackParams);//自定义参数
-//        request.setBizModel ( model );
-//        request.setNotifyUrl (callbackPath + notifyUrl);
-//        try  {
-//            //这里和普通的接口调用不同,使用的是sdkExecute
-//            AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
-//            Map<String, String> map = new HashMap<>();
-//            map.put("orderString", response.getBody());
-//            System.out.println(map);//就是orderString 可以直接给客户端请求,无需再做处理。
-//            return ResultUtil.success(map);
-//        }  catch (AlipayApiException e ) {
-//            e.printStackTrace();
-//        }
 
         //实例化客户端
         AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", aliAppid, appPrivateKey, "json", "UTF-8", alipay_public_key, "RSA2");
@@ -264,8 +225,14 @@
         subMerchant.setMerchantId(smid);
         model.setSubMerchant(subMerchant);
 
+        if (!smid.equals("2088330203191220")){
+            ExtendParams extendParams = new ExtendParams();
+            extendParams.setRoyaltyFreeze("true");
+            model.setExtendParams(extendParams);
+        }
         request.setBizModel(model);
         request.setNotifyUrl(callbackPath + notifyUrl);
+        System.err.println("回调地址:"+callbackPath + notifyUrl);
         try {
             //这里和普通的接口调用不同,使用的是sdkExecute
             AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
@@ -314,45 +281,63 @@
         return ResultUtil.success(alipay_trade_precreate_response.getString("qr_code"));
     }
     // 直付通模式 alipay.trade.settle.confirm(统一收单确认结算接口)
-    public ResultUtil confirm(String smid1,String code, String outTradeNo, String amount) {
-        AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",
-                aliAppid,
-                appPrivateKey,
-                "json",
-                "GBK",
-                alipay_public_key,
-                "RSA2");
+    public ResultUtil confirm(String smid1,String code, String outTradeNo, String amount) throws AlipayApiException {
+        // 初始化SDK
+        AlipayClient alipayClient = new DefaultAlipayClient(getAlipayConfig());
+
+        // 构造请求参数以调用接口
         AlipayTradeSettleConfirmRequest request = new AlipayTradeSettleConfirmRequest();
-        request.setBizContent("{" +
-                "  \"out_request_no\":\""+code+"\"," +
-                "  \"trade_no\":\""+outTradeNo+"\"," +
-                "  \"settle_info\":{" +
-                "    \"settle_detail_infos\":[" +
-                "      {" +
-                "        \"trans_in_type\":\"defaultSettle\"," +
-                "        \"settle_entity_id\":\""+smid1+"\"," +
-                "        \"settle_entity_type\":\"SecondMerchant\"," +
-                "        \"amount\":"+amount+"," +
-                "      }" +
-                "    ]" +
-                "  }," +
-                "  \"extend_params\":{" +
-                "    \"royalty_freeze\":\"false\"" +
-                "  }" +
-                "}");
-        AlipayTradeSettleConfirmResponse response = null;
-        try {
-            response = alipayClient.execute(request);
-        } catch (AlipayApiException e) {
-            e.printStackTrace();
-        }
-        if(response.isSuccess()){
+        AlipayTradeSettleConfirmModel model = new AlipayTradeSettleConfirmModel();
+
+        // 设置确认结算请求流水号
+        model.setOutRequestNo(code);
+
+        // 设置支付宝交易号
+        model.setTradeNo(outTradeNo);
+
+        // 设置描述结算信息
+        SettleInfo settleInfo = new SettleInfo();
+        List<SettleDetailInfo> settleDetailInfos = new ArrayList<SettleDetailInfo>();
+        SettleDetailInfo settleDetailInfos0 = new SettleDetailInfo();
+        settleDetailInfos0.setAmount(amount);
+        settleDetailInfos0.setTransIn(smid1);
+        settleDetailInfos0.setSettleEntityType("SecondMerchant");
+        settleDetailInfos0.setSettleEntityId(smid1);
+        settleDetailInfos0.setTransInType("defaultSettle");
+        settleDetailInfos.add(settleDetailInfos0);
+        settleInfo.setSettleDetailInfos(settleDetailInfos);
+        model.setSettleInfo(settleInfo);
+        request.setBizModel(model);
+        System.err.println("结算金额"+amount);
+        // 第三方代调用模式下请设置app_auth_token
+        // request.putOtherTextParam("app_auth_token", "<-- 请填写应用授权令牌 -->");
+
+        AlipayTradeSettleConfirmResponse response = alipayClient.execute(request);
+        System.out.println("返回体"+response.getBody());
+
+
+        if (response.isSuccess()) {
             System.out.println("调用成功");
-            return ResultUtil.success();
         } else {
             System.out.println("调用失败");
-            return ResultUtil.error("出现问题啦");
+            // sdk版本是"4.38.0.ALL"及以上,可以参考下面的示例获取诊断链接
+            // String diagnosisUrl = DiagnosisUtils.getDiagnosisUrl(response);
+            // System.out.println(diagnosisUrl);
         }
+        return ResultUtil.success(response.getBody());
+    }
+    private static AlipayConfig getAlipayConfig() {
+        String privateKey  = "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCi5i9nW/hGLJ3A06cZxTQdviFC7THpdSihoTYGLr9q006hu0V26ecBMY/o4w5bvIX0Ok/yofmZsVcCJpAPvbXL/uqVrIjnRRxXiaeBFThlxoBUTdunvbUSDYfzlEhJr5NvUKI6H6lz2niXlQGx4qy8Hau4ccWit9kM8jwUvsBVQoFgJA+xrjMvooA7YLopQtpOD+UJr5thApTSf1xrnr1W12yolTLEH15JmNV372cqXrYUuqnY0QsaPtxeqJUGAOcGdVLllQ7easEznP8DFBvDdHATcmp2SHNQDUEWN6MCVPbMgY06NQVqAXxqjTAYSVh+6TRu6bofPmpYC3TZB003AgMBAAECggEBAJAcR2+PA3NBYUYHeFrqBRMS8uX8ZR19kjZ7IgoSLTFaQsP9opRylPSPXhrPVBKAE5leRQAHn4MCSlESwHvMfxo7KFjFTFAc6dffZZpipYQUOc9bGampwJh58/3e/pyBgVMG6J23CPf/HJQtNFSkjd/V9+ayb/9l2dUEL3bC0fAZ/dbx8HsxdLw8wn3fLlWLj68hOMqa2deCZe3JdSVsPbeWqkh56FFsMLug0Nd+Ar4TgRl9/jnhXF0JWiD0LmPUYLhboY7EfUBzN4w1iYbDi1P+3zvoOYsiVKAXox9GMhQ2VzOO2UcSTuizSza2e98mGpabl/GpKmCz+RDFjtkX6eECgYEA2MyCij65eO3aGIm3FUe93DULRBYTfX8qJQSJq2WOWA3mmQlEW6L3O2B5/lG2h+8WmN6iLEs9eHpgycGYp7vAqgrANEn16ACVcuyx0scFtrZfZ+kmHMzFfiUWxJjVYk/6YngsGVBLdw6ueM42C8TTP67X9tU5TdVGoGWuqEj4W98CgYEAwFqwprXOch5Pqk/RPbb49r0Ou03K/UbciWnWWKzUhFFNS8MdlQPoDvQZbMwHLeWsa2VhaKITK3x5biLQb3U+0GLOn6lTvEyrEUH+ucREyLgVYTRAvwBPtnvlrzpyxPk2HnslQjju8WrvvLLBMKWUjlTrTOzhaHT21gz3pHMiOakCgYEAhLmfaXdBITGshb054sNLDtdCkGpbgEcrzAHdLps769iGxkYQHXHFngpQZUwtTUcoNGqIKknd1jZFrv7gsD+XkgKG7PwimehRlkwmCX5ilxtLiVgJRzRt6+5U5AMVD90a0tHzXYP0z2yjj73fBJF5KtGl0a10KZxaYrQdm1UhB00CgYBZZgzx/k9rtHC8LAqIj1CYhHejT92G53c6Gkl3vyOqN4sgKhfGmSEySfrDGPRBPZxr8ZtbIPCd5mUdberH0osWGMYFaJI1UsCy7aQwvGpniz7MhZeN7dweaOjwDs8mgtjHQ96mL4XGCDhR0BZ/wIURvZ/6iaGdhbbu9unlsWj3uQKBgQCmZYdsbbZkd3ev6f8rwyvMz+DrCQyYpY44cegBYuJgrZiQnL2fJioeN7ixX0UM48SfwsZEIrzshP/LGAwnc2MdjxKUl4jLN8SEe0NAjXOnz9Zaw740+aOmLpXcLWdP4uM2gIhWsvW1tEkQZCXmm7c9s/RsU8Pmzv+YL3+fSijOzA==";
+        String alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmu8n/4yTHWbn7VOrNc9OsLtDL1bEQ8gC1dHkj8Wy5z0mkaOsjJRIG/28ze12M0V8jdCKuuDr5Z1OPKiqf+XO3ypguEh+mYUVMBM/cZodDFQfTY1TKLWjvQCuaqlA+QUTCK6f7T7stsgyQ1o9Jj0rXZDz6PM4QHSTzjrLIBaeqM5WIBvH+fy/X+QG5Utd+/UT0kc0JyvuKhZ65yVUd/C9VcwJJAPliRsAQNrqYterwAJ9zvw9tF11wj9W0XgJ8Ccu4x3gR1vrlLRJJo/OA97RmxPQ+5hSacWQZCUd1dwiBq+YCrKVHGTj14izRHXrLc0yBlRXo7tBOIqcy3IsvKVthQIDAQAB";
+        AlipayConfig alipayConfig = new AlipayConfig();
+        alipayConfig.setServerUrl("https://openapi.alipay.com/gateway.do");
+        alipayConfig.setAppId("2021004105665036");
+        alipayConfig.setPrivateKey(privateKey);
+        alipayConfig.setFormat("json");
+        alipayConfig.setAlipayPublicKey(alipayPublicKey);
+        alipayConfig.setCharset("UTF-8");
+        alipayConfig.setSignType("RSA2");
+        return alipayConfig;
     }
     // 资金冻结 做分账处理
     public ResultUtil confirm1(String smid,String code, String outTradeNo, String amount) {
diff --git a/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/IWorldCupService.java b/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/IWorldCupService.java
index 518eb82..83f799a 100644
--- a/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/IWorldCupService.java
+++ b/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/IWorldCupService.java
@@ -1,5 +1,6 @@
 package com.dsh.communityWorldCup.service;
 
+import com.alipay.api.AlipayApiException;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.dsh.communityWorldCup.entity.WorldCup;
 import com.dsh.communityWorldCup.model.*;
@@ -77,7 +78,7 @@
      * @param outTradeNo
      * @return
      */
-    ResultUtil paymentWorldCupCallback(String code, String outTradeNo);
+    ResultUtil paymentWorldCupCallback(String code, String outTradeNo) throws AlipayApiException;
 
 
     /**
diff --git a/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/impl/WorldCupServiceImpl.java b/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/impl/WorldCupServiceImpl.java
index d6e4137..dc89dab 100644
--- a/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/impl/WorldCupServiceImpl.java
+++ b/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/impl/WorldCupServiceImpl.java
@@ -513,7 +513,8 @@
         return payment;
     }
 
-    private String smidVx = "2088330203191220";//平台微信商户号
+    private String smid = "2088330203191220";//平台支付宝商户号
+
 
     /**
      * 支付逻辑
@@ -569,30 +570,29 @@
             }
             //支付宝
             if(payType == 2){
+                String smidRes = smid;// 结算资金到商户号
+
                 worldCupPayment.setAmount(new BigDecimal(num).multiply(worldCup.getCash()));
                 worldCupPayment.setUnitPrice(worldCupPayment.getAmount().divide(new BigDecimal(num)));
                 worldCupPaymentService.save(worldCupPayment);
                 List<WorldCupStore> list = worldCupStoreService.lambdaQuery().eq(WorldCupStore::getWorldCupId, worldCup.getId()).list();
 
                 if (list.isEmpty()){
-                    return payMoneyUtil.alipay("2088330203191220", "社区世界杯报名", "世界杯报名", "", worldCupPayment.getCode(),
-                        worldCupPayment.getAmount().toString(), "/base/worldCup/aliPayWorldCupCallback");
             }else{
                     Integer storeId = list.get(0).getStoreId();
                     Store store = storeClient.queryStoreById(storeId);
                     if (store.getOperatorId()==null||store.getOperatorId()==0){
-                        return payMoneyUtil.alipay("2088330203191220", "社区世界杯报名", "世界杯报名", "", worldCupPayment.getCode(),
-                                worldCupPayment.getAmount().toString(), "/base/worldCup/aliPayWorldCupCallback");
                     }else{
                         String s2 = storeClient.getmerchantNumberAliByOperatorId(store.getOperatorId());
                         System.err.println("支付宝商户号"+s2);
                         if(!StringUtils.hasLength(s2)){
                             return ResultUtil.error("运营商未配置支付宝商户号,获取支付失败!");
                         }
-                        return payMoneyUtil.alipay(s2, "社区世界杯报名", "世界杯报名", "", worldCupPayment.getCode(),
-                                worldCupPayment.getAmount().toString(), "/base/worldCup/aliPayWorldCupCallback");
+                        smidRes=s2;
                     }
                 }
+                return payMoneyUtil.alipay(smidRes, "社区世界杯报名", "世界杯报名", "", worldCupPayment.getCode(),
+                        worldCupPayment.getAmount().toString(), "/base/worldCup/aliPayWorldCupCallback");
                 }
             //玩湃币
             if(payType == 3){
@@ -756,7 +756,7 @@
      * @return
      */
     @Override
-    public ResultUtil paymentWorldCupCallback(String code, String outTradeNo) {
+    public ResultUtil paymentWorldCupCallback(String code, String outTradeNo) throws AlipayApiException {
         WorldCupPayment worldCupPayment = worldCupPaymentService.getOne(new QueryWrapper<WorldCupPayment>().eq("code", code));
         Integer worldCupId = worldCupPayment.getWorldCupId();
         worldCupPayment.setPayStatus(2);
@@ -784,6 +784,35 @@
             worldCupPaymentParticipant.setCreateTime(new Date());
             worldCupPaymentParticipantService.save(worldCupPaymentParticipant);
         }
+        if (worldCupPayment.getPayType()==2){
+            List<WorldCupStore> list = worldCupStoreService.lambdaQuery().eq(WorldCupStore::getWorldCupId, worldCupPayment.getWorldCupId()).list();
+            String resSmid = smid;
+            if (!list.isEmpty()){
+                Integer storeId = list.get(0).getStoreId();
+                Store store = storeClient.queryStoreById(storeId);
+                if (store.getOperatorId()==null||store.getOperatorId()==0){
+                }else{
+                    String s2 = storeClient.getmerchantNumberAliByOperatorId(store.getOperatorId());
+                    System.err.println("支付宝商户号"+s2);
+                    if(!StringUtils.hasLength(s2)){
+                        return ResultUtil.error("运营商未配置支付宝商户号,获取支付失败!");
+                    }
+                    resSmid=s2;
+                }
+            }
+            String finalResSmid = resSmid;
+            new Thread(new Runnable() {
+                @Override
+                public void run() {
+                    try {
+                        Thread.sleep(30000);
+                        payMoneyUtil.confirm(finalResSmid, code, outTradeNo, worldCupPayment.getAmount().toString());
+                    }catch (Exception e){
+                    }
+                }
+            }).start();
+        }
+
         return ResultUtil.success();
     }
 
diff --git a/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/util/PayMoneyUtil.java b/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/util/PayMoneyUtil.java
index e5124c8..94b57b0 100644
--- a/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/util/PayMoneyUtil.java
+++ b/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/util/PayMoneyUtil.java
@@ -2,10 +2,7 @@
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
-import com.alipay.api.AlipayApiException;
-import com.alipay.api.AlipayClient;
-import com.alipay.api.CertAlipayRequest;
-import com.alipay.api.DefaultAlipayClient;
+import com.alipay.api.*;
 import com.alipay.api.domain.*;
 import com.alipay.api.request.*;
 import com.alipay.api.response.*;
@@ -77,58 +74,6 @@
      * 支付宝支付
      */
     public ResultUtil alipay(String smid,String body, String subject, String passbackParams, String outTradeNo, String amount, String notifyUrl) {
-//        //构造client
-//        CertAlipayRequest certAlipayRequest = new CertAlipayRequest ();
-//        //设置网关地址
-//        certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do");
-//        //设置应用Id
-//        certAlipayRequest.setAppId(aliAppid);
-//        //设置应用私钥
-//        certAlipayRequest.setPrivateKey(appPrivateKey);
-//        //设置请求格式,固定值json
-//        certAlipayRequest.setFormat("json");
-//        //设置字符集
-//        certAlipayRequest.setCharset("UTF-8");
-//        //设置签名类型
-//        certAlipayRequest.setSignType("RSA2");
-//        //设置应用公钥证书路径
-//        certAlipayRequest.setCertPath(app_cert_path);
-//        //设置支付宝公钥证书路径
-//        certAlipayRequest.setAlipayPublicCertPath(alipay_cert_path);
-//        //设置支付宝根证书路径
-//        certAlipayRequest.setRootCertPath(alipay_root_cert_path);
-//        //构造client
-//        AlipayClient alipayClient = null;
-//        try {
-//            alipayClient = new DefaultAlipayClient(certAlipayRequest);
-//        } catch (AlipayApiException e) {
-//            e.printStackTrace();
-//        }
-//        //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
-//        AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest ();
-//        //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。
-//        AlipayTradeAppPayModel model = new AlipayTradeAppPayModel ();
-//        model.setBody(body);
-//        model.setSubject (subject);
-//        model.setOutTradeNo (outTradeNo);
-//        model.setTimeoutExpress ("30m" );
-//        model.setTotalAmount (amount);
-//        model.setProductCode ( "QUICK_MSECURITY_PAY" );
-//        model.setPassbackParams(passbackParams);//自定义参数
-//        request.setBizModel ( model );
-//        request.setNotifyUrl (callbackPath + notifyUrl);
-//        try  {
-//            //这里和普通的接口调用不同,使用的是sdkExecute
-//            AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
-//            Map<String, String> map = new HashMap<>();
-//            map.put("orderString", response.getBody());
-//            System.out.println(map);//就是orderString 可以直接给客户端请求,无需再做处理。
-//            return ResultUtil.success(map);
-//        }  catch (AlipayApiException e ) {
-//            e.printStackTrace();
-//        }
-
-
         //实例化客户端
         AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", aliAppid, appPrivateKey, "json", "UTF-8", alipay_public_key, "RSA2");
         //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
@@ -154,6 +99,11 @@
         SubMerchant subMerchant = new SubMerchant();
         subMerchant.setMerchantId(smid);
         model.setSubMerchant(subMerchant);
+        if (!smid.equals("2088330203191220")){
+            ExtendParams extendParams = new ExtendParams();
+            extendParams.setRoyaltyFreeze("true");
+            model.setExtendParams(extendParams);
+        }
         request.setBizModel(model);
         request.setNotifyUrl(callbackPath + notifyUrl);
 
@@ -299,53 +249,70 @@
 
     /**
      * 统一确认结算接口
-     * @param smid
      * @param code
      * @param outTradeNo
      * @param amount
      * @return
      */
-    public ResultUtil confirm(String smid,String code, String outTradeNo, String amount) {
-        AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",
-                aliAppid,
-                appPrivateKey,
-                "json",
-                "GBK",
-                alipay_public_key,
-                "RSA2");
+    public ResultUtil confirm(String smid1,String code, String outTradeNo, String amount) throws AlipayApiException {
+        // 初始化SDK
+        AlipayClient alipayClient = new DefaultAlipayClient(getAlipayConfig());
+
+        // 构造请求参数以调用接口
         AlipayTradeSettleConfirmRequest request = new AlipayTradeSettleConfirmRequest();
-        request.setBizContent("{" +
-                "  \"out_request_no\":\""+code+"\"," +
-                "  \"trade_no\":\""+outTradeNo+"\"," +
-                "  \"settle_info\":{" +
-                "    \"settle_detail_infos\":[" +
-                "      {" +
-                "        \"trans_in_type\":\"defaultSettle\"," +
-                "        \"settle_entity_id\":\""+smid+"\"," +
-                "        \"settle_entity_type\":\"SecondMerchant\"," +
-                "        \"amount\":"+amount+"," +
-                "      }" +
-                "    ]" +
-                "  }," +
-                "  \"extend_params\":{" +
-                "    \"royalty_freeze\":\"false\"" +
-                "  }" +
-                "}");
-        AlipayTradeSettleConfirmResponse response = null;
-        try {
-            response = alipayClient.execute(request);
-        } catch (AlipayApiException e) {
-            e.printStackTrace();
-        }
-        if(response.isSuccess()){
+        AlipayTradeSettleConfirmModel model = new AlipayTradeSettleConfirmModel();
+
+        // 设置确认结算请求流水号
+        model.setOutRequestNo(code);
+
+        // 设置支付宝交易号
+        model.setTradeNo(outTradeNo);
+
+        // 设置描述结算信息
+        SettleInfo settleInfo = new SettleInfo();
+        List<SettleDetailInfo> settleDetailInfos = new ArrayList<SettleDetailInfo>();
+        SettleDetailInfo settleDetailInfos0 = new SettleDetailInfo();
+        settleDetailInfos0.setAmount(amount);
+        settleDetailInfos0.setTransIn(smid1);
+        settleDetailInfos0.setSettleEntityType("SecondMerchant");
+        settleDetailInfos0.setSettleEntityId(smid1);
+        settleDetailInfos0.setTransInType("defaultSettle");
+        settleDetailInfos.add(settleDetailInfos0);
+        settleInfo.setSettleDetailInfos(settleDetailInfos);
+        model.setSettleInfo(settleInfo);
+        request.setBizModel(model);
+        System.err.println("结算金额"+amount);
+        // 第三方代调用模式下请设置app_auth_token
+        // request.putOtherTextParam("app_auth_token", "<-- 请填写应用授权令牌 -->");
+
+        AlipayTradeSettleConfirmResponse response = alipayClient.execute(request);
+        System.out.println("返回体"+response.getBody());
+
+
+        if (response.isSuccess()) {
             System.out.println("调用成功");
-            return ResultUtil.success();
         } else {
             System.out.println("调用失败");
-            return ResultUtil.error("出现问题啦");
+            // sdk版本是"4.38.0.ALL"及以上,可以参考下面的示例获取诊断链接
+            // String diagnosisUrl = DiagnosisUtils.getDiagnosisUrl(response);
+            // System.out.println(diagnosisUrl);
         }
+        return ResultUtil.success(response.getBody());
     }
 
+    private static AlipayConfig getAlipayConfig() {
+        String privateKey  = "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCi5i9nW/hGLJ3A06cZxTQdviFC7THpdSihoTYGLr9q006hu0V26ecBMY/o4w5bvIX0Ok/yofmZsVcCJpAPvbXL/uqVrIjnRRxXiaeBFThlxoBUTdunvbUSDYfzlEhJr5NvUKI6H6lz2niXlQGx4qy8Hau4ccWit9kM8jwUvsBVQoFgJA+xrjMvooA7YLopQtpOD+UJr5thApTSf1xrnr1W12yolTLEH15JmNV372cqXrYUuqnY0QsaPtxeqJUGAOcGdVLllQ7easEznP8DFBvDdHATcmp2SHNQDUEWN6MCVPbMgY06NQVqAXxqjTAYSVh+6TRu6bofPmpYC3TZB003AgMBAAECggEBAJAcR2+PA3NBYUYHeFrqBRMS8uX8ZR19kjZ7IgoSLTFaQsP9opRylPSPXhrPVBKAE5leRQAHn4MCSlESwHvMfxo7KFjFTFAc6dffZZpipYQUOc9bGampwJh58/3e/pyBgVMG6J23CPf/HJQtNFSkjd/V9+ayb/9l2dUEL3bC0fAZ/dbx8HsxdLw8wn3fLlWLj68hOMqa2deCZe3JdSVsPbeWqkh56FFsMLug0Nd+Ar4TgRl9/jnhXF0JWiD0LmPUYLhboY7EfUBzN4w1iYbDi1P+3zvoOYsiVKAXox9GMhQ2VzOO2UcSTuizSza2e98mGpabl/GpKmCz+RDFjtkX6eECgYEA2MyCij65eO3aGIm3FUe93DULRBYTfX8qJQSJq2WOWA3mmQlEW6L3O2B5/lG2h+8WmN6iLEs9eHpgycGYp7vAqgrANEn16ACVcuyx0scFtrZfZ+kmHMzFfiUWxJjVYk/6YngsGVBLdw6ueM42C8TTP67X9tU5TdVGoGWuqEj4W98CgYEAwFqwprXOch5Pqk/RPbb49r0Ou03K/UbciWnWWKzUhFFNS8MdlQPoDvQZbMwHLeWsa2VhaKITK3x5biLQb3U+0GLOn6lTvEyrEUH+ucREyLgVYTRAvwBPtnvlrzpyxPk2HnslQjju8WrvvLLBMKWUjlTrTOzhaHT21gz3pHMiOakCgYEAhLmfaXdBITGshb054sNLDtdCkGpbgEcrzAHdLps769iGxkYQHXHFngpQZUwtTUcoNGqIKknd1jZFrv7gsD+XkgKG7PwimehRlkwmCX5ilxtLiVgJRzRt6+5U5AMVD90a0tHzXYP0z2yjj73fBJF5KtGl0a10KZxaYrQdm1UhB00CgYBZZgzx/k9rtHC8LAqIj1CYhHejT92G53c6Gkl3vyOqN4sgKhfGmSEySfrDGPRBPZxr8ZtbIPCd5mUdberH0osWGMYFaJI1UsCy7aQwvGpniz7MhZeN7dweaOjwDs8mgtjHQ96mL4XGCDhR0BZ/wIURvZ/6iaGdhbbu9unlsWj3uQKBgQCmZYdsbbZkd3ev6f8rwyvMz+DrCQyYpY44cegBYuJgrZiQnL2fJioeN7ixX0UM48SfwsZEIrzshP/LGAwnc2MdjxKUl4jLN8SEe0NAjXOnz9Zaw740+aOmLpXcLWdP4uM2gIhWsvW1tEkQZCXmm7c9s/RsU8Pmzv+YL3+fSijOzA==";
+        String alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmu8n/4yTHWbn7VOrNc9OsLtDL1bEQ8gC1dHkj8Wy5z0mkaOsjJRIG/28ze12M0V8jdCKuuDr5Z1OPKiqf+XO3ypguEh+mYUVMBM/cZodDFQfTY1TKLWjvQCuaqlA+QUTCK6f7T7stsgyQ1o9Jj0rXZDz6PM4QHSTzjrLIBaeqM5WIBvH+fy/X+QG5Utd+/UT0kc0JyvuKhZ65yVUd/C9VcwJJAPliRsAQNrqYterwAJ9zvw9tF11wj9W0XgJ8Ccu4x3gR1vrlLRJJo/OA97RmxPQ+5hSacWQZCUd1dwiBq+YCrKVHGTj14izRHXrLc0yBlRXo7tBOIqcy3IsvKVthQIDAQAB";
+        AlipayConfig alipayConfig = new AlipayConfig();
+        alipayConfig.setServerUrl("https://openapi.alipay.com/gateway.do");
+        alipayConfig.setAppId("2021004105665036");
+        alipayConfig.setPrivateKey(privateKey);
+        alipayConfig.setFormat("json");
+        alipayConfig.setAlipayPublicKey(alipayPublicKey);
+        alipayConfig.setCharset("UTF-8");
+        alipayConfig.setSignType("RSA2");
+        return alipayConfig;
+    }
     /**
      * 微信统一下单
      *
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java b/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java
index 88ed038..972d610 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java
@@ -321,6 +321,7 @@
         }
 
         if (paymentCompetitionVo.getPayType() == 2) {//支付宝
+            String resSmid=smid;
             // 判断当前赛事属于哪个运营商
             Competition byId = competitionService.getById(paymentCompetitionVo.getId());
             String[] split = byId.getStoreId().split(",");
@@ -412,82 +413,70 @@
      * @throws Exception
      */
     public ResultUtil aliPaymentCompetition(Integer operatorId,String smid,String code, BigDecimal money) throws Exception {
+        String resSmid=smid;
         ResultUtil alipay = payMoneyUtil.alipay
                 (smid,"报名赛事", "", "", code, money.toString(), "/base/competition/aliPaymentCompetitionCallback");
-//        if (alipay.getCode() == 200) {
-//            new Thread(new Runnable() {
-//                @Override
-//                public void run() {
-//                    try {
-//                        int num = 1;
-//                        int wait = 0;
-//                        while (num <= 10) {
-//                            int min = 5000;
-//                            wait += (min * num);
-//                            Thread.sleep(wait);
-//                            PaymentCompetition paymentCompetition = paymentCompetitionService.getOne(new QueryWrapper<PaymentCompetition>().eq("code", code).eq("payType", 2));
-//                            if (paymentCompetition.getPayStatus() == 2) {
-//                                break;
-//                            }
-//                            AlipayTradeQueryResponse resultUtil = payMoneyUtil.queryALIOrder(code);
-//                            if (resultUtil.getCode().equals("10000") && paymentCompetition.getPayStatus() == 1) {
-//                                /**
-//                                 * WAIT_BUYER_PAY(交易创建,等待买家付款)、
-//                                 * TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、
-//                                 * TRADE_SUCCESS(交易支付成功)、
-//                                 * TRADE_FINISHED(交易结束,不可退款)
-//                                 */
-////                                Map<String, String> data1 = resultUtil.getData();
-////                                String s = data1.get("tradeStatus");
-////                                String tradeNo = data1.get("tradeNo");
-//                                String tradeNo = resultUtil.getTradeNo();
-//                                String s = resultUtil.getTradeStatus();
-//
-//                                if ("TRADE_CLOSED".equals(s) || "TRADE_FINISHED".equals(s) || num == 10) {
-//                                    paymentCompetition.setAppUserId(null);
-//                                    paymentCompetition.setState(3);
-//                                    userCompetitionService.remove(new QueryWrapper<UserCompetition>().eq("paymentCompetitionId", paymentCompetition.getId()));
-//
-//                                    break;
-//                                }
-//                                if ("TRADE_SUCCESS".equals(s)) {
-//                                    paymentCompetition.setAppUserId(null);
-//                                    paymentCompetition.setPayStatus(2);
-//                                    paymentCompetition.setPayTime(new Date());
-//                                    paymentCompetition.setPayOrderNo(tradeNo);
-//                                    paymentCompetitionService.updateById(paymentCompetition);
-//
-//                                    Competition competition = cttService.getById(paymentCompetition.getCompetitionId());
-//                                    competition.setApplicantsNumber(competition.getApplicantsNumber() + 1);
-//                                    cttService.updateById(competition);
-//
-//                                    // 结算资金到商户账号
-//                                    payMoneyUtil.confirm(smid,code,tradeNo,money.toString());
-//                                    if (operatorId == null || operatorId == 0){
-//                                        // 属于平台的赛事 资金不做冻结 不做分账处理
-//                                        payMoneyUtil.confirm1(smid,code,tradeNo,money.toString());
-//                                    }else{
-//                                        // 资金冻结
-//                                        payMoneyUtil.confirm(smid,code,tradeNo,money.toString());
-//                                        // 分账处理
-//                                        extracted(operatorId, money, tradeNo);
-//                                    }
-//                                    // 结算资金到商户账号
-//                                    //分账
-////                                    moneyOut(tradeNo, tradeNo,code);
-//                                    break;
-//                                }
-//                                if ("WAIT_BUYER_PAY".equals(s)) {
-//                                    num++;
-//                                }
-//                            }
-//                        }
-//                    } catch (Exception e) {
-//                        e.printStackTrace();
-//                    }
-//                }
-//            }).start();
-//        }
+        if (alipay.getCode() == 200) {
+            new Thread(new Runnable() {
+                @Override
+                public void run() {
+                    try {
+                        int num = 1;
+                        int wait = 0;
+                        while (num <= 10) {
+                            int min = 5000;
+                            wait += (min * num);
+                            Thread.sleep(wait);
+                            PaymentCompetition paymentCompetition = paymentCompetitionService.getOne(new QueryWrapper<PaymentCompetition>().eq("code", code).eq("payType", 2));
+                            if (paymentCompetition.getPayStatus() == 2) {
+                                break;
+                            }
+                            AlipayTradeQueryResponse resultUtil = payMoneyUtil.queryALIOrder(code);
+                            if (resultUtil.getCode().equals("10000") && paymentCompetition.getPayStatus() == 1) {
+                                /**
+                                 * WAIT_BUYER_PAY(交易创建,等待买家付款)、
+                                 * TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、
+                                 * TRADE_SUCCESS(交易支付成功)、
+                                 * TRADE_FINISHED(交易结束,不可退款)
+                                 */
+//                                Map<String, String> data1 = resultUtil.getData();
+//                                String s = data1.get("tradeStatus");
+//                                String tradeNo = data1.get("tradeNo");
+                                String tradeNo = resultUtil.getTradeNo();
+                                String s = resultUtil.getTradeStatus();
+
+                                if ("TRADE_CLOSED".equals(s) || "TRADE_FINISHED".equals(s) || num == 10) {
+                                    paymentCompetition.setAppUserId(null);
+                                    paymentCompetition.setState(3);
+                                    userCompetitionService.remove(new QueryWrapper<UserCompetition>().eq("paymentCompetitionId", paymentCompetition.getId()));
+
+                                    break;
+                                }
+                                if ("TRADE_SUCCESS".equals(s)) {
+                                    paymentCompetition.setAppUserId(null);
+                                    paymentCompetition.setPayStatus(2);
+                                    paymentCompetition.setPayTime(new Date());
+                                    paymentCompetition.setPayOrderNo(tradeNo);
+                                    paymentCompetitionService.updateById(paymentCompetition);
+                                    Competition competition = cttService.getById(paymentCompetition.getCompetitionId());
+                                    competition.setApplicantsNumber(competition.getApplicantsNumber() + 1);
+                                    cttService.updateById(competition);
+                                    // 结算资金到商户账号
+                                    Thread.sleep(30000);
+                                    payMoneyUtil.confirm(resSmid,code,tradeNo,money.toString());
+                                    break;
+                                }
+                                if ("WAIT_BUYER_PAY".equals(s)) {
+                                    num++;
+                                }
+                            }
+                        }
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+                }
+            }).start();
+        }
         return alipay;
     }
     private void extracted(Integer operatorId, BigDecimal money, String tradeNo) throws Exception {
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/util/PayMoneyUtil.java b/cloud-server-competition/src/main/java/com/dsh/competition/util/PayMoneyUtil.java
index 7cf9fc2..1937266 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/util/PayMoneyUtil.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/util/PayMoneyUtil.java
@@ -3,10 +3,7 @@
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-import com.alipay.api.AlipayApiException;
-import com.alipay.api.AlipayClient;
-import com.alipay.api.CertAlipayRequest;
-import com.alipay.api.DefaultAlipayClient;
+import com.alipay.api.*;
 import com.alipay.api.domain.*;
 import com.alipay.api.request.*;
 import com.alipay.api.response.*;
@@ -77,58 +74,6 @@
      * 支付宝支付
      */
     public ResultUtil alipay(String smid,String body, String subject, String passbackParams, String outTradeNo, String amount, String notifyUrl) {
-//        //构造client
-//        CertAlipayRequest certAlipayRequest = new CertAlipayRequest ();
-//        //设置网关地址
-//        certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do");
-//        //设置应用Id
-//        certAlipayRequest.setAppId(aliAppid);
-//        //设置应用私钥
-//        certAlipayRequest.setPrivateKey(appPrivateKey);
-//        //设置请求格式,固定值json
-//        certAlipayRequest.setFormat("json");
-//        //设置字符集
-//        certAlipayRequest.setCharset("UTF-8");
-//        //设置签名类型
-//        certAlipayRequest.setSignType("RSA2");
-//        //设置应用公钥证书路径
-//        certAlipayRequest.setCertPath(app_cert_path);
-//        //设置支付宝公钥证书路径
-//        certAlipayRequest.setAlipayPublicCertPath(alipay_cert_path);
-//        //设置支付宝根证书路径
-//        certAlipayRequest.setRootCertPath(alipay_root_cert_path);
-//        //构造client
-//        AlipayClient alipayClient = null;
-//        try {
-//            alipayClient = new DefaultAlipayClient(certAlipayRequest);
-//        } catch (AlipayApiException e) {
-//            e.printStackTrace();
-//        }
-//        //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
-//        AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest ();
-//        //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。
-//        AlipayTradeAppPayModel model = new AlipayTradeAppPayModel ();
-//        model.setBody(body);
-//        model.setSubject (subject);
-//        model.setOutTradeNo (outTradeNo);
-//        model.setTimeoutExpress ("30m" );
-//        model.setTotalAmount (amount);
-//        model.setProductCode ( "QUICK_MSECURITY_PAY" );
-//        model.setPassbackParams(passbackParams);//自定义参数
-//        request.setBizModel ( model );
-//        request.setNotifyUrl (callbackPath + notifyUrl);
-//        try  {
-//            //这里和普通的接口调用不同,使用的是sdkExecute
-//            AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
-//            Map<String, String> map = new HashMap<>();
-//            map.put("orderString", response.getBody());
-//            System.out.println(map);//就是orderString 可以直接给客户端请求,无需再做处理。
-//            return ResultUtil.success(map);
-//        }  catch (AlipayApiException e ) {
-//            e.printStackTrace();
-//        }
-
-
         //实例化客户端
         AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", aliAppid, appPrivateKey, "json", "UTF-8", alipay_public_key, "RSA2");
         //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
@@ -154,7 +99,11 @@
         SubMerchant subMerchant = new SubMerchant();
         subMerchant.setMerchantId(smid);
         model.setSubMerchant(subMerchant);
-
+        if (!smid.equals("2088330203191220")){
+            ExtendParams extendParams = new ExtendParams();
+            extendParams.setRoyaltyFreeze("true");
+            model.setExtendParams(extendParams);
+        }
         request.setBizModel(model);
         request.setNotifyUrl(callbackPath + notifyUrl);
 
@@ -306,45 +255,63 @@
      * @param amount
      * @return
      */
-    public ResultUtil confirm(String smid,String code, String outTradeNo, String amount) {
-        AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",
-                aliAppid,
-                appPrivateKey,
-                "json",
-                "GBK",
-                alipay_public_key,
-                "RSA2");
+    public ResultUtil confirm(String smid1,String code, String outTradeNo, String amount) throws AlipayApiException {
+        // 初始化SDK
+        AlipayClient alipayClient = new DefaultAlipayClient(getAlipayConfig());
+
+        // 构造请求参数以调用接口
         AlipayTradeSettleConfirmRequest request = new AlipayTradeSettleConfirmRequest();
-        request.setBizContent("{" +
-                "  \"out_request_no\":\""+code+"\"," +
-                "  \"trade_no\":\""+outTradeNo+"\"," +
-                "  \"settle_info\":{" +
-                "    \"settle_detail_infos\":[" +
-                "      {" +
-                "        \"trans_in_type\":\"defaultSettle\"," +
-                "        \"settle_entity_id\":\""+smid+"\"," +
-                "        \"settle_entity_type\":\"SecondMerchant\"," +
-                "        \"amount\":"+amount+"," +
-                "      }" +
-                "    ]" +
-                "  }," +
-                "  \"extend_params\":{" +
-                "    \"royalty_freeze\":\"true\"" +
-                "  }" +
-                "}");
-        AlipayTradeSettleConfirmResponse response = null;
-        try {
-            response = alipayClient.execute(request);
-        } catch (AlipayApiException e) {
-            e.printStackTrace();
-        }
-        if(response.isSuccess()){
+        AlipayTradeSettleConfirmModel model = new AlipayTradeSettleConfirmModel();
+
+        // 设置确认结算请求流水号
+        model.setOutRequestNo(code);
+
+        // 设置支付宝交易号
+        model.setTradeNo(outTradeNo);
+
+        // 设置描述结算信息
+        SettleInfo settleInfo = new SettleInfo();
+        List<SettleDetailInfo> settleDetailInfos = new ArrayList<SettleDetailInfo>();
+        SettleDetailInfo settleDetailInfos0 = new SettleDetailInfo();
+        settleDetailInfos0.setAmount(amount);
+        settleDetailInfos0.setTransIn(smid1);
+        settleDetailInfos0.setSettleEntityType("SecondMerchant");
+        settleDetailInfos0.setSettleEntityId(smid1);
+        settleDetailInfos0.setTransInType("defaultSettle");
+        settleDetailInfos.add(settleDetailInfos0);
+        settleInfo.setSettleDetailInfos(settleDetailInfos);
+        model.setSettleInfo(settleInfo);
+        request.setBizModel(model);
+        System.err.println("结算金额"+amount);
+        // 第三方代调用模式下请设置app_auth_token
+        // request.putOtherTextParam("app_auth_token", "<-- 请填写应用授权令牌 -->");
+
+        AlipayTradeSettleConfirmResponse response = alipayClient.execute(request);
+        System.out.println("返回体"+response.getBody());
+
+
+        if (response.isSuccess()) {
             System.out.println("调用成功");
-            return ResultUtil.success();
         } else {
             System.out.println("调用失败");
-            return ResultUtil.error("出现问题啦");
+            // sdk版本是"4.38.0.ALL"及以上,可以参考下面的示例获取诊断链接
+            // String diagnosisUrl = DiagnosisUtils.getDiagnosisUrl(response);
+            // System.out.println(diagnosisUrl);
         }
+        return ResultUtil.success(response.getBody());
+    }
+    private static AlipayConfig getAlipayConfig() {
+        String privateKey  = "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCi5i9nW/hGLJ3A06cZxTQdviFC7THpdSihoTYGLr9q006hu0V26ecBMY/o4w5bvIX0Ok/yofmZsVcCJpAPvbXL/uqVrIjnRRxXiaeBFThlxoBUTdunvbUSDYfzlEhJr5NvUKI6H6lz2niXlQGx4qy8Hau4ccWit9kM8jwUvsBVQoFgJA+xrjMvooA7YLopQtpOD+UJr5thApTSf1xrnr1W12yolTLEH15JmNV372cqXrYUuqnY0QsaPtxeqJUGAOcGdVLllQ7easEznP8DFBvDdHATcmp2SHNQDUEWN6MCVPbMgY06NQVqAXxqjTAYSVh+6TRu6bofPmpYC3TZB003AgMBAAECggEBAJAcR2+PA3NBYUYHeFrqBRMS8uX8ZR19kjZ7IgoSLTFaQsP9opRylPSPXhrPVBKAE5leRQAHn4MCSlESwHvMfxo7KFjFTFAc6dffZZpipYQUOc9bGampwJh58/3e/pyBgVMG6J23CPf/HJQtNFSkjd/V9+ayb/9l2dUEL3bC0fAZ/dbx8HsxdLw8wn3fLlWLj68hOMqa2deCZe3JdSVsPbeWqkh56FFsMLug0Nd+Ar4TgRl9/jnhXF0JWiD0LmPUYLhboY7EfUBzN4w1iYbDi1P+3zvoOYsiVKAXox9GMhQ2VzOO2UcSTuizSza2e98mGpabl/GpKmCz+RDFjtkX6eECgYEA2MyCij65eO3aGIm3FUe93DULRBYTfX8qJQSJq2WOWA3mmQlEW6L3O2B5/lG2h+8WmN6iLEs9eHpgycGYp7vAqgrANEn16ACVcuyx0scFtrZfZ+kmHMzFfiUWxJjVYk/6YngsGVBLdw6ueM42C8TTP67X9tU5TdVGoGWuqEj4W98CgYEAwFqwprXOch5Pqk/RPbb49r0Ou03K/UbciWnWWKzUhFFNS8MdlQPoDvQZbMwHLeWsa2VhaKITK3x5biLQb3U+0GLOn6lTvEyrEUH+ucREyLgVYTRAvwBPtnvlrzpyxPk2HnslQjju8WrvvLLBMKWUjlTrTOzhaHT21gz3pHMiOakCgYEAhLmfaXdBITGshb054sNLDtdCkGpbgEcrzAHdLps769iGxkYQHXHFngpQZUwtTUcoNGqIKknd1jZFrv7gsD+XkgKG7PwimehRlkwmCX5ilxtLiVgJRzRt6+5U5AMVD90a0tHzXYP0z2yjj73fBJF5KtGl0a10KZxaYrQdm1UhB00CgYBZZgzx/k9rtHC8LAqIj1CYhHejT92G53c6Gkl3vyOqN4sgKhfGmSEySfrDGPRBPZxr8ZtbIPCd5mUdberH0osWGMYFaJI1UsCy7aQwvGpniz7MhZeN7dweaOjwDs8mgtjHQ96mL4XGCDhR0BZ/wIURvZ/6iaGdhbbu9unlsWj3uQKBgQCmZYdsbbZkd3ev6f8rwyvMz+DrCQyYpY44cegBYuJgrZiQnL2fJioeN7ixX0UM48SfwsZEIrzshP/LGAwnc2MdjxKUl4jLN8SEe0NAjXOnz9Zaw740+aOmLpXcLWdP4uM2gIhWsvW1tEkQZCXmm7c9s/RsU8Pmzv+YL3+fSijOzA==";
+        String alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmu8n/4yTHWbn7VOrNc9OsLtDL1bEQ8gC1dHkj8Wy5z0mkaOsjJRIG/28ze12M0V8jdCKuuDr5Z1OPKiqf+XO3ypguEh+mYUVMBM/cZodDFQfTY1TKLWjvQCuaqlA+QUTCK6f7T7stsgyQ1o9Jj0rXZDz6PM4QHSTzjrLIBaeqM5WIBvH+fy/X+QG5Utd+/UT0kc0JyvuKhZ65yVUd/C9VcwJJAPliRsAQNrqYterwAJ9zvw9tF11wj9W0XgJ8Ccu4x3gR1vrlLRJJo/OA97RmxPQ+5hSacWQZCUd1dwiBq+YCrKVHGTj14izRHXrLc0yBlRXo7tBOIqcy3IsvKVthQIDAQAB";
+        AlipayConfig alipayConfig = new AlipayConfig();
+        alipayConfig.setServerUrl("https://openapi.alipay.com/gateway.do");
+        alipayConfig.setAppId("2021004105665036");
+        alipayConfig.setPrivateKey(privateKey);
+        alipayConfig.setFormat("json");
+        alipayConfig.setAlipayPublicKey(alipayPublicKey);
+        alipayConfig.setCharset("UTF-8");
+        alipayConfig.setSignType("RSA2");
+        return alipayConfig;
     }
     // 属于平台的运营商 因为无需分账不冻结资金
     public ResultUtil confirm1(String smid,String code, String outTradeNo, String amount) {
diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java
index 40cbbff..b6210d4 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java
@@ -131,11 +131,6 @@
     private StudentHonorClient studentHonorClient;
 
 
-
-
-
-
-
     @Override
     public List<CoursePackagePaymentVO> listAll(CoursePackagePaymentQuery query) {
         return cpConfigMapper.listAll(query);
@@ -168,20 +163,20 @@
         String cityCode = studentQeryDto.getCityCode();
         //获取用户数据
         List<Integer> appUserIds = null;
-        if(ToolUtil.isNotEmpty(cityCode)){
+        if (ToolUtil.isNotEmpty(cityCode)) {
             List<AppUser> appUsers = appuClient.queryAppUserByCityCode(cityCode);
-            if(appUsers.size() > 0){
+            if (appUsers.size() > 0) {
                 appUserIds = appUsers.stream().map(AppUser::getId).collect(Collectors.toList());
             }
         }
         QueryWrapper<CoursePackageStudent> status = new QueryWrapper<CoursePackageStudent>().eq("payStatus", 2).eq("status", 1);
-        if(null != appUserIds){
+        if (null != appUserIds) {
             status.in("appUserId", appUserIds);
         }
-        List<Map<String, Object>> maps = this.baseMapper.getStudentTotal(appUserIds, studentQeryDto.getStart(), studentQeryDto.getEnd(),studentQeryDto.getCoursePackageIds());
+        List<Map<String, Object>> maps = this.baseMapper.getStudentTotal(appUserIds, studentQeryDto.getStart(), studentQeryDto.getEnd(), studentQeryDto.getCoursePackageIds());
         List<Map<String, Object>> list = new ArrayList<>();
         for (Map<String, Object> objectMap : maps) {
-            if(null == objectMap.get("studentId")){
+            if (null == objectMap.get("studentId")) {
                 continue;
             }
             Integer studentId = Integer.valueOf(objectMap.get("studentId").toString());
@@ -190,12 +185,12 @@
             Integer number = Integer.valueOf(objectMap.get("number").toString());
             Map<String, Object> map = new HashMap<>();
             Student student = studentClient.queryStudentById(studentId);
-            if(null == student){
+            if (null == student) {
                 continue;
             }
             map.put("studentName", student.getName());
             AppUser appUser = appuClient.queryAppUser(appUserId);
-            if(null == appUser){
+            if (null == appUser) {
                 continue;
             }
             map.put("province", appUser.getProvince());
@@ -210,7 +205,7 @@
                     .eq("coursePackageId", coursePackageId).eq("payStatus", 2).eq("state", 1)
                     .gt("cashPayment", 0).last(" and studentIds like '%" + studentId + "%' order by insertTime desc limit 0, 1"));
             Double cashPayment = 0D;
-            if(null != coursePackageOrder && coursePackageOrder.getClassHours() > 0){
+            if (null != coursePackageOrder && coursePackageOrder.getClassHours() > 0) {
                 cashPayment = coursePackageOrder.getCashPayment().divide(new BigDecimal(coursePackageOrder.getClassHours()), new MathContext(2, RoundingMode.HALF_EVEN)).doubleValue();
             }
             map.put("cashPayment", cashPayment * number);
@@ -246,7 +241,7 @@
             for (CoursePackageOrder coursePackageOrder : list) {
                 p = p.add(coursePackageOrder.getCashPayment());
             }
-            if(list.size() > 0){
+            if (list.size() > 0) {
                 cashPayment = p.divide(new BigDecimal(list.size()), new MathContext(2, RoundingMode.HALF_EVEN)).doubleValue();
             }
             map.put("cashPayment", cashPayment * number);
@@ -532,14 +527,12 @@
     private ALiSendSms aLiSendSms;
 
 
-
-
     @Override
     public CourseDetailsResponse queryRegisteredCourseDetails(Long coursePayId, Integer appUserId, String lon, String lat) {
         AppUser appUser = appuClient.queryAppUser(appUserId);
         CourseDetailsResponse response = new CourseDetailsResponse();
         CoursePackageOrder coursePackageOrder = coursePackageOrderService.getById(coursePayId);
-        if (coursePackageOrder==null){
+        if (coursePackageOrder == null) {
 //             student = coursePackageStudentService.getById(coursePayId);
             CoursePackageOrderStudent student = coursePackageOrderStudentService.getById(coursePayId);
 
@@ -599,7 +592,7 @@
             response.setIntroduceDrawing(coursePackage.getIntroduceDrawing());
 
             Integer payType = coursePackageOrder.getPayType();
-            if(null == payType){
+            if (null == payType) {
                 CoursePackagePaymentConfig config = coursePackagePaymentConfigService.list(new QueryWrapper<CoursePackagePaymentConfig>().eq("coursePackageId", coursePackage.getId()).orderByAsc("classHours")).get(0);
                 if (ToolUtil.isNotEmpty(config.getCashPayment()) && config.getCashPayment() > 0 && ToolUtil.isNotEmpty(config.getPlayPaiCoin()) && config.getPlayPaiCoin() > 0) {
                     payType = 3;
@@ -640,7 +633,7 @@
                     response.setVipAmount(discountMember);
                     break;
                 case 2:
-                    if (playPaiCoin!=null) {
+                    if (playPaiCoin != null) {
                         response.setWpGold(playPaiCoin);
                     }
                     break;
@@ -799,10 +792,10 @@
 
     @Override
     public ResultUtil ContinuationOrpaymentCourse(Integer userId, ClasspaymentRequest request) {
-        System.err.println("请求参数"+request);
+        System.err.println("请求参数" + request);
         AppUser appUser = appuClient.queryAppUser(userId);
         CoursePackageOrder coursePackageOrder = coursePackageOrderService.getById(request.getCoursePayId());
-        System.err.println("上次支付记录"+coursePackageOrder);
+        System.err.println("上次支付记录" + coursePackageOrder);
         String code = "";
         BigDecimal money = BigDecimal.valueOf(request.getCash());
         Integer wpGold = request.getPlayPaiCoin();
@@ -818,13 +811,13 @@
             CoursePackagePaymentConfig paymentConfig = cpConfigMapper.selectOne(new QueryWrapper<CoursePackagePaymentConfig>()
                     .eq("coursePackageId", request.getLessonId())
                     .eq("classHours", request.getCourseHoursNum()));
-            System.err.println("价格配置"+paymentConfig);
+            System.err.println("价格配置" + paymentConfig);
             TCoursePackageDiscount coursePackageDiscount = tcpdMapper.selectOne(new QueryWrapper<TCoursePackageDiscount>()
                     .eq("coursePackageId", request.getLessonId())
                     .eq("type", 2)
                     .eq("auditStatus", 1)
                     .eq("coursePackagePaymentConfigId", paymentConfig.getCoursePackageId()));
-            System.err.println("折扣"+coursePackageDiscount);
+            System.err.println("折扣" + coursePackageDiscount);
             if (ToolUtil.isNotEmpty(coursePackageDiscount)) {
                 String content = coursePackageDiscount.getContent();
                 JSONObject jsonObject = JSON.parseObject(content);
@@ -853,7 +846,7 @@
             newPayment.setPayType(request.getPayType());
             newPayment.setState(1);
             newPayment.setInsertTime(new Date());
-            if (request.getCash()!=null && request.getCash()!=0){
+            if (request.getCash() != null && request.getCash() != 0) {
                 newPayment.setCashPayment(BigDecimal.valueOf(request.getCash()));
             }
             newPayment.setPlayPaiCoin(request.getPlayPaiCoin());
@@ -867,9 +860,9 @@
             case 1:
                 if (request.getUseConpon() == 1) {
                     Integer coupon1 = client.queryUserCouponById(request.getConponId());
-                    System.err.println("优惠券id"+coupon1);
+                    System.err.println("优惠券id" + coupon1);
                     Coupon coupon = client.queryCouponById(coupon1);
-                    System.err.println("优惠券信息"+coupon);
+                    System.err.println("优惠券信息" + coupon);
 //                    if (coupon.getType() == 1) {
 //                        Map<String, Object> couponRules = client.getCouponRules(coupon.getId());
 //                        Double conditionalAmount = (Double) couponRules.get("conditionalAmount");
@@ -886,7 +879,7 @@
 //                    }
                 }
                 try {
-                    return WeChatPayment(code, money,request.getLessonId());
+                    return WeChatPayment(code, money, request.getLessonId());
                 } catch (Exception e) {
                     return ResultUtil.runErr();
                 }
@@ -920,32 +913,33 @@
         return ResultUtil.success();
     }
 
-    public ResultUtil WeChatPayment(String code, BigDecimal request,Integer coursePackageId) throws Exception {
-        System.err.println("code-------------"+code);
-        System.err.println("request---------------"+request);
-        System.err.println("coursePackageId-------------"+coursePackageId);
+    public ResultUtil WeChatPayment(String code, BigDecimal request, Integer coursePackageId) throws Exception {
+        System.err.println("code-------------" + code);
+        System.err.println("request---------------" + request);
+        System.err.println("coursePackageId-------------" + coursePackageId);
         TCoursePackage byId = coursePackageService.getById(coursePackageId);
-        System.err.println("课包"+coursePackageId);
+        System.err.println("课包" + coursePackageId);
         Integer storeId = byId.getStoreId();
         Store store = storeClient.queryStoreById(storeId);
-        System.err.println("门店查询"+store);
-        if (store.getOperatorId()==null || store.getOperatorId()==0){
-                    ResultUtil weixinpay = payMoneyUtil.weixinpay("课包续费", "", code, request.toString(),
-                "/base/coursePackage/wechatRegisteredCoursesCallback", "APP", "");
+        System.err.println("门店查询" + store);
+        if (store.getOperatorId() == null || store.getOperatorId() == 0) {
+            ResultUtil weixinpay = payMoneyUtil.weixinpay("课包续费", "", code, request.toString(),
+                    "/base/coursePackage/wechatRegisteredCoursesCallback", "APP", "");
             return weixinpay;
-        }else{
+        } else {
             String s = storeClient.getmerchantNumberByOperatorId(store.getOperatorId());
-            System.err.println("微信商户号"+s);
-            if(!StringUtils.hasLength(s)){
+            System.err.println("微信商户号" + s);
+            if (!StringUtils.hasLength(s)) {
                 return ResultUtil.error("运营商未配置微信商户号,获取支付失败!");
             }
-            return payMoneyUtil.weixinpayV3(s,"课包续费",code,
-                    "/base/coursePackage/wechatRegisteredCoursesCallback1",request.toString(),"");
+            return payMoneyUtil.weixinpayV3(s, "课包续费", code,
+                    "/base/coursePackage/wechatRegisteredCoursesCallback1", request.toString(), "");
         }
     }
+
     private String smid = "2088330203191220";//平台支付宝商户号
 
-//    public static void main(String[] args) {
+    //    public static void main(String[] args) {
 //        BigDecimal bigDecimal = new BigDecimal("100");
 //
 //
@@ -968,88 +962,74 @@
         Integer coursePackageId = coursePackagePayment.getCoursePackageId();
         TCoursePackage byId = coursePackageService.getById(coursePackageId);
         Store store = storeClient.queryStoreById(byId.getStoreId());
-        String smid1="";
-        if (store.getOperatorId() == null ){
+        String smid1 = "";
+        if (store.getOperatorId() == null) {
             smid1 = smid;
-        }else if (store.getOperatorId() == 0){
+        } else if (store.getOperatorId() == 0) {
             smid1 = smid;
-        }else{
+        } else {
             smid1 = storeClient.getmerchantNumberAliByOperatorId(store.getOperatorId());
         }
-        if (!StringUtils.hasLength(smid1)){
+        if (!StringUtils.hasLength(smid1)) {
             return ResultUtil.error("运营商未配置支付宝商户号,获取支付失败!");
         }
-        ResultUtil alipay = payMoneyUtil.alipay(smid1,"课包购买", "课包购买", "", code, request.toString(),
+        ResultUtil alipay = payMoneyUtil.alipay(smid1, "课包购买", "课包购买", "", code, request.toString(),
                 "/base/coursePackage/alipayRegisteredCoursesCallback");
-//        if (alipay.getCode() == 200) {
-//            String finalCode = code;
-//            new Thread(new Runnable() {
-//                @Override
-//                public void run() {
-//                    try {
-//                        Thread.sleep(1000);
-//                        int num = 1;
-//                        int wait = 0;
-//                        while (num <= 10) {
-//                            int min = 5000;
-//                            wait += (min * num);
-//                            Thread.sleep(wait);
-//                            CoursePackageOrder coursePackageOrder1 = coursePackageOrderService.getOne(new QueryWrapper<CoursePackageOrder>()
-//                                    .eq("code", finalCode).eq("state", 1));
-//                            if (coursePackageOrder1.getPayStatus() == 2) {
-//                                break;
-//                            }
-//                            AlipayTradeQueryResponse alipayTradeQueryResponse = payMoneyUtil.queryALIOrder(finalCode);
-//                            if (null != alipayTradeQueryResponse) {
-//                                /**
-//                                 * WAIT_BUYER_PAY(交易创建,等待买家付款)、
-//                                 * TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、
-//                                 * TRADE_SUCCESS(交易支付成功)、
-//                                 * TRADE_FINISHED(交易结束,不可退款)
-//                                 */
-//                                String s = alipayTradeQueryResponse.getTradeStatus();
-//
-//                                String tradeNo = alipayTradeQueryResponse.getTradeNo();
-//                                if ("TRADE_CLOSED".equals(s) || "TRADE_FINISHED".equals(s) || num == 10) {
-//                                    //有待支付的订单,这里不处理
-////                                    coursePackageOrder1.setState(3);
-////                                    coursePackageOrderService.updateById(coursePackageOrder1);
-//                                    break;
-//                                }
-//                                if ("TRADE_SUCCESS".equals(s)) {
-//                                    coursePackagePayment.setPayStatus(2);
-//                                    coursePackagePayment.setOrderNumber(tradeNo);
-//                                    baseMapper1.updateById(coursePackagePayment);
-//                                        // 判断这个课包属于哪个门店 属于哪个运营商 根据运营商 id 获取对应的商户号
-//                                        Integer coursePackageId = coursePackagePayment.getCoursePackageId();
-//                                        TCoursePackage byId = coursePackageService.getById(coursePackageId);
-//                                        Store store = storeClient.queryStoreById(byId.getStoreId());
-//                                        if (store.getOperatorId() == null ){
-//                                            // 说明是平台的门店 无需冻结资金 不走分账
-//                                            payMoneyUtil.confirm1(smid,code,tradeNo,request.toString());
-//                                        }else if (store.getOperatorId() == 0){
-//                                            // 说明是平台的门店
-//                                            payMoneyUtil.confirm1(smid,code,tradeNo,request.toString());
-//                                            // 发起分账
-//                                            extracted(store, coursePackageOrder1, tradeNo);
-//                                        }else{
-//                                            payMoneyUtil.confirm(storeClient.getSMIDByOperatorId(store.getOperatorId()),code,tradeNo,request.toString());
-//                                            // 发起分账
-//                                            extracted(store, coursePackageOrder1, tradeNo);
-//                                        }
-//                                    break;
-//                                }
-//                                if ("WAIT_BUYER_PAY".equals(s)) {
-//                                    num++;
-//                                }
-//                            }
-//                        }
-//                    } catch (Exception e) {
-//                        e.printStackTrace();
-//                    }
-//                }
-//            }).start();
-//        }
+        if (alipay.getCode() == 200) {
+            String finalCode = code;
+            String finalSmid = smid1;
+            new Thread(new Runnable() {
+                @Override
+                public void run() {
+                    try {
+                        Thread.sleep(1000);
+                        int num = 1;
+                        int wait = 0;
+                        while (num <= 10) {
+                            int min = 5000;
+                            wait += (min * num);
+                            Thread.sleep(wait);
+                            CoursePackageOrder coursePackageOrder1 = coursePackageOrderService.getOne(new QueryWrapper<CoursePackageOrder>()
+                                    .eq("code", finalCode).eq("state", 1));
+                            if (coursePackageOrder1.getPayStatus() == 2) {
+                                break;
+                            }
+                            AlipayTradeQueryResponse alipayTradeQueryResponse = payMoneyUtil.queryALIOrder(finalCode);
+                            if (null != alipayTradeQueryResponse) {
+                                /**
+                                 * WAIT_BUYER_PAY(交易创建,等待买家付款)、
+                                 * TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、
+                                 * TRADE_SUCCESS(交易支付成功)、
+                                 * TRADE_FINISHED(交易结束,不可退款)
+                                 */
+                                String s = alipayTradeQueryResponse.getTradeStatus();
+
+                                String tradeNo = alipayTradeQueryResponse.getTradeNo();
+                                if ("TRADE_CLOSED".equals(s) || "TRADE_FINISHED".equals(s) || num == 10) {
+                                    //有待支付的订单,这里不处理
+//                                    coursePackageOrder1.setState(3);
+//                                    coursePackageOrderService.updateById(coursePackageOrder1);
+                                    break;
+                                }
+                                if ("TRADE_SUCCESS".equals(s)) {
+                                    coursePackagePayment.setPayStatus(2);
+                                    coursePackagePayment.setOrderNumber(tradeNo);
+                                    baseMapper1.updateById(coursePackagePayment);
+                                    Thread.sleep(30000);
+                                    payMoneyUtil.confirm(finalSmid, code, tradeNo, request.toString());
+                                    break;
+                                }
+                                if ("WAIT_BUYER_PAY".equals(s)) {
+                                    num++;
+                                }
+                            }
+                        }
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+                }
+            }).start();
+        }
         return alipay;
     }
 
@@ -1104,10 +1084,10 @@
         System.err.println("进入玩湃支付");
         CoursePackageOrder packagePayment = coursePackageOrderService.getOne(new QueryWrapper<CoursePackageOrder>()
                 .eq("code", code));
-        System.err.println("支付"+packagePayment);
-        System.err.println("用户信息"+appUser);
-        System.err.println("code"+code);
-        System.err.println("wpGold"+wpGold);
+        System.err.println("支付" + packagePayment);
+        System.err.println("用户信息" + appUser);
+        System.err.println("code" + code);
+        System.err.println("wpGold" + wpGold);
         if (appUser.getPlayPaiCoins() < wpGold) {
             return ResultUtil.error("玩湃币不足!");
         }
@@ -1119,9 +1099,9 @@
             System.err.println("修改");
             boolean b = coursePackageOrderService.updateById(packagePayment);
 
-        }catch (Exception e){
-            System.err.println("报错"+e.getCause());
-            System.err.println("报错"+e.getMessage());
+        } catch (Exception e) {
+            System.err.println("报错" + e.getCause());
+            System.err.println("报错" + e.getMessage());
             e.printStackTrace();
         }
         appUser.setPlayPaiCoins(ToolUtil.isNotEmpty(appUser.getPlayPaiCoins()) ? appUser.getPlayPaiCoins() - wpGold : wpGold);
@@ -1222,8 +1202,7 @@
                         } else if (start.after(new Date())) {
                             //待上课
                             recordVo.setStatus(1);
-                        }
-                        else {
+                        } else {
                             CancelledClasses cancelledClasses = cacMapper.selectOne(new QueryWrapper<CancelledClasses>()
                                     .eq("coursePackageSchedulingId", byId.getId()).last("limit 1"));
                             if (ToolUtil.isNotEmpty(cancelledClasses)) {
@@ -1336,22 +1315,22 @@
 
         List<Map<String, Object>> list = new ArrayList<>();
 
-        if (coursePackage.getType()==1){
-      list = this.baseMapper.queryRegistrationRecord(page, coursePackageId, userIds, studentIds);
-        }else {
+        if (coursePackage.getType() == 1) {
+            list = this.baseMapper.queryRegistrationRecord(page, coursePackageId, userIds, studentIds);
+        } else {
             list = this.baseMapper.queryRegistrationRecord1(page, coursePackageId, userIds, studentIds);
         }
 
-        list.addAll(this.baseMapper.queryRegistrationRecord3(coursePackageId,userIds,studentIds));
+        list.addAll(this.baseMapper.queryRegistrationRecord3(coursePackageId, userIds, studentIds));
         for (Map<String, Object> map : list) {
 
 
             Long id = Long.valueOf(map.get("id").toString());
             Integer appUserId = Integer.valueOf(map.get("appUserId").toString());
             Integer studentId = 0;
-            if (coursePackage.getType()==1) {
+            if (coursePackage.getType() == 1) {
                 studentId = Integer.valueOf(map.get("studentId").toString());
-            }else {
+            } else {
                 studentId = Integer.valueOf(map.get("studentIds").toString().split(",")[0]);
             }
 
@@ -1363,7 +1342,7 @@
             Integer integer = cpsMapper.selectCount(new QueryWrapper<CoursePackageStudent>().eq("appUserId", appUserId)
                     .eq("studentId", studentId).eq("coursePackagePaymentId", id).eq("signInOrNot", 2));
 
-            int count = coursePackageStudentService.count(new QueryWrapper<CoursePackageStudent>().eq("coursePackageId", coursePackageId).eq("studentId", studentId).eq("signInOrNot",2));
+            int count = coursePackageStudentService.count(new QueryWrapper<CoursePackageStudent>().eq("coursePackageId", coursePackageId).eq("studentId", studentId).eq("signInOrNot", 2));
 
             map.put("absencesNumber", count);
 
@@ -1559,12 +1538,12 @@
         //需要购买使用的课时数
         Integer num = req.getNum();
         //需要删除多余的排课记录
-        if(num.compareTo(laveClassHours1) > 0){
+        if (num.compareTo(laveClassHours1) > 0) {
             //课时数差额
             int number1 = num - laveClassHours1;
             double o = number1 % coursePackage.getNeedNum();
             int l = 0;
-            if(0 != o){
+            if (0 != o) {
                 l = 1;
             }
             int n = Double.valueOf(number1 / coursePackage.getNeedNum()).intValue() + l;
@@ -1620,7 +1599,7 @@
         coursePackageOrderStudent.setLaveClassHours(coursePackageOrderStudent.getLaveClassHours() - req.getNum());
         coursePackageOrderStudentService.updateById(coursePackageOrderStudent);
         Integer laveClassHours = coursePackageOrderStudent.getLaveClassHours();
-        if(3 >= laveClassHours){
+        if (3 >= laveClassHours) {
             AppUser appUser = appuClient.queryAppUser(coursePackageOrderStudent.getAppUserId());
             //发送短信提醒
             aLiSendSms.sendSms(appUser.getPhone(), "SMS_463646317", "");
diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java
index b3bb319..9df4c59 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java
@@ -1031,85 +1031,63 @@
         ResultUtil alipay = payMoneyUtil.alipay(smid1,"报名运动营", "报名运动营",
                 coursePackagePaymentConfig.getId().toString(),
                 code, paymentPrice.toString(), "/base/course/aliPaymentCourseCallback");
-//        if (alipay.getCode() == 200) {
-//            String finalCode = code;
-//            new Thread(new Runnable() {
-//                @Override
-//                public void run() {
-//                    try {
-//                        Thread.sleep(1000);
-//                        int num = 1;
-//                        int wait = 0;
-//                        while (num <= 10) {
-//                            int min = 5000;
-//                            wait += (min * num);
-//                            Thread.sleep(wait);
-//                            CoursePackageOrder coursePackageOrder1 = coursePackageOrderService.getOne(new QueryWrapper<CoursePackageOrder>()
-//                                    .eq("code", finalCode).eq("state", 1));
-//                            if (coursePackageOrder1.getPayStatus() == 2) {
-//                                break;
-//                            }
-//                            AlipayTradeQueryResponse alipayTradeQueryResponse = payMoneyUtil.queryALIOrder(finalCode);
-//                            if (null != alipayTradeQueryResponse) {
-//                                /**
-//                                 * WAIT_BUYER_PAY(交易创建,等待买家付款)、
-//                                 * TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、
-//                                 * TRADE_SUCCESS(交易支付成功)、
-//                                 * TRADE_FINISHED(交易结束,不可退款)
-//                                 */
-//                                String s = alipayTradeQueryResponse.getTradeStatus();
-//
-//                                String tradeNo = alipayTradeQueryResponse.getTradeNo();
-//                                if ("TRADE_CLOSED".equals(s) || "TRADE_FINISHED".equals(s) || num == 10) {
-//                                    //有待支付的订单,这里不处理
-////                                    coursePackageOrder1.setState(3);
-////                                    coursePackageOrderService.updateById(coursePackageOrder1);
-//                                    break;
-//                                }
-//                                if ("TRADE_SUCCESS".equals(s)) {
-//                                    coursePackageOrder1.setPayStatus(2);
-//                                    coursePackageOrder1.setOrderNumber(tradeNo);
-//                                    coursePackageOrder1.setAppUserId(null);
+        if (alipay.getCode() == 200) {
+            String finalCode = code;
+            String finalSmid = smid1;
+            String finalCode1 = code;
+            new Thread(new Runnable() {
+                @Override
+                public void run() {
+                    try {
+                        Thread.sleep(1000);
+                        int num = 1;
+                        int wait = 0;
+                        while (num <= 10) {
+                            int min = 5000;
+                            wait += (min * num);
+                            Thread.sleep(wait);
+                            CoursePackageOrder coursePackageOrder1 = coursePackageOrderService.getOne(new QueryWrapper<CoursePackageOrder>()
+                                    .eq("code", finalCode).eq("state", 1));
+                            if (coursePackageOrder1.getPayStatus() == 2) {
+                                break;
+                            }
+                            AlipayTradeQueryResponse alipayTradeQueryResponse = payMoneyUtil.queryALIOrder(finalCode);
+                            if (null != alipayTradeQueryResponse) {
+                                /**
+                                 * WAIT_BUYER_PAY(交易创建,等待买家付款)、
+                                 * TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、
+                                 * TRADE_SUCCESS(交易支付成功)、
+                                 * TRADE_FINISHED(交易结束,不可退款)
+                                 */
+                                String s = alipayTradeQueryResponse.getTradeStatus();
+
+                                String tradeNo = alipayTradeQueryResponse.getTradeNo();
+                                if ("TRADE_CLOSED".equals(s) || "TRADE_FINISHED".equals(s) || num == 10) {
+                                    //有待支付的订单,这里不处理
+//                                    coursePackageOrder1.setState(3);
 //                                    coursePackageOrderService.updateById(coursePackageOrder1);
-//                                    addCoursePackageOrderStudent(coursePackageOrder1.getId(), coursePackagePaymentConfig);
-//                                    moneyOut(tradeNo,tradeNo,finalCode);
-//                                    // 根据课程id 查询这个课程属于哪个门店 属于哪个运营商
-//                                    Integer id = paymentCourseVo.getId();
-//                                    TCoursePackage byId = coursePackageService.getById(id);
-//                                    Integer storeId = byId.getStoreId();
-//                                    Store store = storeClient.queryStoreById(storeId);
-//                                    Integer operatorId = store.getOperatorId();
-//                                    if (operatorId==null){
-//                                        String smid ="2088330203191220";
-//                                            // 说明是平台的 不走分账
-////                                            payMoneyUtil.confirm(smid,finalCode,tradeNo,paymentPrice.toString());
-//                                        payMoneyUtil.confirm1(smid,finalCode,tradeNo,paymentPrice.toString());
-//                                        break;
-//                                    }else if (operatorId==0){
-//                                        String smid ="2088330203191220";
-//                                        // 说明是平台的
-//                                        payMoneyUtil.confirm1(smid,finalCode,tradeNo,paymentPrice.toString());
-//                                        break;
-//                                    }else{
-//                                        // 当前课程不属于门店 查询这个课程属于哪个门店 属于哪个运营商
-//                                        String smidByOperatorId = storeClient.getSMIDByOperatorId(operatorId);
-//                                        payMoneyUtil.confirm(smidByOperatorId,finalCode,tradeNo,paymentPrice.toString());
-//                                        // 分账处理
-//                                        extracted(store, coursePackageOrder1, tradeNo);
-//                                        break;
-//                                    }
-//                                }
-//                                if ("WAIT_BUYER_PAY".equals(s)) {
-//                                    num++;
-//                                }
-//                            }
-//                        }
-//                    } catch (Exception e) {
-//                        e.printStackTrace();
-//                    }
-//                }
-//            }).start();
-//        }
+                                    break;
+                                }
+                                if ("TRADE_SUCCESS".equals(s)) {
+                                    coursePackageOrder1.setPayStatus(2);
+                                    coursePackageOrder1.setOrderNumber(tradeNo);
+                                    coursePackageOrder1.setAppUserId(null);
+                                    coursePackageOrderService.updateById(coursePackageOrder1);
+                                    addCoursePackageOrderStudent(coursePackageOrder1.getId(), coursePackagePaymentConfig);
+                                    Thread.sleep(30000);
+                                    payMoneyUtil.confirm(finalSmid, finalCode1, tradeNo, paymentPrice.toString());
+                                }
+                                if ("WAIT_BUYER_PAY".equals(s)) {
+                                    num++;
+                                }
+                            }
+                        }
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+                }
+            }).start();
+        }
         return alipay;
     }
 
diff --git a/cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java b/cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java
index 1450e74..870c561 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java
@@ -3,10 +3,7 @@
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-import com.alipay.api.AlipayApiException;
-import com.alipay.api.AlipayClient;
-import com.alipay.api.CertAlipayRequest;
-import com.alipay.api.DefaultAlipayClient;
+import com.alipay.api.*;
 import com.alipay.api.domain.*;
 import com.alipay.api.request.*;
 import com.alipay.api.response.*;
@@ -76,45 +73,63 @@
 
     private String certPath = "/usr/playpai/cert/weixin/apiclient_cert.p12";//微信证书
 
-    public ResultUtil confirm(String smid,String code, String outTradeNo, String amount) {
-        AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",
-                aliAppid,
-                appPrivateKey,
-                "json",
-                "GBK",
-                alipay_public_key,
-                "RSA2");
+    public ResultUtil confirm(String smid1,String code, String outTradeNo, String amount) throws AlipayApiException {
+        // 初始化SDK
+        AlipayClient alipayClient = new DefaultAlipayClient(getAlipayConfig());
+
+        // 构造请求参数以调用接口
         AlipayTradeSettleConfirmRequest request = new AlipayTradeSettleConfirmRequest();
-        request.setBizContent("{" +
-                "  \"out_request_no\":\""+code+"\"," +
-                "  \"trade_no\":\""+outTradeNo+"\"," +
-                "  \"settle_info\":{" +
-                "    \"settle_detail_infos\":[" +
-                "      {" +
-                "        \"trans_in_type\":\"defaultSettle\"," +
-                "        \"settle_entity_id\":\""+smid+"\"," +
-                "        \"settle_entity_type\":\"SecondMerchant\"," +
-                "        \"amount\":"+amount+"," +
-                "      }" +
-                "    ]" +
-                "  }," +
-                "  \"extend_params\":{" +
-                "    \"royalty_freeze\":\"true\"" +
-                "  }" +
-                "}");
-        AlipayTradeSettleConfirmResponse response = null;
-        try {
-            response = alipayClient.execute(request);
-        } catch (AlipayApiException e) {
-            e.printStackTrace();
-        }
-        if(response.isSuccess()){
+        AlipayTradeSettleConfirmModel model = new AlipayTradeSettleConfirmModel();
+
+        // 设置确认结算请求流水号
+        model.setOutRequestNo(code);
+
+        // 设置支付宝交易号
+        model.setTradeNo(outTradeNo);
+
+        // 设置描述结算信息
+        SettleInfo settleInfo = new SettleInfo();
+        List<SettleDetailInfo> settleDetailInfos = new ArrayList<SettleDetailInfo>();
+        SettleDetailInfo settleDetailInfos0 = new SettleDetailInfo();
+        settleDetailInfos0.setAmount(amount);
+        settleDetailInfos0.setTransIn(smid1);
+        settleDetailInfos0.setSettleEntityType("SecondMerchant");
+        settleDetailInfos0.setSettleEntityId(smid1);
+        settleDetailInfos0.setTransInType("defaultSettle");
+        settleDetailInfos.add(settleDetailInfos0);
+        settleInfo.setSettleDetailInfos(settleDetailInfos);
+        model.setSettleInfo(settleInfo);
+        request.setBizModel(model);
+        System.err.println("结算金额"+amount);
+        // 第三方代调用模式下请设置app_auth_token
+        // request.putOtherTextParam("app_auth_token", "<-- 请填写应用授权令牌 -->");
+
+        AlipayTradeSettleConfirmResponse response = alipayClient.execute(request);
+        System.out.println("返回体"+response.getBody());
+
+
+        if (response.isSuccess()) {
             System.out.println("调用成功");
-            return ResultUtil.success();
         } else {
             System.out.println("调用失败");
-            return ResultUtil.error("出现问题啦");
+            // sdk版本是"4.38.0.ALL"及以上,可以参考下面的示例获取诊断链接
+            // String diagnosisUrl = DiagnosisUtils.getDiagnosisUrl(response);
+            // System.out.println(diagnosisUrl);
         }
+        return ResultUtil.success(response.getBody());
+    }
+    private static AlipayConfig getAlipayConfig() {
+        String privateKey  = "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCi5i9nW/hGLJ3A06cZxTQdviFC7THpdSihoTYGLr9q006hu0V26ecBMY/o4w5bvIX0Ok/yofmZsVcCJpAPvbXL/uqVrIjnRRxXiaeBFThlxoBUTdunvbUSDYfzlEhJr5NvUKI6H6lz2niXlQGx4qy8Hau4ccWit9kM8jwUvsBVQoFgJA+xrjMvooA7YLopQtpOD+UJr5thApTSf1xrnr1W12yolTLEH15JmNV372cqXrYUuqnY0QsaPtxeqJUGAOcGdVLllQ7easEznP8DFBvDdHATcmp2SHNQDUEWN6MCVPbMgY06NQVqAXxqjTAYSVh+6TRu6bofPmpYC3TZB003AgMBAAECggEBAJAcR2+PA3NBYUYHeFrqBRMS8uX8ZR19kjZ7IgoSLTFaQsP9opRylPSPXhrPVBKAE5leRQAHn4MCSlESwHvMfxo7KFjFTFAc6dffZZpipYQUOc9bGampwJh58/3e/pyBgVMG6J23CPf/HJQtNFSkjd/V9+ayb/9l2dUEL3bC0fAZ/dbx8HsxdLw8wn3fLlWLj68hOMqa2deCZe3JdSVsPbeWqkh56FFsMLug0Nd+Ar4TgRl9/jnhXF0JWiD0LmPUYLhboY7EfUBzN4w1iYbDi1P+3zvoOYsiVKAXox9GMhQ2VzOO2UcSTuizSza2e98mGpabl/GpKmCz+RDFjtkX6eECgYEA2MyCij65eO3aGIm3FUe93DULRBYTfX8qJQSJq2WOWA3mmQlEW6L3O2B5/lG2h+8WmN6iLEs9eHpgycGYp7vAqgrANEn16ACVcuyx0scFtrZfZ+kmHMzFfiUWxJjVYk/6YngsGVBLdw6ueM42C8TTP67X9tU5TdVGoGWuqEj4W98CgYEAwFqwprXOch5Pqk/RPbb49r0Ou03K/UbciWnWWKzUhFFNS8MdlQPoDvQZbMwHLeWsa2VhaKITK3x5biLQb3U+0GLOn6lTvEyrEUH+ucREyLgVYTRAvwBPtnvlrzpyxPk2HnslQjju8WrvvLLBMKWUjlTrTOzhaHT21gz3pHMiOakCgYEAhLmfaXdBITGshb054sNLDtdCkGpbgEcrzAHdLps769iGxkYQHXHFngpQZUwtTUcoNGqIKknd1jZFrv7gsD+XkgKG7PwimehRlkwmCX5ilxtLiVgJRzRt6+5U5AMVD90a0tHzXYP0z2yjj73fBJF5KtGl0a10KZxaYrQdm1UhB00CgYBZZgzx/k9rtHC8LAqIj1CYhHejT92G53c6Gkl3vyOqN4sgKhfGmSEySfrDGPRBPZxr8ZtbIPCd5mUdberH0osWGMYFaJI1UsCy7aQwvGpniz7MhZeN7dweaOjwDs8mgtjHQ96mL4XGCDhR0BZ/wIURvZ/6iaGdhbbu9unlsWj3uQKBgQCmZYdsbbZkd3ev6f8rwyvMz+DrCQyYpY44cegBYuJgrZiQnL2fJioeN7ixX0UM48SfwsZEIrzshP/LGAwnc2MdjxKUl4jLN8SEe0NAjXOnz9Zaw740+aOmLpXcLWdP4uM2gIhWsvW1tEkQZCXmm7c9s/RsU8Pmzv+YL3+fSijOzA==";
+        String alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmu8n/4yTHWbn7VOrNc9OsLtDL1bEQ8gC1dHkj8Wy5z0mkaOsjJRIG/28ze12M0V8jdCKuuDr5Z1OPKiqf+XO3ypguEh+mYUVMBM/cZodDFQfTY1TKLWjvQCuaqlA+QUTCK6f7T7stsgyQ1o9Jj0rXZDz6PM4QHSTzjrLIBaeqM5WIBvH+fy/X+QG5Utd+/UT0kc0JyvuKhZ65yVUd/C9VcwJJAPliRsAQNrqYterwAJ9zvw9tF11wj9W0XgJ8Ccu4x3gR1vrlLRJJo/OA97RmxPQ+5hSacWQZCUd1dwiBq+YCrKVHGTj14izRHXrLc0yBlRXo7tBOIqcy3IsvKVthQIDAQAB";
+        AlipayConfig alipayConfig = new AlipayConfig();
+        alipayConfig.setServerUrl("https://openapi.alipay.com/gateway.do");
+        alipayConfig.setAppId("2021004105665036");
+        alipayConfig.setPrivateKey(privateKey);
+        alipayConfig.setFormat("json");
+        alipayConfig.setAlipayPublicKey(alipayPublicKey);
+        alipayConfig.setCharset("UTF-8");
+        alipayConfig.setSignType("RSA2");
+        return alipayConfig;
     }
     // 属于平台的运营商 因为无需分账不冻结资金
     public ResultUtil confirm1(String smid,String code, String outTradeNo, String amount) {
@@ -161,56 +176,6 @@
      * 支付宝支付
      */
     public ResultUtil alipay(String smid,String body, String subject, String passbackParams, String outTradeNo, String amount, String notifyUrl) {
-//        //构造client
-//        CertAlipayRequest certAlipayRequest = new CertAlipayRequest ();
-//        //设置网关地址
-//        certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do");
-//        //设置应用Id
-//        certAlipayRequest.setAppId(aliAppid);
-//        //设置应用私钥
-//        certAlipayRequest.setPrivateKey(appPrivateKey);
-//        //设置请求格式,固定值json
-//        certAlipayRequest.setFormat("json");
-//        //设置字符集
-//        certAlipayRequest.setCharset("UTF-8");
-//        //设置签名类型
-//        certAlipayRequest.setSignType("RSA2");
-//        //设置应用公钥证书路径
-//        certAlipayRequest.setCertPath(app_cert_path);
-//        //设置支付宝公钥证书路径
-//        certAlipayRequest.setAlipayPublicCertPath(alipay_cert_path);
-//        //设置支付宝根证书路径
-//        certAlipayRequest.setRootCertPath(alipay_root_cert_path);
-//        //构造client
-//        AlipayClient alipayClient = null;
-//        try {
-//            alipayClient = new DefaultAlipayClient(certAlipayRequest);
-//        } catch (AlipayApiException e) {
-//            e.printStackTrace();
-//        }
-//        //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
-//        AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest ();
-//        //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。
-//        AlipayTradeAppPayModel model = new AlipayTradeAppPayModel ();
-//        model.setBody(body);
-//        model.setSubject (subject);
-//        model.setOutTradeNo (outTradeNo);
-//        model.setTimeoutExpress ("30m" );
-//        model.setTotalAmount (amount);
-//        model.setProductCode ( "QUICK_MSECURITY_PAY" );
-//        model.setPassbackParams(passbackParams);//自定义参数
-//        request.setBizModel ( model );
-//        request.setNotifyUrl (callbackPath + notifyUrl);
-//        try  {
-//            //这里和普通的接口调用不同,使用的是sdkExecute
-//            AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
-//            Map<String, String> map = new HashMap<>();
-//            map.put("orderString", response.getBody());
-//            System.out.println(map);//就是orderString 可以直接给客户端请求,无需再做处理。
-//            return ResultUtil.success(map);
-//        }  catch (AlipayApiException e ) {
-//            e.printStackTrace();
-//        }
         //实例化客户端
         AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", aliAppid, appPrivateKey, "json", "UTF-8", alipay_public_key, "RSA2");
         //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
@@ -236,6 +201,11 @@
         SubMerchant subMerchant = new SubMerchant();
         subMerchant.setMerchantId(smid);
         model.setSubMerchant(subMerchant);
+        if (!smid.equals("2088330203191220")){
+            ExtendParams extendParams = new ExtendParams();
+            extendParams.setRoyaltyFreeze("true");
+            model.setExtendParams(extendParams);
+        }
         request.setBizModel(model);
         request.setNotifyUrl(callbackPath + notifyUrl);
         try {
diff --git a/cloud-server-management/src/main/java/com/dsh/course/mapper/DeptMapper.java b/cloud-server-management/src/main/java/com/dsh/course/mapper/DeptMapper.java
index d969d44..83c1eb3 100644
--- a/cloud-server-management/src/main/java/com/dsh/course/mapper/DeptMapper.java
+++ b/cloud-server-management/src/main/java/com/dsh/course/mapper/DeptMapper.java
@@ -22,9 +22,12 @@
     /**
      * 获取ztree的节点列表
      */
-    List<ZTreeNode> tree(@Param("type") Integer type, @Param("id") Integer id);
+    List<ZTreeNode> tree(@Param("type") Integer type, @Param("id") Integer id,@Param("storeIds") List<Integer> storeIds);
 
-    List<Map<String, Object>> list(@Param("condition") String condition, @Param("objectType") Integer objectType, @Param("objectId") Integer objectId);
+    List<Map<String, Object>> list(@Param("condition") String condition,
+                                   @Param("objectType") Integer objectType,
+                                   @Param("objectId") Integer objectId,
+                                   @Param("storeIds") List<Integer> storeIds);
 
     /**
      * 获取所有部门列表
diff --git a/cloud-server-management/src/main/java/com/dsh/course/mapper/RoleMapper.java b/cloud-server-management/src/main/java/com/dsh/course/mapper/RoleMapper.java
index 368fbfa..fdf1b3e 100644
--- a/cloud-server-management/src/main/java/com/dsh/course/mapper/RoleMapper.java
+++ b/cloud-server-management/src/main/java/com/dsh/course/mapper/RoleMapper.java
@@ -41,7 +41,7 @@
      * @return
      * @date 2017年2月18日 上午10:32:04
      */
-    List<ZTreeNode> roleTreeList(@Param("type") Integer type, @Param("id") Integer id);
+    List<ZTreeNode> roleTreeList(@Param("type") Integer type, @Param("id") Integer id, @Param("storeIds") List<Integer> storeIds);
 
     /**
      * 获取角色列表树
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java
index 0bdd233..81c0d59 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java
@@ -303,7 +303,8 @@
             game.setOperationId(0);
         }
         System.out.println("============"+game);
-    
+        TStore tStore = storeService.getById(store);
+        game.setOperationId(tStore.getOperatorId());
         // 判断是新增还是修改 修改不会重新生成sutuId
         if (game.getId()==null) {
             HashMap<String, String> map5 = new HashMap<>();
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/DeptController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/DeptController.java
index d02cd3f..8885e58 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/DeptController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/DeptController.java
@@ -113,12 +113,6 @@
     @ResponseBody
     public Object list(String condition) {
         List<Map<String, Object>> list = this.deptService.list(condition);
-        if (UserExt.getUser().getObjectType()==2){
-            List<Map<String, Object>> filteredRoles = list.stream()
-                    .collect(Collectors.toList());
-            return filteredRoles;
-        }
-
         return super.warpObject(new DeptWarpper(list));
     }
 
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/RoleController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/RoleController.java
index fd5851e..a175b59 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/RoleController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/RoleController.java
@@ -84,7 +84,7 @@
         model.addAttribute("pName", ConstantFactory.me().getSingleRoleName(role.getPid()));
         model.addAttribute("deptName", ConstantFactory.me().getDeptName(role.getDeptid()));
         LogObjectHolder.me().set(role);
-        model.addAttribute("language",UserExt.getLanguage());
+        model.addAttribute("language",1);
         return PREFIX + "/role_edit.html";
     }
 
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/DeptServiceImpl.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/DeptServiceImpl.java
index 1ad113f..accf34e 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/DeptServiceImpl.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/DeptServiceImpl.java
@@ -1,7 +1,10 @@
 package com.dsh.guns.modular.system.service.impl;
 
+import java.sql.Array;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 import javax.annotation.Resource;
 
@@ -10,6 +13,9 @@
 import com.dsh.course.mapper.DeptMapper;
 import com.dsh.course.model.node.ZTreeNode;
 import com.dsh.guns.config.UserExt;
+import com.dsh.guns.modular.system.model.TStore;
+import com.dsh.guns.modular.system.service.IStoreService;
+import io.swagger.models.auth.In;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -22,6 +28,8 @@
 
     @Resource
     private DeptMapper deptMapper;
+    @Resource
+    private IStoreService storeService;
 
     @Override
     public void deleteDept(Integer deptId) {
@@ -39,14 +47,35 @@
 
     @Override
     public List<ZTreeNode> tree() {
-
-        return this.baseMapper.tree(UserExt.getUser().getObjectType(),UserExt.getUser().getObjectId());
+        Integer objectType = UserExt.getUser().getObjectType();
+        Integer objectId = UserExt.getUser().getObjectId();
+        List<Integer> storeIds = new ArrayList<>();
+        if (objectType==2){
+            // 查询运营商下的门店ids
+            List<Integer> collect = storeService.lambdaQuery().eq(TStore::getOperatorId, objectId).list()
+                    .stream().map(TStore::getId).collect(Collectors.toList());
+            if (collect.isEmpty()){
+                storeIds.add(-1);
+            }
+            storeIds.addAll(collect);
+        }
+        return this.baseMapper.tree(UserExt.getUser().getObjectType(),UserExt.getUser().getObjectId(),storeIds);
     }
 
     @Override
     public List<Map<String, Object>> list(String condition) {
         Integer objectType = UserExt.getUser().getObjectType();
         Integer objectId = UserExt.getUser().getObjectId();
-        return this.baseMapper.list(condition,objectType,objectId);
+        List<Integer> storeIds = new ArrayList<>();
+        if (objectType==2){
+            // 查询运营商下的门店ids
+            List<Integer> collect = storeService.lambdaQuery().eq(TStore::getOperatorId, objectId).list()
+                    .stream().map(TStore::getId).collect(Collectors.toList());
+            if (collect.isEmpty()){
+                storeIds.add(-1);
+            }
+            storeIds.addAll(collect);
+        }
+        return this.baseMapper.list(condition,objectType,objectId,storeIds);
     }
 }
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/RoleServiceImpl.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/RoleServiceImpl.java
index c0383cd..08db44e 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/RoleServiceImpl.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/RoleServiceImpl.java
@@ -1,7 +1,9 @@
 package com.dsh.guns.modular.system.service.impl;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 import javax.annotation.Resource;
 
@@ -11,6 +13,8 @@
 import com.dsh.course.model.node.ZTreeNode;
 import com.dsh.guns.config.UserExt;
 import com.dsh.guns.modular.system.controller.util.Convert;
+import com.dsh.guns.modular.system.model.TStore;
+import com.dsh.guns.modular.system.service.IStoreService;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -64,10 +68,21 @@
     public int deleteRolesById(Integer roleId) {
         return this.baseMapper.deleteRolesById(roleId);
     }
-
+    @Resource
+    private IStoreService storeService;
     @Override
     public List<ZTreeNode> roleTreeList(Integer type,Integer id) {
-        return this.baseMapper.roleTreeList(type,id);
+        List<Integer> storeIds = new ArrayList<>();
+        if (type==2){
+            // 查询运营商下的门店ids
+            List<Integer> collect = storeService.lambdaQuery().eq(TStore::getOperatorId, id).list()
+                    .stream().map(TStore::getId).collect(Collectors.toList());
+            if (collect.isEmpty()){
+                storeIds.add(-1);
+            }
+            storeIds.addAll(collect);
+        }
+        return this.baseMapper.roleTreeList(type,id,storeIds);
     }
 
     @Override
diff --git a/cloud-server-management/src/main/resources/mapper/DeptMapper.xml b/cloud-server-management/src/main/resources/mapper/DeptMapper.xml
index 88658e1..0927bb1 100644
--- a/cloud-server-management/src/main/resources/mapper/DeptMapper.xml
+++ b/cloud-server-management/src/main/resources/mapper/DeptMapper.xml
@@ -24,7 +24,20 @@
 		'false'
 		END
 		) as isOpen from sys_dept where 1=1
-        and objectType =#{type} and objectId =#{id}
+        <if test="type == 3">
+            and  objectType = 3 and objectId =#{id}
+        </if>
+        <if test="type == 2">
+            and (objectType = 2 and objectId =#{id}
+            or
+            <if test="storeIds != null and storeIds.size()>0">
+                objectId IN
+                <foreach collection="storeIds" separator="," item="id" open="(" close=")">
+                    #{id}
+                </foreach>
+            </if>
+            )
+        </if>
 	</select>
     <select id="list" resultType="java.util.Map">
             select * from sys_dept where 1=1
@@ -34,9 +47,19 @@
             <if test="objectType == 3">
                 and  objectType = 3 and objectId =#{objectId}
             </if>
-            <if test="objectType == 1">
-                and  objectType = 1
+            <if test="objectType == 2">
+                and (objectType = 2 and objectId =#{objectId}
+                or
+                <if test="storeIds != null and storeIds.size()>0">
+                    objectId IN
+                    <foreach collection="storeIds" separator="," item="id" open="(" close=")">
+                        #{id}
+                    </foreach>
+                </if>
+                )
             </if>
+
+
             order by num ASC
     </select>
 
diff --git a/cloud-server-management/src/main/resources/mapper/RoleMapper.xml b/cloud-server-management/src/main/resources/mapper/RoleMapper.xml
index 36432b2..5981a86 100644
--- a/cloud-server-management/src/main/resources/mapper/RoleMapper.xml
+++ b/cloud-server-management/src/main/resources/mapper/RoleMapper.xml
@@ -42,6 +42,17 @@
 		<if test="type==3">
 			and objType =3 and objId =#{id}
 		</if>
+		<if test="type == 2">
+			and (objType = 2 and objId =#{id}
+			or
+			<if test="storeIds != null and storeIds.size()>0">
+				objId IN
+				<foreach collection="storeIds" separator="," item="id" open="(" close=")">
+					#{id}
+				</foreach>
+			</if>
+			)
+		</if>
 	</select>
 
 		<select id="roleTreeListByRoleId" resultType="com.dsh.course.model.node.ZTreeNode">
@@ -80,6 +91,17 @@
 		<if test="type==3">
 			and objType =3 and objId =#{id}
 		</if>
+			<if test="type == 2">
+				and (objType = 2 and objId =#{id}
+				or
+				<if test="storeIds != null and storeIds.size()>0">
+					objId IN
+					<foreach collection="storeIds" separator="," item="id" open="(" close=")">
+						#{id}
+					</foreach>
+				</if>
+				)
+			</if>
 		) r1 ON r.ID = r1.ID
 		ORDER BY
 		pId,
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tSite/TSite_add.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tSite/TSite_add.html
index a25a0b4..74fa8f6 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tSite/TSite_add.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tSite/TSite_add.html
@@ -204,7 +204,7 @@
 
                 @if(objectType==1){
                 <div class="form-group"   style=" margin-left: 17%;" >
-                    <label class="col-sm-1 control-label">场地说明222:</label>
+                    <label class="col-sm-1 control-label">场地说明:</label>
                     <div class="col-sm-5">
                         <textarea type="text/plain" id="editor"  style="height: 300px;width: 800px;"></textarea>
                     </div>
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite_info.js b/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite_info.js
index dedc89f..b728895 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite_info.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite_info.js
@@ -345,18 +345,16 @@
 
     var objectType =$("#objectType").val()
     data.halfName= halfName;
+    var introduce="";
     if (objectType==1){
         introduce  = TSiteInfo.editor.getContent();
-    }
-
-    console.log(introduce)
-    if(introduce==""){
-        Feng.info("请输入公告内容")
-        return;
+        console.log(introduce)
+        if(introduce==""){
+            Feng.info("请输入场地说明")
+            return;
+        }
     }
     data.introduce= introduce;
-
-
     var goodImgs = TSiteInfo.goodsPicArray;
 
     if(goodImgs.length==0){
diff --git a/cloud-server-other/src/main/java/com/dsh/other/controller/GameController.java b/cloud-server-other/src/main/java/com/dsh/other/controller/GameController.java
index 0562ff8..83c0f5a 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/controller/GameController.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/controller/GameController.java
@@ -271,6 +271,7 @@
                 ResultUtil alipay = payMoneyUtil.alipay(smid1,"游戏支付", "游戏支付", params, code, config.getCash().toString(),
                         "/base/game/aliPaymentGameCallback");
                 if (alipay.getCode() == 200) {
+                    String finalSmid = smid1;
                     new Thread(new Runnable() {
                         @Override
                         public void run() {
@@ -314,7 +315,8 @@
                                             }
                                             gameRecordService.updateBatchById(list);
                                             Integer integer = startGame(uid, gameType, gameId, spaceId, sutuId);
-
+                                            Thread.sleep(30000);
+                                            payMoneyUtil.confirm(finalSmid, code, one.getOrderNo(), config.getCash().toString());
                                             break;
                                         }
                                         if ("WAIT_BUYER_PAY".equals(s)) {
diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java b/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java
index 91d6eb5..95a170c 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java
@@ -520,6 +520,7 @@
         ResultUtil alipay = payMoneyUtil.alipay(smid1,"预约场地", "预约场地", id.toString(), code, paymentPrice.toString(), "/base/site/aliPaymentSiteCallback");
         System.out.println("预约场地----" + alipay.getCode());
         if (alipay.getCode() == 200) {
+            String finalSmid = smid1;
             new Thread(new Runnable() {
                 @Override
                 public void run() {
@@ -556,6 +557,8 @@
                                     siteBooking.setPayOrderNo(tradeNo);
                                     siteBookingService.updateById(siteBooking);
                                     System.err.println("======完成支付");
+                                    Thread.sleep(30000);
+                                    payMoneyUtil.confirm(finalSmid, code, tradeNo, paymentPrice.toString());
                                     break;
                                 }
                                 if ("WAIT_BUYER_PAY".equals(s)) {
diff --git a/cloud-server-other/src/main/java/com/dsh/other/util/PayMoneyUtil.java b/cloud-server-other/src/main/java/com/dsh/other/util/PayMoneyUtil.java
index 8fecbe2..003468a 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/util/PayMoneyUtil.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/util/PayMoneyUtil.java
@@ -3,10 +3,7 @@
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-import com.alipay.api.AlipayApiException;
-import com.alipay.api.AlipayClient;
-import com.alipay.api.CertAlipayRequest;
-import com.alipay.api.DefaultAlipayClient;
+import com.alipay.api.*;
 import com.alipay.api.domain.*;
 import com.alipay.api.msg.AlipayMsgClient;
 import com.alipay.api.msg.MsgHandler;
@@ -76,46 +73,63 @@
     private String certPath = "/usr/playpai/cert/weixin/apiclient_cert.p12";//微信证书
 
 
-    public ResultUtil confirm(String smid, String code, String outTradeNo, String amount) {
+    public ResultUtil confirm(String smid1,String code, String outTradeNo, String amount) throws AlipayApiException {
+        // 初始化SDK
+        AlipayClient alipayClient = new DefaultAlipayClient(getAlipayConfig());
 
-        AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",
-                aliAppid,
-                appPrivateKey,
-                "json",
-                "GBK",
-                alipay_public_key,
-                "RSA2");
+        // 构造请求参数以调用接口
         AlipayTradeSettleConfirmRequest request = new AlipayTradeSettleConfirmRequest();
-        request.setBizContent("{" +
-                "  \"out_request_no\":\"" + code + "\"," +
-                "  \"trade_no\":\"" + outTradeNo + "\"," +
-                "  \"settle_info\":{" +
-                "    \"settle_detail_infos\":[" +
-                "      {" +
-                "        \"trans_in_type\":\"defaultSettle\"," +
-                "        \"settle_entity_id\":\"" + smid + "\"," +
-                "        \"settle_entity_type\":\"SecondMerchant\"," +
-                "        \"amount\":" + amount + "," +
-                "      }" +
-                "    ]" +
-                "  }," +
-                "  \"extend_params\":{" +
-                "    \"royalty_freeze\":\"true\"" +
-                "  }" +
-                "}");
-        AlipayTradeSettleConfirmResponse response = null;
-        try {
-            response = alipayClient.execute(request);
-        } catch (AlipayApiException e) {
-            e.printStackTrace();
-        }
+        AlipayTradeSettleConfirmModel model = new AlipayTradeSettleConfirmModel();
+
+        // 设置确认结算请求流水号
+        model.setOutRequestNo(code);
+
+        // 设置支付宝交易号
+        model.setTradeNo(outTradeNo);
+
+        // 设置描述结算信息
+        SettleInfo settleInfo = new SettleInfo();
+        List<SettleDetailInfo> settleDetailInfos = new ArrayList<SettleDetailInfo>();
+        SettleDetailInfo settleDetailInfos0 = new SettleDetailInfo();
+        settleDetailInfos0.setAmount(amount);
+        settleDetailInfos0.setTransIn(smid1);
+        settleDetailInfos0.setSettleEntityType("SecondMerchant");
+        settleDetailInfos0.setSettleEntityId(smid1);
+        settleDetailInfos0.setTransInType("defaultSettle");
+        settleDetailInfos.add(settleDetailInfos0);
+        settleInfo.setSettleDetailInfos(settleDetailInfos);
+        model.setSettleInfo(settleInfo);
+        request.setBizModel(model);
+        System.err.println("结算金额"+amount);
+        // 第三方代调用模式下请设置app_auth_token
+        // request.putOtherTextParam("app_auth_token", "<-- 请填写应用授权令牌 -->");
+
+        AlipayTradeSettleConfirmResponse response = alipayClient.execute(request);
+        System.out.println("返回体"+response.getBody());
+
+
         if (response.isSuccess()) {
             System.out.println("调用成功");
-            return ResultUtil.success();
         } else {
             System.out.println("调用失败");
-            return ResultUtil.error("出现问题啦");
+            // sdk版本是"4.38.0.ALL"及以上,可以参考下面的示例获取诊断链接
+            // String diagnosisUrl = DiagnosisUtils.getDiagnosisUrl(response);
+            // System.out.println(diagnosisUrl);
         }
+        return ResultUtil.success(response.getBody());
+    }
+    private static AlipayConfig getAlipayConfig() {
+        String privateKey  = "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCi5i9nW/hGLJ3A06cZxTQdviFC7THpdSihoTYGLr9q006hu0V26ecBMY/o4w5bvIX0Ok/yofmZsVcCJpAPvbXL/uqVrIjnRRxXiaeBFThlxoBUTdunvbUSDYfzlEhJr5NvUKI6H6lz2niXlQGx4qy8Hau4ccWit9kM8jwUvsBVQoFgJA+xrjMvooA7YLopQtpOD+UJr5thApTSf1xrnr1W12yolTLEH15JmNV372cqXrYUuqnY0QsaPtxeqJUGAOcGdVLllQ7easEznP8DFBvDdHATcmp2SHNQDUEWN6MCVPbMgY06NQVqAXxqjTAYSVh+6TRu6bofPmpYC3TZB003AgMBAAECggEBAJAcR2+PA3NBYUYHeFrqBRMS8uX8ZR19kjZ7IgoSLTFaQsP9opRylPSPXhrPVBKAE5leRQAHn4MCSlESwHvMfxo7KFjFTFAc6dffZZpipYQUOc9bGampwJh58/3e/pyBgVMG6J23CPf/HJQtNFSkjd/V9+ayb/9l2dUEL3bC0fAZ/dbx8HsxdLw8wn3fLlWLj68hOMqa2deCZe3JdSVsPbeWqkh56FFsMLug0Nd+Ar4TgRl9/jnhXF0JWiD0LmPUYLhboY7EfUBzN4w1iYbDi1P+3zvoOYsiVKAXox9GMhQ2VzOO2UcSTuizSza2e98mGpabl/GpKmCz+RDFjtkX6eECgYEA2MyCij65eO3aGIm3FUe93DULRBYTfX8qJQSJq2WOWA3mmQlEW6L3O2B5/lG2h+8WmN6iLEs9eHpgycGYp7vAqgrANEn16ACVcuyx0scFtrZfZ+kmHMzFfiUWxJjVYk/6YngsGVBLdw6ueM42C8TTP67X9tU5TdVGoGWuqEj4W98CgYEAwFqwprXOch5Pqk/RPbb49r0Ou03K/UbciWnWWKzUhFFNS8MdlQPoDvQZbMwHLeWsa2VhaKITK3x5biLQb3U+0GLOn6lTvEyrEUH+ucREyLgVYTRAvwBPtnvlrzpyxPk2HnslQjju8WrvvLLBMKWUjlTrTOzhaHT21gz3pHMiOakCgYEAhLmfaXdBITGshb054sNLDtdCkGpbgEcrzAHdLps769iGxkYQHXHFngpQZUwtTUcoNGqIKknd1jZFrv7gsD+XkgKG7PwimehRlkwmCX5ilxtLiVgJRzRt6+5U5AMVD90a0tHzXYP0z2yjj73fBJF5KtGl0a10KZxaYrQdm1UhB00CgYBZZgzx/k9rtHC8LAqIj1CYhHejT92G53c6Gkl3vyOqN4sgKhfGmSEySfrDGPRBPZxr8ZtbIPCd5mUdberH0osWGMYFaJI1UsCy7aQwvGpniz7MhZeN7dweaOjwDs8mgtjHQ96mL4XGCDhR0BZ/wIURvZ/6iaGdhbbu9unlsWj3uQKBgQCmZYdsbbZkd3ev6f8rwyvMz+DrCQyYpY44cegBYuJgrZiQnL2fJioeN7ixX0UM48SfwsZEIrzshP/LGAwnc2MdjxKUl4jLN8SEe0NAjXOnz9Zaw740+aOmLpXcLWdP4uM2gIhWsvW1tEkQZCXmm7c9s/RsU8Pmzv+YL3+fSijOzA==";
+        String alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmu8n/4yTHWbn7VOrNc9OsLtDL1bEQ8gC1dHkj8Wy5z0mkaOsjJRIG/28ze12M0V8jdCKuuDr5Z1OPKiqf+XO3ypguEh+mYUVMBM/cZodDFQfTY1TKLWjvQCuaqlA+QUTCK6f7T7stsgyQ1o9Jj0rXZDz6PM4QHSTzjrLIBaeqM5WIBvH+fy/X+QG5Utd+/UT0kc0JyvuKhZ65yVUd/C9VcwJJAPliRsAQNrqYterwAJ9zvw9tF11wj9W0XgJ8Ccu4x3gR1vrlLRJJo/OA97RmxPQ+5hSacWQZCUd1dwiBq+YCrKVHGTj14izRHXrLc0yBlRXo7tBOIqcy3IsvKVthQIDAQAB";
+        AlipayConfig alipayConfig = new AlipayConfig();
+        alipayConfig.setServerUrl("https://openapi.alipay.com/gateway.do");
+        alipayConfig.setAppId("2021004105665036");
+        alipayConfig.setPrivateKey(privateKey);
+        alipayConfig.setFormat("json");
+        alipayConfig.setAlipayPublicKey(alipayPublicKey);
+        alipayConfig.setCharset("UTF-8");
+        alipayConfig.setSignType("RSA2");
+        return alipayConfig;
     }
 
     // 属于平台的运营商 因为无需分账不冻结资金
@@ -164,56 +178,6 @@
      * 支付宝支付
      */
     public ResultUtil alipay(String smid, String body, String subject, String passbackParams, String outTradeNo, String amount, String notifyUrl) {
-////        //构造client
-//        CertAlipayRequest certAlipayRequest = new CertAlipayRequest ();
-//        //设置网关地址
-//        certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do");
-//        //设置应用Id
-//        certAlipayRequest.setAppId(aliAppid);
-//        //设置应用私钥
-//        certAlipayRequest.setPrivateKey(appPrivateKey);
-//        //设置请求格式,固定值json
-//        certAlipayRequest.setFormat("json");
-//        //设置字符集
-//        certAlipayRequest.setCharset("UTF-8");
-//        //设置签名类型
-//        certAlipayRequest.setSignType("RSA2");
-//        //设置应用公钥证书路径
-//        certAlipayRequest.setCertPath(app_cert_path);
-//        //设置支付宝公钥证书路径
-//        certAlipayRequest.setAlipayPublicCertPath(alipay_cert_path);
-//        //设置支付宝根证书路径
-//        certAlipayRequest.setRootCertPath(alipay_root_cert_path);
-//        //构造client
-//        AlipayClient alipayClient = null;
-//        try {
-//            alipayClient = new DefaultAlipayClient(certAlipayRequest);
-//        } catch (AlipayApiException e) {
-//            e.printStackTrace();
-//        }
-//        //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
-//        AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest ();
-//        //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。
-//        AlipayTradeAppPayModel model = new AlipayTradeAppPayModel ();
-//        model.setBody(body);
-//        model.setSubject (subject);
-//        model.setOutTradeNo (outTradeNo);
-//        model.setTimeoutExpress ("30m" );
-//        model.setTotalAmount (amount);
-//        model.setProductCode ( "QUICK_MSECURITY_PAY" );
-//        model.setPassbackParams(passbackParams);//自定义参数
-//        request.setBizModel ( model );
-//        request.setNotifyUrl (callbackPath + notifyUrl);
-//        try  {
-//            //这里和普通的接口调用不同,使用的是sdkExecute
-//            AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
-//            Map<String, String> map = new HashMap<>();
-//            map.put("orderString", response.getBody());
-//            System.out.println(map);//就是orderString 可以直接给客户端请求,无需再做处理。
-//            return ResultUtil.success(map);
-//        }  catch (AlipayApiException e ) {
-//            e.printStackTrace();
-//        }
 
 
         //实例化客户端
@@ -241,6 +205,11 @@
         SubMerchant subMerchant = new SubMerchant();
         subMerchant.setMerchantId(smid);
         model.setSubMerchant(subMerchant);
+        if (!smid.equals("2088330203191220")){
+            ExtendParams extendParams = new ExtendParams();
+            extendParams.setRoyaltyFreeze("true");
+            model.setExtendParams(extendParams);
+        }
         request.setBizModel(model);
         request.setNotifyUrl(callbackPath + notifyUrl);
 

--
Gitblit v1.7.1