From 5dc40fcd64b0513150f1d8335ab849e6d8cdc28e Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期五, 04 七月 2025 19:42:49 +0800 Subject: [PATCH] 支付版本更新 根据资金流向使用V2或V3服务商版本支付 --- cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java | 742 +++++++++++++++++++------------------------------------- 1 files changed, 259 insertions(+), 483 deletions(-) diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java index 02c7717..4242951 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java +++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java @@ -48,6 +48,7 @@ import com.dsh.account.service.UserIntegralChangesService; import com.dsh.account.util.*; import com.dsh.account.util.akeylogin.Md5Util; +import com.dsh.account.util.wx.WxV3PayConfig; import com.dsh.account.vo.GroupCityInfoVO; import com.dsh.account.vo.entity.DayData; import com.dsh.account.vo.entity.MonthData; @@ -1407,12 +1408,7 @@ userCouponPaymentClient.addUserCouponPayment(userCouponPayment); try { if(exchangeType.getPayType() == 1){ - String temp = "0"; - if (coupon.getPublisherType()!=null && coupon.getPublisherType() != 2){ - // 做分账 - temp = "1"; - } - return weChatPaymentCoupon("购买优惠券-"+temp, userCouponPayment); + return weChatPaymentCoupon("购买优惠券", userCouponPayment); } if(exchangeType.getPayType() == 2){ return aliPaymentCoupon("购买优惠券", userCouponPayment); @@ -1644,9 +1640,9 @@ } case 2: if (merchandise.getType() == 2) { - return AlipayPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code, returnId); + return AlipayPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code, merchandise.getId()); } else { - return AlipayPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(goodsNums)), code, returnId); + return AlipayPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(goodsNums)), code, merchandise.getId()); } default: break; @@ -1666,9 +1662,9 @@ } case 2: if (merchandise.getType() == 2) { - return AlipayPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code, returnId); + return AlipayPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code, merchandise.getId()); } else { - return AlipayPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(goodsNums)), code, returnId); + return AlipayPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(goodsNums)), code, merchandise.getId()); } default: break; @@ -1687,7 +1683,6 @@ } - /** * 优惠券微信支付 * @param body @@ -1700,82 +1695,31 @@ Double cash = userCouponPayment.getCash(); Integer couponId = userCouponPayment.getCouponId(); Coupon coupon = userConponClient.queryCouponById(couponId); - String temp ="0"; - if (coupon.getPublisherType()!=null&&coupon.getPublisherType()!=2){ - temp = "1"; - } + List<Integer> couponStoreIds = userConponClient.getCouponStoreIds(couponId); System.err.println("购买优惠券"); - ResultUtil weixinpay = payMoneyUtil.weixinpay(body+"-"+temp, "", code, cash.toString(), - "/base/coupon/weChatPaymentCouponCallback", "APP", ""); - if (weixinpay.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); - UserCouponPayment userCouponPayment1 = userCouponPaymentClient.getUserCouponPayment(code); - if (userCouponPayment1.getStatus() == 2) { + if (coupon!=null){ + if (!couponStoreIds.isEmpty()&&!couponStoreIds.contains(-1)){ + // 微信商户号 + String s2 = storeClient.getmerchantNumberByOperatorId(coupon.getCityManagerId()); + System.err.println("微信商户号"+s2); - break; - } - ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryWXOrder(code, ""); - if (resultUtil.getCode() == 200 && userCouponPayment1.getStatus() == 1) { - /** - * SUCCESS—支付成功, - * REFUND—转入退款, - * NOTPAY—未支付, - * CLOSED—已关闭, - * REVOKED—已撤销(刷卡支付), - * USERPAYING--用户支付中, - * PAYERROR--支付失败(其他原因,如银行返回失败) - */ - Map<String, String> data1 = resultUtil.getData(); - String s = data1.get("trade_state"); - String transaction_id = data1.get("transaction_id"); - if ("REFUND".equals(s) || "CLOSED".equals(s) || "REVOKED".equals(s) || "PAYERROR".equals(s) || num == 10) { - //有待支付的订单,这里不处理 - userCouponPayment1.setStatus(-1); - userCouponPaymentClient.updateUserCouponPayment(userCouponPayment1); - break; - } - if ("SUCCESS".equals(s)) { - userCouponPayment1.setStatus(2); - userCouponPayment1.setPaymentTime(new Date()); - userCouponPayment1.setOrderNumber(transaction_id); - 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); - } - break; - } - if ("USERPAYING".equals(s) || "NOTPAY".equals(s)) { - num++; - } - } + if(!StringUtils.hasLength(s2)){ + return ResultUtil.error("运营商未配置微信商户号,获取支付失败!"); } - } catch (Exception e) { - e.printStackTrace(); - } - } - }).start(); + ResultUtil weixinpay = payMoneyUtil.weixinpayV3(s2,"购买优惠券", + code,"/base/coupon/weChatPaymentCouponCallback1", + cash.toString()); + return weixinpay; + + }else{ + // 平台发布 + ResultUtil weixinpay = payMoneyUtil.weixinpay(body, "", code, cash.toString(), + "/base/coupon/weChatPaymentCouponCallback", "APP", ""); + return weixinpay; + } } - return weixinpay; + + return ResultUtil.error("支付失败!"); } @@ -1789,81 +1733,111 @@ public ResultUtil aliPaymentCoupon(String body, UserCouponPayment userCouponPayment) throws Exception { String code = userCouponPayment.getCode(); Double cash = userCouponPayment.getCash(); + Integer couponId = userCouponPayment.getCouponId(); + Coupon coupon = userConponClient.queryCouponById(couponId); + List<Integer> couponStoreIds = userConponClient.getCouponStoreIds(couponId); + if (coupon!=null){ + if (!couponStoreIds.isEmpty()&&!couponStoreIds.contains(-1)){ + // 门店 向上查询运营商 + Store store = storeClient.queryStoreById(couponStoreIds.get(0)); + if (store.getOperatorId()==null || store.getOperatorId()==0){ + // 平台 + ResultUtil alipay = payMoneyUtil.alipay(smid, body, "",String.valueOf(userCouponPayment.getId()), code, cash.toString(), + "/base/coupon/aliPaymentCouponCallback"); + return alipay; + }else{ + // 支付宝商户号 + String s2 = storeClient.getmerchantNumberAliByOperatorId(store.getOperatorId()); + System.err.println("支付宝商户号"+s2); - 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++; - } - } + if(!StringUtils.hasLength(s2)){ + return ResultUtil.error("运营商未配置支付宝商户号,获取支付失败!"); } - } catch (Exception e) { - e.printStackTrace(); + ResultUtil alipay = payMoneyUtil.alipay(s2, body, "",String.valueOf(userCouponPayment.getId()), code, cash.toString(), + "/base/coupon/aliPaymentCouponCallback"); + return alipay; } - } - }).start(); + }else { + // 平台发布 + ResultUtil alipay = payMoneyUtil.alipay(smid, body, "",String.valueOf(userCouponPayment.getId()), code, cash.toString(), + "/base/coupon/aliPaymentCouponCallback"); + return alipay; + } } - 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("支付失败"); } /** @@ -1902,67 +1876,6 @@ } Coupon coupon = ucponClient.queryCouponById(userCouponPayment1.getCouponId()); // 创建一个两分钟后执行的线程 - new Thread(() -> { - try { - Thread.sleep(120000); - if (coupon!=null){ - if (coupon.getPublisherType()!=null&&coupon.getPublisherType()!=2){ - if (coupon.getPublisherType() == 1){ - System.err.println("进入分账逻辑"); - // 根据运营商id获取对应运营商分账比例 返回格式: 微信分账比例,支付宝分账比例 - String proportionByOperatorId = storeClient.getProportionByOperatorId(coupon.getCityManagerId()); - System.err.println("分账比例:"+proportionByOperatorId); - String[] split = proportionByOperatorId.split(","); - String s1 = split[0]; - if (!s1.equals("未设置")){ - BigDecimal bigDecimal = new BigDecimal(s1); - // 分账比例 - BigDecimal bigDecimal1 = bigDecimal.divide(new BigDecimal(100)).setScale(2); - // 微信商户号 - String s2 = storeClient.getmerchantNumberByOperatorId(coupon.getCityManagerId()); - System.err.println("商户号"+s2); - System.err.println("分账比例"+bigDecimal1); - System.err.println("分账金额"+coupon.getCash().multiply(bigDecimal1)); - ResultUtil fenzhang = payMoneyUtil.fenzhang(userCouponPayment1.getOrderNumber(), coupon.getCash().multiply(bigDecimal1), s2,""); - if (!fenzhang.getCode().equals(200)){ - System.err.println("分账失败 原因是:"+fenzhang.getMsg()); - } - - } - } else if (coupon.getPublisherType() == 3){ - // 门店 向上查询运营商 - Store store = storeClient.queryStoreById(coupon.getCityManagerId()); - if (store.getOperatorId()==null || store.getOperatorId()==0){ - // 平台不分账 - }else{ - // 根据运营商id获取对应运营商分账比例 返回格式: 微信分账比例,支付宝分账比例 - String proportionByOperatorId = storeClient.getProportionByOperatorId(store.getOperatorId()); - String[] split = proportionByOperatorId.split(","); - String s1 = split[0]; - if (!s1.equals("未设置")){ - BigDecimal bigDecimal = new BigDecimal(s1); - // 分账比例 - BigDecimal bigDecimal1 = bigDecimal.divide(new BigDecimal(100)).setScale(2); - // 微信商户号 - String s2 = storeClient.getmerchantNumberByOperatorId(store.getOperatorId()); - ResultUtil fenzhang = payMoneyUtil.fenzhang(userCouponPayment1.getOrderNumber(), coupon.getCash().multiply(bigDecimal1), s2,"购买优惠券分账"); - if (!fenzhang.getCode().equals(200)){ - System.err.println("分账失败 原因是:"+fenzhang.getMsg()); - }else{ - System.err.println("分账成功"); - return; - } - - } - } - } - } - } - }catch (Exception e){ - e.printStackTrace(); - } - }).start(); - return ResultUtil.success(); } @@ -1989,80 +1902,85 @@ } } - private ResultUtil AlipayPayment(Integer type, BigDecimal cash, String code, Long returnId) { + private ResultUtil AlipayPayment(Integer type, BigDecimal cash, String code, Integer returnId) { + PointsMerchandise pointsMerchandise = mcClient.selectPointsMerchandiseById(returnId); + System.err.println("查询积分商品"+pointsMerchandise); + List<Integer> integers = mcsClient.queryPointMerStoreIds(pointsMerchandise.getId()); String name = (type == 1 ? "购买实体商品" : type == 2 ? "报名运动营": type == 3 ? "购买门票" : "购买优惠券"); - ResultUtil alipay = payMoneyUtil.alipay(smid,name, name, String.valueOf(returnId), code, cash.toString(), - "/base/pointMer/exchangeGoodPaymentAliCallback"); - if (alipay.getCode() == 200) { - new Thread(new Runnable() { - @Override - public void run() { - try { - int num = 1; - int wait = 0; - while (num <= 10) { - int min = 5000; - wait += (min * num); - Thread.sleep(wait); - System.out.println("code:" + code); - List<UserPointsMerchandise> userPointsMerchandises = mcClient.queryUserPointMerchaseByCode(code); - System.out.println("list-----" + userPointsMerchandises); - if (userPointsMerchandises.get(0).getPayStatus() == 2) { - break; - } -// ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryALIOrder(code); - AlipayTradeQueryResponse resultUtil = payMoneyUtil.queryALIOrder(code); - if (resultUtil.getCode().equals("10000") && userPointsMerchandises.get(0).getPayStatus() == 1) { - /** - * WAIT_BUYER_PAY(交易创建,等待买家付款)、 - * TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、 - * TRADE_SUCCESS(交易支付成功)、 - * TRADE_FINISHED(交易结束,不可退款) - */ -// Map<String, String> data1 = resultUtil.getData(); -// String s = data1.get("tradeStatus"); -// String tradeNo = data1.get("tradeNo"); + switch (type) { + case 1: + if (!integers.isEmpty()) { + Store store1 = storeClient.queryStoreById(integers.get(0)); + if (store1.getOperatorId() == null || store1.getOperatorId() == 0) { + // 平台门票 + ResultUtil alipay = payMoneyUtil.alipay(smid, name, name, String.valueOf(returnId), code, cash.toString(), + "/base/pointMer/exchangeGoodPaymentAliCallback"); + return alipay; + } else { + String s2 = storeClient.getmerchantNumberAliByOperatorId(store1.getOperatorId()); + System.err.println("支付宝商户号" + s2); - 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); - } - moneyOut(tradeNo, tradeNo); - break; - } - if ("TRADE_FINISHED".equals(tradeStatus)) { - // todo 资金结算 - payMoneyUtil.confirm(smid,code,tradeNo,cash.toString()); - 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++; - } - } + if (!StringUtils.hasLength(s2)) { + return ResultUtil.error("运营商未配置支付宝商户号,获取支付失败!"); } - } catch (Exception e) { - mcClient.deletePaymentRecord(code); - e.printStackTrace(); + ResultUtil alipay = payMoneyUtil.alipay(s2, name, name, String.valueOf(returnId), code, cash.toString(), + "/base/pointMer/exchangeGoodPaymentAliCallback"); + return alipay; } + }else{ + // 平台门票 + ResultUtil alipay = payMoneyUtil.alipay(smid, name, name, String.valueOf(returnId), code, cash.toString(), + "/base/pointMer/exchangeGoodPaymentAliCallback"); + return alipay; + } - }).start(); - } - return alipay; + 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); + + 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; + } + case 3: + if (!integers.isEmpty()) { + Store store1 = storeClient.queryStoreById(integers.get(0)); + if (store1.getOperatorId() == null || store1.getOperatorId() == 0) { + // 平台门票 + ResultUtil alipay = payMoneyUtil.alipay(smid, name, name, String.valueOf(returnId), code, cash.toString(), + "/base/pointMer/exchangeGoodPaymentAliCallback"); + return alipay; + } else { + String s2 = storeClient.getmerchantNumberAliByOperatorId(store1.getOperatorId()); + System.err.println("支付宝商户号" + s2); + if (!StringUtils.hasLength(s2)) { + return ResultUtil.error("运营商未配置支付宝商户号,获取支付失败!"); + } + ResultUtil alipay = payMoneyUtil.alipay(s2, name, name, String.valueOf(returnId), code, cash.toString(), + "/base/pointMer/exchangeGoodPaymentAliCallback"); + return alipay; + } + }else{ + // 平台门票 + ResultUtil alipay = payMoneyUtil.alipay(smid, name, name, String.valueOf(returnId), code, cash.toString(), + "/base/pointMer/exchangeGoodPaymentAliCallback"); + return alipay; + } + } + return ResultUtil.error("获取支付失败!"); + } public void moneyOut(String outNum, String tradeNo) throws AlipayApiException { @@ -2163,119 +2081,84 @@ PointsMerchandise pointsMerchandise = mcClient.selectPointsMerchandiseById(id); System.err.println("查询积分商品"+pointsMerchandise); - // 分账表示 0否1是 - String temp = "0"; + List<Integer> integers = mcsClient.queryPointMerStoreIds(pointsMerchandise.getId()); + switch (type){ case 1: - temp = "0"; + if (!integers.isEmpty()){ + Store store1 = storeClient.queryStoreById(integers.get(0)); + if (store1.getOperatorId() ==null || store1.getOperatorId() == 0){ + // 平台门票 + ResultUtil weixinpay = payMoneyUtil.weixinpay(name, "", code, cash.toString(), + "/base/pointMer/exchangeGoodPaymentWeChatCallback", "APP", ""); + return weixinpay; + }else{ + String s2 = storeClient.getmerchantNumberByOperatorId(store1.getOperatorId()); + System.err.println("微信商户号"+s2); + + if(!StringUtils.hasLength(s2)){ + return ResultUtil.error("运营商未配置微信商户号,获取支付失败!"); + } + ResultUtil weixinpay = payMoneyUtil.weixinpayV3(s2,name, code, + "/base/pointMer/exchangeGoodPaymentWeChatCallback1", + cash.toString()); + return weixinpay; + } + } break; case 2: // 判断课包属于平台还是运营商 CoursePackage coursePackage = cpageClient.queryCoursePackageById(pointsMerchandise.getCoursePackageId()); Store store = storeClient.queryStoreById(coursePackage.getStoreId()); if (store.getOperatorId() ==null || store.getOperatorId() == 0){ - // 平台课包 不分账 + // 平台课包 + ResultUtil weixinpay = payMoneyUtil.weixinpay(name, "", code, cash.toString(), + "/base/pointMer/exchangeGoodPaymentWeChatCallback", "APP", ""); + return weixinpay; }else{ - temp = "1"; + String s2 = storeClient.getmerchantNumberByOperatorId(store.getOperatorId()); + System.err.println("微信商户号"+s2); + + if(!StringUtils.hasLength(s2)){ + return ResultUtil.error("运营商未配置微信商户号,获取支付失败!"); + } + ResultUtil weixinpay = payMoneyUtil.weixinpayV3(s2,name, code, + "/base/pointMer/exchangeGoodPaymentWeChatCallback1", + cash.toString()); + return weixinpay; } - break; case 3: - List<Integer> integers = mcsClient.queryPointMerStoreIds(pointsMerchandise.getId()); if (!integers.isEmpty()){ Store store1 = storeClient.queryStoreById(integers.get(0)); if (store1.getOperatorId() ==null || store1.getOperatorId() == 0){ - // 平台门票 不分账 + // 平台门票 + ResultUtil weixinpay = payMoneyUtil.weixinpay(name, "", code, cash.toString(), + "/base/pointMer/exchangeGoodPaymentWeChatCallback", "APP", ""); + return weixinpay; }else{ - temp = "1"; - } - } - // 查询门票指定的门店 属于平台还是运营商 - break; - } - System.err.println("支付"); - ResultUtil weixinpay = payMoneyUtil.weixinpay(name+"-"+temp, "", code, cash.toString(), - "/base/pointMer/exchangeGoodPaymentWeChatCallback", "APP", ""); - System.err.println("提交支付"+weixinpay); - if (weixinpay.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); - UserPointsMerchandise userPointsMerchandise = mcClient.queryUserPointMerchaseByCode(code).get(0); - if (userPointsMerchandise.getPayStatus() == 2) { + String s2 = storeClient.getmerchantNumberByOperatorId(store1.getOperatorId()); + System.err.println("微信商户号"+s2); - - break; - } - ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryWXOrder(code, ""); - if (resultUtil.getCode() == 200 && userPointsMerchandise.getPayStatus() == 1) { - /** - * SUCCESS—支付成功, - * REFUND—转入退款, - * NOTPAY—未支付, - * CLOSED—已关闭, - * REVOKED—已撤销(刷卡支付), - * USERPAYING--用户支付中, - * PAYERROR--支付失败(其他原因,如银行返回失败) - */ - Map<String, String> data1 = resultUtil.getData(); - String s = data1.get("trade_state"); - String transaction_id = data1.get("transaction_id"); - if ("REFUND".equals(s) || "CLOSED".equals(s) || "REVOKED".equals(s) || "PAYERROR".equals(s) || num == 10) { - mcClient.deletePaymentRecord(code); - break; - } - if ("SUCCESS".equals(s)) { - userPointsMerchandise.setPayStatus(2); - userPointsMerchandise.setPaymentTime(new Date()); - userPointsMerchandise.setOrderNumber(transaction_id); - userPointsMerchandise.setCashPayType(1); - mcClient.updateDetailsUserPointMercase(userPointsMerchandise); - - TAppUser tAppUser = baseMapper.selectById(userPointsMerchandise.getUserId()); - dealAppUserIntegral(userPointsMerchandise.getUserId(), tAppUser, userPointsMerchandise.getIntegral()); - - //课程 - if(type == 2){ - CoursePackageOrder coursePackageOrder1 = paymentClient.getCoursePackageOrderByCode(code); - if(null != coursePackageOrder1){ - coursePackageOrder1.setPayStatus(2); - coursePackageOrder1.setOrderNumber(transaction_id); - coursePackageOrder1.setAppUserId(null); - paymentClient.updateCoursePackageOrder(coursePackageOrder1); - - GetCoursePackagePaymentConfig getCoursePackagePaymentConfig = new GetCoursePackagePaymentConfig(); - getCoursePackagePaymentConfig.setCoursePackageId(coursePackageOrder1.getCoursePackageId()); - getCoursePackagePaymentConfig.setClassHours(coursePackageOrder1.getClassHours()); - CoursePackagePaymentConfig coursePackagePaymentConfig = paymentClient.getCoursePackagePaymentConfig(getCoursePackagePaymentConfig); - - AddCoursePackageOrderStudent addCoursePackageOrderStudent = new AddCoursePackageOrderStudent(); - addCoursePackageOrderStudent.setCoursePackageOrderId(coursePackageOrder1.getId()); - addCoursePackageOrderStudent.setCoursePackagePaymentConfig(coursePackagePaymentConfig); - paymentClient.addCoursePackageOrderStudent(addCoursePackageOrderStudent); - } - } - break; - } - if ("USERPAYING".equals(s) || "NOTPAY".equals(s)) { - num++; - } - } + if(!StringUtils.hasLength(s2)){ + return ResultUtil.error("运营商未配置微信商户号,获取支付失败!"); } - } catch (Exception e) { - e.printStackTrace(); + ResultUtil weixinpay = payMoneyUtil.weixinpayV3(s2,name, code, + "/base/pointMer/exchangeGoodPaymentWeChatCallback1", + cash.toString()); + return weixinpay; } + }else{ + // 平台门票 + ResultUtil weixinpay = payMoneyUtil.weixinpay(name, "", code, cash.toString(), + "/base/pointMer/exchangeGoodPaymentWeChatCallback", "APP", ""); + return weixinpay; + } - }).start(); } - return weixinpay; + + return ResultUtil.error("支付失败"); } + @Override public ResultUtil exchangeAddPaymentCallback(String code, String orderNumber) { @@ -2316,113 +2199,6 @@ paymentClient.addCoursePackageOrderStudent(addCoursePackageOrderStudent); } } - // 创建一个2分钟后执行的线程 - new Thread(() -> { - try { - // 休眠两分钟后再调用分账接口 避免提示订单正在处理中 - Thread.sleep(1000 * 60 * 2); - // 分账表示 0否1是 - String temp = "0"; - // 运营商id - Integer operatorId = 0; - System.err.println("商品"+pointsMerchandise); - switch (pointsMerchandise.getType()){ - case 1: - temp = "0"; - break; - case 2: - // 判断课包属于平台还是运营商 - CoursePackage coursePackage = cpageClient.queryCoursePackageById(pointsMerchandise.getCoursePackageId()); - Store store = storeClient.queryStoreById(coursePackage.getStoreId()); - if (store.getOperatorId() ==null || store.getOperatorId() == 0){ - // 平台课包 不分账 - }else{ - temp = "1"; - operatorId = store.getOperatorId(); - } - break; - case 3: - List<Integer> integers = mcsClient.queryPointMerStoreIds(pointsMerchandise.getId()); - System.err.println("门店ids"+integers); - if (!integers.isEmpty()){ - Store store1 = storeClient.queryStoreById(integers.get(0)); - if (store1.getOperatorId() ==null || store1.getOperatorId() == 0){ - // 平台门票 不分账 - }else{ - temp = "1"; - operatorId = store1.getOperatorId(); - } - } - // 查询门票指定的门店 属于平台还是运营商 - break; - } - System.err.println("运营商id"+operatorId); - if (operatorId != 0) { - //课程 - if(pointsMerchandise.getType() == 2){ - //课程 - CoursePackageOrder coursePackageOrder1 = paymentClient.getCoursePackageOrderByCode(code); - if(null != coursePackageOrder1){ - coursePackageOrder1.setPayStatus(2); - coursePackageOrder1.setOrderNumber(orderNumber); - coursePackageOrder1.setAppUserId(null); - paymentClient.updateCoursePackageOrder(coursePackageOrder1); - - GetCoursePackagePaymentConfig getCoursePackagePaymentConfig = new GetCoursePackagePaymentConfig(); - getCoursePackagePaymentConfig.setCoursePackageId(coursePackageOrder1.getCoursePackageId()); - getCoursePackagePaymentConfig.setClassHours(coursePackageOrder1.getClassHours()); - CoursePackagePaymentConfig coursePackagePaymentConfig = paymentClient.getCoursePackagePaymentConfig(getCoursePackagePaymentConfig); - - AddCoursePackageOrderStudent addCoursePackageOrderStudent = new AddCoursePackageOrderStudent(); - addCoursePackageOrderStudent.setCoursePackageOrderId(coursePackageOrder1.getId()); - addCoursePackageOrderStudent.setCoursePackagePaymentConfig(coursePackagePaymentConfig); - paymentClient.addCoursePackageOrderStudent(addCoursePackageOrderStudent); - // 根据运营商id获取对应运营商分账比例 返回格式: 微信分账比例,支付宝分账比例 - String proportionByOperatorId = storeClient.getProportionByOperatorId(operatorId); - String[] split = proportionByOperatorId.split(","); - String s1 = split[0]; - if (!s1.equals("未设置")){ - BigDecimal bigDecimal = new BigDecimal(s1); - // 分账比例 - BigDecimal bigDecimal1 = bigDecimal.divide(new BigDecimal(100)).setScale(2); - // 微信商户号 - String s2 = storeClient.getmerchantNumberByOperatorId(operatorId); - - ResultUtil fenzhang = payMoneyUtil.fenzhang(orderNumber, coursePackageOrder1.getCashPayment().multiply(bigDecimal1), s2,"运动营商品"); - if (!fenzhang.getCode().equals(200)){ - System.err.println("分账失败 原因是:"+fenzhang.getMsg()); - } - } - } - }else{ - System.err.println("门票"); - // 根据运营商id获取对应运营商分账比例 返回格式: 微信分账比例,支付宝分账比例 - String proportionByOperatorId = storeClient.getProportionByOperatorId(operatorId); - System.err.println("分账比例"+proportionByOperatorId); - String[] split = proportionByOperatorId.split(","); - String s1 = split[0]; - if (!s1.equals("未设置")){ - BigDecimal bigDecimal = new BigDecimal(s1); - // 分账比例 - BigDecimal bigDecimal1 = bigDecimal.divide(new BigDecimal(100)).setScale(2); - // 微信商户号 - String s2 = storeClient.getmerchantNumberByOperatorId(operatorId); - System.err.println("微信商户号"+s2); - - ResultUtil fenzhang = payMoneyUtil.fenzhang(orderNumber, pointsMerchandise.getCash().multiply(bigDecimal1), s2,"门票"); - if (!fenzhang.getCode().equals(200)){ - System.err.println("分账失败 原因是:"+fenzhang.getMsg()); - } - } - } - - } - } catch (InterruptedException e) { - e.printStackTrace(); - } catch (Exception e) { - throw new RuntimeException(e); - } - }).start(); return ResultUtil.success(); } -- Gitblit v1.7.1