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