无关风月
2 天以前 df4733091b30b0434a04dacd0e844663114d4cfe
修改支付宝支付和bug修改
28个文件已修改
1672 ■■■■ 已修改文件
cloud-server-account/src/main/java/com/dsh/account/controller/PaymentCallbackController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java 305 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/service/impl/VipPaymentServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/util/PayMoneyUtil.java 159 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/IWorldCupService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/impl/WorldCupServiceImpl.java 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/util/PayMoneyUtil.java 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java 137 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-competition/src/main/java/com/dsh/competition/util/PayMoneyUtil.java 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/mapper/DeptMapper.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/mapper/RoleMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/DeptController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/RoleController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/DeptServiceImpl.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/RoleServiceImpl.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/resources/mapper/DeptMapper.xml 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/resources/mapper/RoleMapper.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/tSite/TSite_add.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite_info.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/controller/GameController.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/util/PayMoneyUtil.java 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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");
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);
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();
@@ -1685,6 +1682,7 @@
    /**
     * 优惠券微信支付
     *
     * @param body
     * @param userCouponPayment
     * @return
@@ -1699,8 +1697,9 @@
        System.err.println("购买优惠券");
        if (coupon!=null){
            if (!couponStoreIds.isEmpty()&&!couponStoreIds.contains(-1)){
                Store store = storeClient.queryStoreById(couponStoreIds.get(0));
                        // 微信商户号
                        String s2 = storeClient.getmerchantNumberByOperatorId(couponStoreIds.get(0));
                String s2 = storeClient.getmerchantNumberByOperatorId(store.getOperatorId());
                    System.err.println("微信商户号"+s2);
                        if(!StringUtils.hasLength(s2)){
@@ -1730,7 +1729,10 @@
     * @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();
@@ -1741,10 +1743,7 @@
                    // 门店 向上查询运营商
                    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());
@@ -1753,95 +1752,87 @@
                        if(!StringUtils.hasLength(s2)){
                            return ResultUtil.error("运营商未配置支付宝商户号,获取支付失败!");
                        }
                        ResultUtil alipay = payMoneyUtil.alipay(s2, body, "",String.valueOf(userCouponPayment.getId()), code, cash.toString(),
                    smidRes = s2;
                }
            }
        }
         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;
                    }
            }else {
                // 平台发布
                ResultUtil alipay = payMoneyUtil.alipay(smid, body, "",String.valueOf(userCouponPayment.getId()), code, cash.toString(),
                        "/base/coupon/aliPaymentCouponCallback");
                return alipay;
            }
        }
//        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("支付失败");
    }
    /**
     * 支付回调
     *
     * @param code
     * @param orderNumber
     * @return
@@ -1903,6 +1894,8 @@
    }
    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);
        List<Integer> integers = mcsClient.queryPointMerStoreIds(pointsMerchandise.getId());
@@ -1912,10 +1905,7 @@
                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(),
                        smidRes = s2;
                    }
                }
                break;
        }
        alipay = payMoneyUtil.alipay(smidRes, name, name, String.valueOf(returnId), code, cash.toString(),
                                    "/base/pointMer/exchangeGoodPaymentAliCallback");
                            return alipay;
        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;
                        }
                    }else{
                    // 平台门票
                    ResultUtil alipay = payMoneyUtil.alipay(smid, name, name, String.valueOf(returnId), code, cash.toString(),
                            "/base/pointMer/exchangeGoodPaymentAliCallback");
                    return alipay;
                }
                }
        return ResultUtil.error("获取支付失败!");
//                            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 {
@@ -2161,7 +2207,7 @@
    @Override
    public ResultUtil exchangeAddPaymentCallback(String code, String orderNumber) {
    public ResultUtil exchangeAddPaymentCallback(String code, String orderNumber) throws AlipayApiException {
        System.err.println("进入回调"+code);
        UserPointsMerchandise userPointsMerchandise = mcClient.queryUserPointMerchaseByCode(code).get(0);
        System.err.println("商品"+userPointsMerchandise);
@@ -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();
    }
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)) {
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)) {
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();
        }
        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) {
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;
    /**
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(),
                        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();
    }
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();
        }
        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;
    }
    /**
     * 微信统一下单
     *
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 {
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();
        }
        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) {
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);
@@ -530,8 +525,6 @@
    @Autowired
    private ALiSendSms aLiSendSms;
    @Override
@@ -943,6 +936,7 @@
                    "/base/coursePackage/wechatRegisteredCoursesCallback1",request.toString(),"");
        }
    }
    private String smid = "2088330203191220";//平台支付宝商户号
//    public static void main(String[] args) {
@@ -981,75 +975,61 @@
        }
        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;
    }
@@ -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)) {
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;
    }
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();
        }
        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 {
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);
    /**
     * 获取所有部门列表
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);
    /**
     * 获取角色列表树
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<>();
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));
    }
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";
    }
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);
    }
}
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
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>
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,
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>
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("请输入公告内容")
            Feng.info("请输入场地说明")
        return;
    }
    }
    data.introduce= introduce;
    var goodImgs = TSiteInfo.goodsPicArray;
    if(goodImgs.length==0){
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)) {
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)) {
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);