From df4733091b30b0434a04dacd0e844663114d4cfe Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期三, 09 七月 2025 17:51:56 +0800 Subject: [PATCH] 修改支付宝支付和bug修改 --- cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java | 441 ++++++++++++++++++++++++++++++------------------------ 1 files changed, 246 insertions(+), 195 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 f66961f..c8b72d8 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java +++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java @@ -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; @@ -130,6 +131,7 @@ @Resource private UserConponClient ucponClient; + @Resource private CoursePackageClient cpageClient; @@ -156,6 +158,7 @@ @Resource private IntroduceRewardsClient introduceRewardsClient; + private String aliAppid = "2021004105665036";//支付宝appid @@ -188,9 +191,6 @@ @Resource private GameRecordClient gameRecordClient; - - - // 对数据进行分页处理的方法 @@ -944,14 +944,14 @@ List<WorldCupPayment> worldCupPayment = worldCupPaymentClinet.getWorldCupPayment(getWorldCupPayment); for (WorldCupPayment cupPayment : worldCupPayment) { ConsumeDetail consumeDetail = new ConsumeDetail(); - if(cupPayment.getPayStatus() != 3){ + if (cupPayment.getPayStatus() != 3) { consumeDetail.setConsumeName(RechargeRecordEnum.WORLD_CIP_PAYMENT.getMsg()); consumeDetail.setConsumeTime(simpleDateFormat.format(cupPayment.getCreateTime())); consumeDetail.setConsumeAmount("-" + cupPayment.getAmount()); consumeDetail.setType(2); consumeDetail.setDateTime(cupPayment.getPayTime().getTime()); details.add(consumeDetail); - }else{ + } else { consumeDetail = new ConsumeDetail(); consumeDetail.setConsumeName(RechargeRecordEnum.WORLD_CIP_PAYMENT.getMsg()); consumeDetail.setConsumeTime(simpleDateFormat.format(cupPayment.getCreateTime())); @@ -1242,7 +1242,7 @@ } TAppUser tAppUser1 = appUserMapper.selectOne(new LambdaQueryWrapper<TAppUser>() .eq(TAppUser::getPhone, dto.getInvitePhone()).eq(TAppUser::getState, 1)); - if(null == tAppUser1){ + if (null == tAppUser1) { return ResultUtil.error("邀请人还未注册账号"); } Map<String, String> geocode = null; @@ -1362,11 +1362,9 @@ } //查询该用户是否超出限领数量 Integer usercounts = userConponClient.queryCounts1(queryIds); - if (usercounts == coupon.getPickUpQuantity()) { return new ResultUtil<>(0, "限领数量已达最大"); } - SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5); //生成支付订单 @@ -1382,7 +1380,7 @@ userCouponPayment.setInsertTime(new Date()); //积分兑换 - if(coupon.getRedemptionMethod() == 1){ + if (coupon.getRedemptionMethod() == 1) { UserCoupon userCoupon = new UserCoupon(); userCoupon.setCouponId(exchangeType.getGoodId()); userCoupon.setUserId(userIdFormRedis); @@ -1403,13 +1401,13 @@ return ResultUtil.success(returnId); } //积分+现金 - if(coupon.getRedemptionMethod() == 2){ + if (coupon.getRedemptionMethod() == 2) { userCouponPaymentClient.addUserCouponPayment(userCouponPayment); try { - if(exchangeType.getPayType() == 1){ + if (exchangeType.getPayType() == 1) { return weChatPaymentCoupon("购买优惠券", userCouponPayment); } - if(exchangeType.getPayType() == 2){ + if (exchangeType.getPayType() == 2) { return aliPaymentCoupon("购买优惠券", userCouponPayment); } } catch (Exception e) { @@ -1417,16 +1415,14 @@ } } } - - - System.out.println(exchangeType); + System.out.println("兑换积分商品" + exchangeType); try { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5); PointsMerchandise merchandise = new PointsMerchandise(); - if(exchangeType.getGoodsType() != 4){ + if (exchangeType.getGoodsType() != 4) { merchandise = mcClient.selectPointsMerchandiseById(exchangeType.getGoodId()); - }else{ + } else { Coupon coupon = ucponClient.queryCouponById(exchangeType.getGoodId()); merchandise.setId(coupon.getId()); merchandise.setUserPopulation(coupon.getUserPopulation()); @@ -1517,25 +1513,26 @@ pointsMerchandise.setCode(code); pointsMerchandise.setInsertTime(new Date()); pointsMerchandise.setPayType(exchangeType.getExchangeType()); - if(null != merchandise.getIntegral()){ + if (null != merchandise.getIntegral()) { pointsMerchandise.setIntegral(merchandise.getIntegral() * goodsNums); } - if(exchangeType.getExchangeType() == 2){ + if (exchangeType.getExchangeType() == 2 || exchangeType.getExchangeType() == 3) { pointsMerchandise.setCash(merchandise.getCash()); pointsMerchandise.setCashPayType(exchangeType.getPayType()); } - + Double m = new BigDecimal((merchandise.getIntegral() == null ? 0 : merchandise.getIntegral())).add((merchandise.getCash() == null ? BigDecimal.ZERO : merchandise.getCash())).doubleValue(); - if((m * goodsNums) == 0) { + if ((m * goodsNums) == 0) { pointsMerchandise.setPayStatus(2); pointsMerchandise.setPaymentTime(new Date()); } returnId = mcClient.saveDetailsUserPointMercase(pointsMerchandise); - if((m * goodsNums) == 0 && pointsMerchandise.getPayStatus() == 2){ + if ((m * goodsNums) == 0 && pointsMerchandise.getPayStatus() == 2) { returnModel.setReturnId(returnId); return ResultUtil.success(returnModel); } + System.err.println("兑换方式" + exchangeType); switch (exchangeType.getExchangeType()) { // 积分 case 1: @@ -1629,18 +1626,20 @@ coursePackageOrder.setInsertTime(new Date()); coursePackageOrder.setOrderType(2); paymentClient.savePaymentCoursePackage(coursePackageOrder); - return WechatPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code); - } else { - return WechatPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(goodsNums)), code); + return WechatPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code, merchandise.getId()); + } else if (merchandise.getType() == 1) { + return WechatPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(goodsNums)), code, merchandise.getId()); + } else if (merchandise.getType() == 3) { + return WechatPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(goodsNums)), code, merchandise.getId()); } } catch (Exception e) { return ResultUtil.runErr(); } 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; @@ -1651,18 +1650,18 @@ case 1: try { if (merchandise.getType() == 2) { - return WechatPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code); + return WechatPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code, merchandise.getId()); } else { - return WechatPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(goodsNums)), code); + return WechatPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(goodsNums)), code, merchandise.getId()); } } catch (Exception e) { return ResultUtil.runErr(); } 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; @@ -1681,9 +1680,9 @@ } - /** * 优惠券微信支付 + * * @param body * @param userCouponPayment * @return @@ -1692,76 +1691,34 @@ public ResultUtil weChatPaymentCoupon(String body, UserCouponPayment userCouponPayment) throws Exception { String code = userCouponPayment.getCode(); Double cash = userCouponPayment.getCash(); - ResultUtil weixinpay = payMoneyUtil.weixinpay(body, "", 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) { - 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); + Integer couponId = userCouponPayment.getCouponId(); + Coupon coupon = userConponClient.queryCouponById(couponId); + List<Integer> couponStoreIds = userConponClient.getCouponStoreIds(couponId); + System.err.println("购买优惠券"); + if (coupon != null) { + if (!couponStoreIds.isEmpty() && !couponStoreIds.contains(-1)) { + Store store = storeClient.queryStoreById(couponStoreIds.get(0)); + // 微信商户号 + String s2 = storeClient.getmerchantNumberByOperatorId(store.getOperatorId()); + System.err.println("微信商户号" + s2); - 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++; - } - } - } - } catch (Exception e) { - e.printStackTrace(); - } + if (!StringUtils.hasLength(s2)) { + return ResultUtil.error("运营商未配置微信商户号,获取支付失败!"); } - }).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("支付失败!"); } @@ -1772,13 +1729,37 @@ * @throws Exception */ private String smid = "2088330203191220";//平台支付宝商户号 + public ResultUtil aliPaymentCoupon(String body, UserCouponPayment userCouponPayment) throws Exception { + ResultUtil alipay= ResultUtil.error(""); + String smidRes = smid;// 结算资金到商户号 String code = userCouponPayment.getCode(); Double cash = userCouponPayment.getCash(); + Integer couponId = userCouponPayment.getCouponId(); + Coupon coupon = userConponClient.queryCouponById(couponId); + List<Integer> couponStoreIds = userConponClient.getCouponStoreIds(couponId); + if (coupon != null) { + if (!couponStoreIds.isEmpty() && !couponStoreIds.contains(-1)) { + // 门店 向上查询运营商 + Store store = storeClient.queryStoreById(couponStoreIds.get(0)); + if (store.getOperatorId() == null || store.getOperatorId() == 0) { - ResultUtil alipay = payMoneyUtil.alipay(smid, body, "",String.valueOf(userCouponPayment.getId()), code, cash.toString(), + } else { + // 支付宝商户号 + String s2 = storeClient.getmerchantNumberAliByOperatorId(store.getOperatorId()); + System.err.println("支付宝商户号" + s2); + + if (!StringUtils.hasLength(s2)) { + return ResultUtil.error("运营商未配置支付宝商户号,获取支付失败!"); + } + 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() { @@ -1810,10 +1791,7 @@ //有待支付的订单,这里不处理 userCouponPayment1.setStatus(-1); userCouponPaymentClient.updateUserCouponPayment(userCouponPayment1); - if ("TRADE_FINISHED".equals(s)) { - // todo 资金结算 - } break; } if ("TRADE_SUCCESS".equals(s)) { @@ -1833,9 +1811,9 @@ user.setIntegral(user.getIntegral() - userCouponPayment1.getIntegral().intValue()); appUserService.updateById(user); } - payMoneyUtil.confirm(smid,code,tradeNo,cash.toString()); + Thread.sleep(30000); + payMoneyUtil.confirm(finalSmidRes,code,tradeNo,cash.toString()); break; - } if ("WAIT_BUYER_PAY".equals(s)) { @@ -1854,12 +1832,14 @@ /** * 支付回调 + * * @param code * @param orderNumber * @return */ @Override - public ResultUtil paymentCouponCallback(String code, String orderNumber) { + public ResultUtil paymentCouponCallback(String code, String orderNumber) throws Exception { + System.err.println("进入回调"); UserCouponPayment userCouponPayment1 = userCouponPaymentClient.getUserCouponPayment(code); if (userCouponPayment1.getStatus() == 2) { return ResultUtil.success(); @@ -1876,7 +1856,7 @@ userCoupon.setInsertTime(new Date()); userConponClient.insertToAppuserCoupon(userCoupon); - if(null != userCouponPayment1.getIntegral() && 0 != userCouponPayment1.getIntegral()){ + if (null != userCouponPayment1.getIntegral() && 0 != userCouponPayment1.getIntegral()) { //扣积分 SaveUserIntegralChangesVo vo = new SaveUserIntegralChangesVo(); vo.setAppUserId(userCouponPayment1.getUserId()); @@ -1884,8 +1864,9 @@ vo.setRemark("兑换优惠券"); vo.setType(2); userIntegralChangesService.saveUserIntegralChanges(vo); - } + Coupon coupon = ucponClient.queryCouponById(userCouponPayment1.getCouponId()); + // 创建一个两分钟后执行的线程 return ResultUtil.success(); } @@ -1912,9 +1893,62 @@ } } - private ResultUtil AlipayPayment(Integer type, BigDecimal cash, String code, Long returnId) { - String name = (type == 1 ? "购买实体商品" : type == 2 ? "报名运动营": type == 3 ? "购买门票" : "购买优惠券"); - ResultUtil alipay = payMoneyUtil.alipay(smid,name, name, String.valueOf(returnId), code, cash.toString(), + 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()); + String name = (type == 1 ? "购买实体商品" : type == 2 ? "报名运动营" : type == 3 ? "购买门票" : "购买优惠券"); + switch (type) { + case 1: + if (!integers.isEmpty()) { + Store store1 = storeClient.queryStoreById(integers.get(0)); + if (store1.getOperatorId() == null || store1.getOperatorId() == 0) { + + } else { + String s2 = storeClient.getmerchantNumberAliByOperatorId(store1.getOperatorId()); + System.err.println("支付宝商户号" + s2); + + if (!StringUtils.hasLength(s2)) { + return ResultUtil.error("运营商未配置支付宝商户号,获取支付失败!"); + } + smidRes = s2; + } + } + break; + case 2: + // 判断课包属于平台还是运营商 + CoursePackage coursePackage = cpageClient.queryCoursePackageById(pointsMerchandise.getCoursePackageId()); + Store store = storeClient.queryStoreById(coursePackage.getStoreId()); + 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("运营商未配置支付宝商户号,获取支付失败!"); + } + smidRes = s2; + } + break; + case 3: + if (!integers.isEmpty()) { + Store store1 = storeClient.queryStoreById(integers.get(0)); + if (store1.getOperatorId() == null || store1.getOperatorId() == 0) { + + } else { + String s2 = storeClient.getmerchantNumberAliByOperatorId(store1.getOperatorId()); + System.err.println("支付宝商户号" + s2); + if (!StringUtils.hasLength(s2)) { + return ResultUtil.error("运营商未配置支付宝商户号,获取支付失败!"); + } + smidRes = s2; + } + } + break; + } + alipay = payMoneyUtil.alipay(smidRes, name, name, String.valueOf(returnId), code, cash.toString(), "/base/pointMer/exchangeGoodPaymentAliCallback"); if (alipay.getCode() == 200) { new Thread(new Runnable() { @@ -1927,7 +1961,7 @@ int min = 5000; wait += (min * num); Thread.sleep(wait); - System.out.println("code:" + code); + System.out.println("支付宝查询code:" + code); List<UserPointsMerchandise> userPointsMerchandises = mcClient.queryUserPointMerchaseByCode(code); System.out.println("list-----" + userPointsMerchandises); if (userPointsMerchandises.get(0).getPayStatus() == 2) { @@ -1955,17 +1989,24 @@ userPointsMerchandise.setPayStatus(2); userPointsMerchandise.setPaymentTime(new Date()); userPointsMerchandise.setOrderNumber(tradeNo); - userPointsMerchandise.setPayType(2); + userPointsMerchandise.setCashPayType(2); userPointsMerchandise.setInsertTime(null); userPointsMerchandise.setUserId(null); mcClient.updateDetailsUserPointMercase(userPointsMerchandise); } - moneyOut(tradeNo, tradeNo); + 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)) { - // 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){ @@ -2034,7 +2075,7 @@ List<UserPointsMerchandise> userPointsMerchandises = merChandiseClient.queryUserPointMerchaseByCode(outNum); // PaymentCompetition code = paymentCompetitionService.getOne(new QueryWrapper<PaymentCompetition>().eq("code", outNum)); - if(userPointsMerchandises.size() > 0){ + if (userPointsMerchandises.size() > 0) { Integer storeId = userPointsMerchandises.get(0).getStoreId(); // Competition byId1 = competitionService.getById(code.getCompetitionId()); @@ -2080,92 +2121,96 @@ } - private ResultUtil WechatPayment(Integer type, BigDecimal cash, String code) throws Exception { - String name = (type == 1 ? "购买实体商品" : type == 2 ? "报名运动营": type == 3 ? "购买门票" : "购买优惠券"); - ResultUtil weixinpay = payMoneyUtil.weixinpay(name, "", code, cash.toString(), - "/base/pointMer/exchangeGoodPaymentWeChatCallback", "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); - UserPointsMerchandise userPointsMerchandise = mcClient.queryUserPointMerchaseByCode(code).get(0); - if (userPointsMerchandise.getPayStatus() == 2) { - 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.setPayType(1); - mcClient.updateDetailsUserPointMercase(userPointsMerchandise); + private ResultUtil WechatPayment(Integer type, BigDecimal cash, String code, Integer id) throws Exception { + String name = (type == 1 ? "购买实体商品" : type == 2 ? "报名运动营" : type == 3 ? "购买门票" : "购买优惠券"); + System.err.println("微信支付:" + name); - TAppUser tAppUser = baseMapper.selectById(userPointsMerchandise.getUserId()); - dealAppUserIntegral(userPointsMerchandise.getUserId(), tAppUser, userPointsMerchandise.getIntegral()); + PointsMerchandise pointsMerchandise = mcClient.selectPointsMerchandiseById(id); + System.err.println("查询积分商品" + pointsMerchandise); + List<Integer> integers = mcsClient.queryPointMerStoreIds(pointsMerchandise.getId()); - //课程 - if(type == 2){ - CoursePackageOrder coursePackageOrder1 = paymentClient.getCoursePackageOrderByCode(code); - if(null != coursePackageOrder1){ - coursePackageOrder1.setPayStatus(2); - coursePackageOrder1.setOrderNumber(transaction_id); - coursePackageOrder1.setAppUserId(null); - paymentClient.updateCoursePackageOrder(coursePackageOrder1); + switch (type) { + case 1: + 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); - 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; } } - }).start(); + 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 { + 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; + } + case 3: + 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; + } + } else { + // 平台门票 + ResultUtil weixinpay = payMoneyUtil.weixinpay(name, "", code, cash.toString(), + "/base/pointMer/exchangeGoodPaymentWeChatCallback", "APP", ""); + return weixinpay; + + } } - return weixinpay; + + return ResultUtil.error("支付失败"); } + @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); if (userPointsMerchandise.getPayStatus() == 2) { return ResultUtil.success(); } @@ -2180,10 +2225,10 @@ Integer pointsMerchandiseId = userPointsMerchandise.getPointsMerchandiseId(); PointsMerchandise pointsMerchandise = mcClient.selectPointsMerchandiseById(pointsMerchandiseId); - if(pointsMerchandise.getType() == 2){ + if (pointsMerchandise.getType() == 2) { //课程 CoursePackageOrder coursePackageOrder1 = paymentClient.getCoursePackageOrderByCode(code); - if(null != coursePackageOrder1){ + if (null != coursePackageOrder1) { coursePackageOrder1.setPayStatus(2); coursePackageOrder1.setOrderNumber(orderNumber); coursePackageOrder1.setAppUserId(null); @@ -2200,7 +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(); } -- Gitblit v1.7.1