diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/dto/OrderPayParamDTO.java b/cash-service/order-service/src/main/java/com/czg/service/order/dto/OrderPayParamDTO.java index 2f8fbb1c9..cffb054ed 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/dto/OrderPayParamDTO.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/dto/OrderPayParamDTO.java @@ -1,8 +1,11 @@ package com.czg.service.order.dto; import com.czg.order.dto.CheckOrderPay; +import jakarta.validation.constraints.DecimalMin; import lombok.Data; +import java.math.BigDecimal; + /** * 支付接收参数 实体类 * @@ -23,4 +26,7 @@ public class OrderPayParamDTO { private String openId; private String authCode; private String pwd; + private Long rechargeDetailId; + private BigDecimal amount; + } diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/PayServiceImpl.java b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/PayServiceImpl.java index e30dcefc9..99e70fb22 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/PayServiceImpl.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/PayServiceImpl.java @@ -318,6 +318,15 @@ public class PayServiceImpl implements PayService { public CzgResult> scanPayOrder(@NonNull String clintIp, OrderPayParamDTO payParam) { OrderInfo orderInfo = checkPay(payParam.getCheckOrderPay()); + + ShopUser shopUser = shopUserService.getById(payParam.getShopUserId()); + MkShopRechargeVO rechargeVO = shopRechargeService.detail(payParam.getShopId()); + if (payParam.getRechargeDetailId() == null && rechargeVO.getIsCustom() == 0) { + throw new CzgException("未开启自定义充值金额"); + } + Long mainShopId = shopInfoService.getMainIdByShopId(payParam.getShopId()); + BigDecimal amount = shopRechargeService.checkRecharge(mainShopId, payParam.getShopId(), shopUser.getUserId(), payParam.getRechargeDetailId(), payParam.getAmount()); + payParam.setAmount(amount); String payOrderNo = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId(); Long paymentId = initOrderPayment(new OrderPayment(payParam.getShopId(), orderInfo.getId(), "order", payOrderNo, "", orderInfo.getOrderAmount())); @@ -331,6 +340,14 @@ public class PayServiceImpl implements PayService { public CzgResult> microPayOrder(OrderPayParamDTO payParam) { OrderInfo orderInfo = checkPay(payParam.getCheckOrderPay()); AssertUtil.isBlank(payParam.getAuthCode(), "扫描码不能为空"); + ShopUser shopUser = shopUserService.getById(payParam.getShopUserId()); + MkShopRechargeVO rechargeVO = shopRechargeService.detail(payParam.getShopId()); + if (payParam.getRechargeDetailId() == null && rechargeVO.getIsCustom() == 0) { + throw new CzgException("未开启自定义充值金额"); + } + Long mainShopId = shopInfoService.getMainIdByShopId(payParam.getShopId()); + BigDecimal amount = shopRechargeService.checkRecharge(mainShopId, payParam.getShopId(), shopUser.getUserId(), payParam.getRechargeDetailId(), payParam.getAmount()); + payParam.setAmount(amount); String payOrderNo = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId(); Long paymentId = initOrderPayment(new OrderPayment(payParam.getShopId(), orderInfo.getId(), "order", payOrderNo, payParam.getAuthCode(), orderInfo.getOrderAmount())); @@ -423,9 +440,17 @@ public class PayServiceImpl implements PayService { AssertUtil.isNull(shopUser, "充值失败 该店铺用户不存在"); AssertUtil.isBlank(payParam.getOpenId(), "用户小程序ID不能为空"); AssertUtil.isBlank(payParam.getPayType(), "支付方式不能为空"); + + MkShopRechargeVO rechargeVO = shopRechargeService.detail(payParam.getShopId()); + if (payParam.getRechargeDetailId() == null && rechargeVO.getIsCustom() == 0) { + throw new CzgException("未开启自定义充值金额"); + } + Long mainShopId = shopInfoService.getMainIdByShopId(payParam.getShopId()); + BigDecimal amount = shopRechargeService.checkRecharge(mainShopId, payParam.getShopId(), shopUser.getUserId(), payParam.getRechargeDetailId(), payParam.getAmount()); + String payOrderNo = payParam.getPlatformType() + IdUtil.getSnowflakeNextId(); initOrderPayment(new OrderPayment(payParam.getShopId(), shopUser.getId(), isFree ? "free" : "memberIn", payOrderNo, - "", payParam.getAmount(), isFree ? payParam.getOrderId() : payParam.getActivateId())); + "", amount, isFree ? payParam.getOrderId() : payParam.getActivateId())); return ltPay(payParam.getShopId(), payParam.getPayType(), new CzgLtPayReq(payOrderNo, payParam.getAmount().multiply(MONEY_RATE).longValue(), payParam.getPayType(), "会员充值", payParam.getOpenId(), clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), "")); }