From b716afd262ff60ff1db0b1e7c95800e7ad2b7202 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期一, 07 七月 2025 11:07:37 +0800
Subject: [PATCH] 支付版本更新 根据资金流向使用V2或V3服务商版本支付

---
 cloud-server-other/src/main/java/com/dsh/other/controller/GameController.java |  186 +++++++++++++++-------------------------------
 1 files changed, 62 insertions(+), 124 deletions(-)

diff --git a/cloud-server-other/src/main/java/com/dsh/other/controller/GameController.java b/cloud-server-other/src/main/java/com/dsh/other/controller/GameController.java
index cf6861a..0562ff8 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/controller/GameController.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/controller/GameController.java
@@ -206,14 +206,6 @@
             }
             Site site = siteService.getById(spaceId);
             Store store = storeService.getById(site.getStoreId());
-
-            // 是否分账 0否1是
-            int isFenZhang= 1;
-            String merchantNumber = "";
-            if (store.getOperatorId()==null || store.getOperatorId()==0){
-                // 平台
-                isFenZhang = 0;
-            }
             //判断当前用户是否是员工
             AppUser appUser1 = appUserClient.queryAppUser(uid);
             List<User> one = userService.list(new QueryWrapper<User>().eq("phone", appUser1.getPhone()).eq("status", 1));
@@ -252,7 +244,7 @@
                         return ResultUtil.error("运营商未配置微信商户号,获取支付失败!");
                     }
                     return payMoneyUtil.weixinpayV3(smidVx,"游戏支付"
-                            ,code,"/base/huimin/callBack/wechatPaymentGameCallback1",
+                            ,code,"/base/game/wechatPaymentGameCallback1",
                           config.getCash().toString(),params);
                 }
 
@@ -264,9 +256,10 @@
                 gameRecordService.updateById(tGameRecord);
                 String smid1="";
                 String params = uid + "_" + gameId + "_" + spaceId + "_" + sutuId+"_"+code+"_"+ configId + "_" + gameType;
-                // 判断这个课包属于哪个门店 属于哪个运营商 根据运营商 id 获取对应的商户号
+                // 判断属于哪个运营商 根据运营商 id 获取对应的商户号
                 TGame game = gameService.getOne(new QueryWrapper<TGame>().eq("blue", sutuId).or().eq("red", sutuId));
-                Integer operationId = game.getOperationId();
+                Store byId = storeService.getById(game.getStoreId());
+                Integer operationId = byId.getOperatorId();
                 if (operationId==0){
                     // 是平台的
                     smid1 = smid;
@@ -277,75 +270,64 @@
 
                 ResultUtil alipay = payMoneyUtil.alipay(smid1,"游戏支付", "游戏支付", params, code, config.getCash().toString(),
                         "/base/game/aliPaymentGameCallback");
-//                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);
-//                                    List<TGameRecord> list = gameRecordService.list(new QueryWrapper<TGameRecord>().eq("number", code).eq("payType", 2));
-//                                    TGameRecord one = list.get(0);
-//                                    if (one.getStatus() == 1) {
-//                                        break;
-//                                    }
-//                                    AlipayTradeQueryResponse resultUtil = payMoneyUtil.queryALIOrder(code);
-//                                    if (resultUtil.getCode().equals("10000") && one.getStatus() == 0) {
-//                                        /**
-//                                         * WAIT_BUYER_PAY(交易创建,等待买家付款)、
-//                                         * TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、
-//                                         * TRADE_SUCCESS(交易支付成功)、
-//                                         * TRADE_FINISHED(交易结束,不可退款)
-//                                         */
-//                                        String tradeNo = resultUtil.getTradeNo();
-//                                        String s = resultUtil.getTradeStatus();
-//                                        if ("TRADE_CLOSED".equals(s) || "TRADE_FINISHED".equals(s) || num == 10) {
-//                                            break;
-//                                        }
-//                                        if ("TRADE_SUCCESS".equals(s)) {
-//                                            for (TGameRecord gameRecord : list) {
-//                                                gameRecord.setStatus(1);
-//                                                gameRecord.setOrderNo(tradeNo);
-//
-//                                                CourseCounsum courseCounsum = new CourseCounsum();
-//                                                courseCounsum.setChangeType(3);
-//                                                courseCounsum.setInsertTime(new Date());
-//                                                courseCounsum.setReason("智慧球场;" + config.getCash());
-//                                                courseCounsum.setAppUserId(uid);
-//                                                courseRecordClient.save(courseCounsum);
-//
-//                                            }
-//                                            gameRecordService.updateBatchById(list);
-//                                            Integer integer = startGame(uid, gameType, gameId, spaceId, sutuId);
-//                                            // 判断这个课包属于哪个门店 属于哪个运营商 根据运营商 id 获取对应的商户号
-//                                            TGame game = gameService.getById(gameId);
-//                                            String smid2="";
-//                                            Integer operationId = game.getOperationId();
-//                                            if (operationId==0){
-//                                                // 是平台的
-//                                                smid2 = smid;
-//                                            }else{
-//                                                String smidByOperatorId = siteService.getSMIDByOperatorId(operationId);
-//                                                smid2 = smidByOperatorId;
-//                                            }
-//                                            payMoneyUtil.confirm(smid2,code,tradeNo,config.getCash().toString());
-//                                            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);
+                                    List<TGameRecord> list = gameRecordService.list(new QueryWrapper<TGameRecord>().eq("number", code).eq("payType", 2));
+                                    TGameRecord one = list.get(0);
+                                    if (one.getStatus() == 1) {
+                                        break;
+                                    }
+                                    AlipayTradeQueryResponse resultUtil = payMoneyUtil.queryALIOrder(code);
+                                    if (resultUtil.getCode().equals("10000") && one.getStatus() == 0) {
+                                        /**
+                                         * WAIT_BUYER_PAY(交易创建,等待买家付款)、
+                                         * TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、
+                                         * TRADE_SUCCESS(交易支付成功)、
+                                         * TRADE_FINISHED(交易结束,不可退款)
+                                         */
+                                        String tradeNo = resultUtil.getTradeNo();
+                                        String s = resultUtil.getTradeStatus();
+                                        if ("TRADE_CLOSED".equals(s) || "TRADE_FINISHED".equals(s) || num == 10) {
+                                            break;
+                                        }
+                                        if ("TRADE_SUCCESS".equals(s)) {
+                                            for (TGameRecord gameRecord : list) {
+                                                gameRecord.setStatus(1);
+                                                gameRecord.setOrderNo(tradeNo);
+
+                                                CourseCounsum courseCounsum = new CourseCounsum();
+                                                courseCounsum.setChangeType(3);
+                                                courseCounsum.setInsertTime(new Date());
+                                                courseCounsum.setReason("智慧球场;" + config.getCash());
+                                                courseCounsum.setAppUserId(uid);
+                                                courseRecordClient.save(courseCounsum);
+
+                                            }
+                                            gameRecordService.updateBatchById(list);
+                                            Integer integer = startGame(uid, gameType, gameId, spaceId, sutuId);
+
+                                            break;
+                                        }
+                                        if ("WAIT_BUYER_PAY".equals(s)) {
+                                            num++;
+                                        }
+                                    }
+                                }
+                            } catch (Exception e) {
+                                e.printStackTrace();
+                            }
+                        }
+                    }).start();
+                }
                 return alipay;
             } else if (type == 3) {
                 tGameRecord.setMoney(config.getPlayCoin());
@@ -481,50 +463,6 @@
             Integer integer = startGame(Integer.valueOf(s[0]), Integer.valueOf(s[6]), Integer.valueOf(s[1]), Integer.valueOf(s[2]), Integer.valueOf(s[3]));
             TGameRecord one = gameRecordService.getOne(new QueryWrapper<TGameRecord>().eq("number", out_trade_no).eq("payType", 1));
             System.err.println("游戏支付记录"+one);
-//            if (one!=null){
-//                Integer gameId = one.getGameId();
-//                Site byId1 = siteService.getById(one.getSiteId());
-//                Store byId = storeService.getById(byId1.getStoreId());
-//                if (byId!=null){
-//                    if (byId.getOperatorId()!=null && byId.getOperatorId()!=0){
-//                        // 休眠两分钟后再调用分账接口 避免提示订单正在处理中
-//                        Thread.sleep(120000);
-//                        // 根据运营商id获取对应运营商分账比例 返回格式: 微信分账比例,支付宝分账比例
-//                        OperatorUser operatorId = operatorUserService.getOne(
-//                                new QueryWrapper<OperatorUser>().eq("operatorId",byId.getOperatorId())
-//                        );
-//                        if (operatorId.getWechatProportion() == null){
-//                            operatorId.setWechatProportion("0");
-//                        }
-//                        if (operatorId.getAlipayProportion() == null){
-//                            operatorId.setAlipayProportion("0");
-//                        }
-//                        String proportion=  operatorId.getWechatProportion()+","+operatorId.getAlipayProportion();
-//                        String[] split = proportion.split(",");
-//                        String s1 = split[0];
-//                        if (!s1.equals("未设置")){
-//                            BigDecimal bigDecimal = new BigDecimal(s1);
-//                            // 分账比例
-//                            BigDecimal bigDecimal1 = bigDecimal.divide(new BigDecimal(100)).setScale(2);
-//                            // 微信商户号
-//                            String s2 =siteService.getmerchantNumberByOperatorId(byId.getOperatorId());
-//                            String nonce_str = UUIDUtil.getRandomCode(16);
-//
-//                            ResultUtil fenzhang = payMoneyUtil.fenzhang(transaction_id, one.getMoney().multiply(bigDecimal1), s2,nonce_str,"玩游戏分账");
-//                            if (!fenzhang.getCode().equals(200)){
-//                                System.err.println("分账失败 原因是:"+fenzhang.getMsg());
-//                            }else{
-//                                one.setFenzhangNo(fenzhang.getData().toString());
-//                                one.setFenzhangOrderNo(nonce_str);
-//                                one.setFenzhangAmount(one.getMoney().multiply(bigDecimal1));
-//                                gameRecordService.updateById(one);
-//                            }
-//                        }
-//                    }
-//                }
-//
-//            }
-
             PrintWriter out = null;
             try {
                 out = response.getWriter();

--
Gitblit v1.7.1