订单支付

This commit is contained in:
2025-09-27 18:30:51 +08:00
parent 51fde65ddb
commit ca7435c813
6 changed files with 211 additions and 145 deletions

View File

@@ -15,6 +15,7 @@ import com.czg.utils.AssertUtil;
import com.czg.utils.ServletUtil; import com.czg.utils.ServletUtil;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import lombok.NonNull;
import org.apache.dubbo.config.annotation.DubboReference; import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@@ -39,142 +40,154 @@ public class OrderPayController {
@DubboReference @DubboReference
private SysParamsService paramsService; private SysParamsService paramsService;
@PostMapping("/creditPay") // @PostMapping("/creditPay")
@Debounce(value = "#payParam.checkOrderPay.orderId") // @Debounce(value = "#payParam.checkOrderPay.orderId")
public CzgResult<Object> creditPayOrder(@RequestHeader Long shopId, @Validated @RequestBody OrderPayParamDTO payParam) { // public CzgResult<Object> creditPayOrder(@RequestHeader Long shopId, @Validated @RequestBody OrderPayParamDTO payParam) {
payParam.setShopId(shopId); // payParam.setShopId(shopId);
return payService.creditPayOrder(payParam); // return payService.creditPayOrder(payParam);
} // }
//
@PostMapping("/cashPay") // @PostMapping("/cashPay")
@Debounce(value = "#payParam.checkOrderPay.orderId") // @Debounce(value = "#payParam.checkOrderPay.orderId")
public CzgResult<Object> cashPayOrder(@RequestHeader Long shopId, @Validated @RequestBody OrderPayParamDTO payParam) { // public CzgResult<Object> cashPayOrder(@RequestHeader Long shopId, @Validated @RequestBody OrderPayParamDTO payParam) {
payParam.setShopId(shopId); // payParam.setShopId(shopId);
return payService.cashPayOrder(payParam); // return payService.cashPayOrder(payParam);
} // }
/** /**
* 会员支付 * 充值并付款
* payType 必填
* <p>
* scanCode(收银机使用) 会员码支付 authCode 必填
* userPay(收银机使用) 选择用户支付 userId必填
* <p>
* accountPay(小程序使用) 密码支付 用户密码pwd 必填
*/
@PostMapping("/vipPay")
@Debounce(value = "#payParam.checkOrderPay.orderId")
public CzgResult<Object> vipPayOrder(@RequestHeader Long shopId, @Validated @RequestBody OrderPayParamDTO payParam) {
payParam.setShopId(shopId);
AssertUtil.isBlank(payParam.getPayType(), "支付类型不可为空");
return payService.vipPayOrder(payParam);
}
/**
* h5支付
*/
@PostMapping("/h5Pay")
@Debounce(value = "#payParam.checkOrderPay.orderId")
public CzgResult<Map<String, Object>> h5PayOrder(@RequestHeader Long shopId, HttpServletRequest request, @Validated @RequestBody OrderPayParamDTO payParam) {
payParam.setShopId(shopId);
return payService.h5PayOrder(ServletUtil.getClientIP(request, ""), payParam);
}
/**
* js支付
* <p>
* payType 必填 支付方式aliPay 支付宝wechatPay 微信 * payType 必填 支付方式aliPay 支付宝wechatPay 微信
* openId 必填 * openId 必填
*/ */
@PostMapping("/jsPay") @PostMapping("/rechargePayOrder")
@Debounce(value = "#payParam.checkOrderPay.orderId") @Debounce(value = "#payParam.checkOrderPay.orderId")
public CzgResult<Map<String, Object>> jsPayOrder(@RequestHeader Long shopId, HttpServletRequest request, @Validated @RequestBody OrderPayParamDTO payParam) { public CzgResult<Map<String, Object>> rechargePayOrder(@RequestHeader Long shopId, HttpServletRequest request, @Validated @RequestBody OrderPayParamDTO payParam) {
payParam.setShopId(shopId); payParam.setShopId(shopId);
return payService.jsPayOrder(ServletUtil.getClientIP(request), payParam); return payService.rechargePayOrder(ServletUtil.getClientIP(request), payParam);
} }
/** // /**
* 小程序支付 // * 会员支付
* payType 必填 支付方式aliPay 支付宝wechatPay 微信 // * payType 必填
* openId 必填 // * <p>
*/ // * scanCode(收银机使用) 会员码支付 authCode 必填
@PostMapping("/ltPayOrder") // * userPay(收银机使用) 选择用户支付 userId必填
@Debounce(value = "#payParam.checkOrderPay.orderId") // * <p>
public CzgResult<Map<String, Object>> ltPayOrder(@RequestHeader Long shopId, HttpServletRequest request, @Validated @RequestBody OrderPayParamDTO payParam) { // * accountPay(小程序使用) 密码支付 用户密码pwd 必填
payParam.setShopId(shopId); // */
return payService.ltPayOrder(ServletUtil.getClientIP(request), payParam); // @PostMapping("/vipPay")
} // @Debounce(value = "#payParam.checkOrderPay.orderId")
// public CzgResult<Object> vipPayOrder(@RequestHeader Long shopId, @Validated @RequestBody OrderPayParamDTO payParam) {
/** // payParam.setShopId(shopId);
* 正扫 // AssertUtil.isBlank(payParam.getPayType(), "支付类型不可为空");
*/ // return payService.vipPayOrder(payParam);
@PostMapping("/scanPay") // }
@Debounce(value = "#payParam.checkOrderPay.orderId") //
public CzgResult<Map<String, Object>> scanPayOrder(@RequestHeader Long shopId, HttpServletRequest request, @Validated @RequestBody OrderPayParamDTO payParam) { // /**
payParam.setShopId(shopId); // * h5支付
return payService.scanPayOrder(ServletUtil.getClientIP(request), payParam); // */
} // @PostMapping("/h5Pay")
// @Debounce(value = "#payParam.checkOrderPay.orderId")
/** // public CzgResult<Map<String, Object>> h5PayOrder(@RequestHeader Long shopId, HttpServletRequest request, @Validated @RequestBody OrderPayParamDTO payParam) {
* 反扫 // payParam.setShopId(shopId);
* authCode 必填 扫描码 // return payService.h5PayOrder(ServletUtil.getClientIP(request, ""), payParam);
*/ // }
@PostMapping("/microPay") //
@Debounce(value = "#payParam.checkOrderPay.orderId") // /**
public CzgResult<Map<String, Object>> microPayOrder(@RequestHeader Long shopId, @Validated @RequestBody OrderPayParamDTO payParam) { // * js支付
payParam.setShopId(shopId); // * <p>
return payService.microPayOrder(payParam); // * payType 必填 支付方式aliPay 支付宝wechatPay 微信
} // * openId 必填
// */
/** // @PostMapping("/jsPay")
* 获取店铺订单支付URL // @Debounce(value = "#payParam.checkOrderPay.orderId")
*/ // public CzgResult<Map<String, Object>> jsPayOrder(@RequestHeader Long shopId, HttpServletRequest request, @Validated @RequestBody OrderPayParamDTO payParam) {
@GetMapping("/shopPayApi/orderPayUrl") // payParam.setShopId(shopId);
@Debounce(value = "#checkOrderPay.orderId") // return payService.jsPayOrder(ServletUtil.getClientIP(request), payParam);
public CzgResult<String> getOrderPayUrl(@RequestHeader Long shopId, @RequestParam(required = false) String extend, // }
CheckOrderPay checkOrderPay) { //
AssertUtil.isNull(shopId, "店铺id不能为空"); // /**
AssertUtil.isNull(checkOrderPay, "订单信息不能为空"); // * 小程序支付
Map<String, Object> map = new HashMap<>(); // * payType 必填 支付方式aliPay 支付宝wechatPay 微信
map.put("shopId", shopId); // * openId 必填
map.put("orderId", checkOrderPay.getOrderId()); // */
map.put("payAmount", checkOrderPay.getOrderAmount()); // @PostMapping("/ltPayOrder")
map.put("extend", StrUtil.isEmpty(extend) ? "" : extend); // @Debounce(value = "#payParam.checkOrderPay.orderId")
if (checkOrderPay.getOrderId() != null) { // public CzgResult<Map<String, Object>> ltPayOrder(@RequestHeader Long shopId, HttpServletRequest request, @Validated @RequestBody OrderPayParamDTO payParam) {
OrderInfo orderInfo = orderInfoService.checkOrderPay(checkOrderPay); // payParam.setShopId(shopId);
map.put("payAmount", orderInfo.getOrderAmount()); // return payService.ltPayOrder(ServletUtil.getClientIP(request), payParam);
} // }
String baseUrl = paramsService.getSysParamValue(SysParamCodeEnum.SHOP_ORDER_PAY_BASE_URL.getCode()); //
String buildUrl = URLUtil.buildQuery(map, Charset.defaultCharset()); // /**
String fullUrl = baseUrl.concat("?").concat(buildUrl); // * 正扫
return CzgResult.success(fullUrl); // */
} // @PostMapping("/scanPay")
// @Debounce(value = "#payParam.checkOrderPay.orderId")
/** // public CzgResult<Map<String, Object>> scanPayOrder(@RequestHeader Long shopId, HttpServletRequest request, @Validated @RequestBody OrderPayParamDTO payParam) {
* payType 必填 支付方式aliPay 支付宝wechatPay 微信 // payParam.setShopId(shopId);
* openId 必填 // return payService.scanPayOrder(ServletUtil.getClientIP(request), payParam);
* checkOrderPay.orderAmount 必填 // }
*/ //
@PostMapping("/shopPayApi/js2Pay") // /**
@Debounce(value = "#payParam.checkOrderPay.orderId") // * 反扫
public CzgResult<Map<String, Object>> js2PayOrder(HttpServletRequest request, @RequestBody OrderPayParamDTO payParam) { // * authCode 必填 扫描码
return payService.js2PayOrder(ServletUtil.getClientIP(request), payParam); // */
} // @PostMapping("/microPay")
// @Debounce(value = "#payParam.checkOrderPay.orderId")
/** // public CzgResult<Map<String, Object>> microPayOrder(@RequestHeader Long shopId, @Validated @RequestBody OrderPayParamDTO payParam) {
* 获取订单状态 // payParam.setShopId(shopId);
* unpaid-待支付;in-production 制作中;wait-out 待取餐;;done-订单完成;refunding-申请退单;refund-退单;part-refund 部分退单;cancelled-取消订单 // return payService.microPayOrder(payParam);
*/ // }
@GetMapping("/queryOrderStatus") //
public CzgResult<String> queryOrderStatus(Long orderId) { // /**
CzgResult<String> result = CzgResult.success(); // * 获取店铺订单支付URL
String status = orderInfoService.queryChain().select(OrderInfo::getStatus).eq(OrderInfo::getId, orderId).oneAs(String.class); // */
result.setData(status); // @GetMapping("/shopPayApi/orderPayUrl")
switch (status) { // @Debounce(value = "#checkOrderPay.orderId")
case "unpaid" -> result.setMsg("等待用户付款"); // public CzgResult<String> getOrderPayUrl(@RequestHeader Long shopId, @RequestParam(required = false) String extend,
case "done" -> result.setMsg("支付完成"); // CheckOrderPay checkOrderPay) {
case "cancelled" -> result.setMsg("订单已取消"); // AssertUtil.isNull(shopId, "店铺id不能为空");
} // AssertUtil.isNull(checkOrderPay, "订单信息不能为空");
return result; // Map<String, Object> map = new HashMap<>();
} // map.put("shopId", shopId);
// map.put("orderId", checkOrderPay.getOrderId());
// map.put("payAmount", checkOrderPay.getOrderAmount());
// map.put("extend", StrUtil.isEmpty(extend) ? "" : extend);
// if (checkOrderPay.getOrderId() != null) {
// OrderInfo orderInfo = orderInfoService.checkOrderPay(checkOrderPay);
// map.put("payAmount", orderInfo.getOrderAmount());
// }
// String baseUrl = paramsService.getSysParamValue(SysParamCodeEnum.SHOP_ORDER_PAY_BASE_URL.getCode());
// String buildUrl = URLUtil.buildQuery(map, Charset.defaultCharset());
// String fullUrl = baseUrl.concat("?").concat(buildUrl);
// return CzgResult.success(fullUrl);
// }
//
// /**
// * payType 必填 支付方式aliPay 支付宝wechatPay 微信
// * openId 必填
// * checkOrderPay.orderAmount 必填
// */
// @PostMapping("/shopPayApi/js2Pay")
// @Debounce(value = "#payParam.checkOrderPay.orderId")
// public CzgResult<Map<String, Object>> js2PayOrder(HttpServletRequest request, @RequestBody OrderPayParamDTO payParam) {
// return payService.js2PayOrder(ServletUtil.getClientIP(request), payParam);
// }
//
// /**
// * 获取订单状态
// * unpaid-待支付;in-production 制作中;wait-out 待取餐;;done-订单完成;refunding-申请退单;refund-退单;part-refund 部分退单;cancelled-取消订单
// */
// @GetMapping("/queryOrderStatus")
// public CzgResult<String> queryOrderStatus(Long orderId) {
// CzgResult<String> result = CzgResult.success();
// String status = orderInfoService.queryChain().select(OrderInfo::getStatus).eq(OrderInfo::getId, orderId).oneAs(String.class);
// result.setData(status);
// switch (status) {
// case "unpaid" -> result.setMsg("等待用户付款");
// case "done" -> result.setMsg("支付完成");
// case "cancelled" -> result.setMsg("订单已取消");
// }
// return result;
// }
} }

View File

@@ -50,7 +50,7 @@ import java.util.stream.Collectors;
*/ */
@Slf4j @Slf4j
@Service @Service
public class MkShopRechargeServiceImpl extends ServiceImpl<MkShopRechargeMapper, MkShopRecharge> implements MkShopRechargeService{ public class MkShopRechargeServiceImpl extends ServiceImpl<MkShopRechargeMapper, MkShopRecharge> implements MkShopRechargeService {
@Resource @Resource
private MkShopRechargeDetailService shopRechargeDetailService; private MkShopRechargeDetailService shopRechargeDetailService;
@Resource @Resource
@@ -68,7 +68,7 @@ public class MkShopRechargeServiceImpl extends ServiceImpl<MkShopRechargeMapper,
public MkShopRechargeVO detailApp(Long shopId) { public MkShopRechargeVO detailApp(Long shopId) {
Long mainShopId = shopInfoService.getMainIdByShopId(shopId); Long mainShopId = shopInfoService.getMainIdByShopId(shopId);
MkShopRechargeVO rechargeVO = detail(mainShopId); MkShopRechargeVO rechargeVO = detail(mainShopId);
if ("part".equals(rechargeVO.getUseType())){ if ("part".equals(rechargeVO.getUseType())) {
return rechargeVO.getShopIdList().contains(shopId) ? rechargeVO : null; return rechargeVO.getShopIdList().contains(shopId) ? rechargeVO : null;
} }
return rechargeVO; return rechargeVO;
@@ -126,7 +126,7 @@ public class MkShopRechargeServiceImpl extends ServiceImpl<MkShopRechargeMapper,
if (shopRechargeDTO.getRechargeDetailList() != null && !shopRechargeDTO.getRechargeDetailList().isEmpty()) { if (shopRechargeDTO.getRechargeDetailList() != null && !shopRechargeDTO.getRechargeDetailList().isEmpty()) {
shopRechargeDetailService.remove(new QueryWrapper().eq(MkShopRechargeDetail::getShopRechargeId, shopRecharge.getId())); shopRechargeDetailService.remove(new QueryWrapper().eq(MkShopRechargeDetail::getShopRechargeId, shopRecharge.getId()));
shopRechargeDTO.getRechargeDetailList().forEach(item -> { shopRechargeDTO.getRechargeDetailList().forEach(item -> {
MkShopRechargeDetail mkShopRechargeDetail = BeanUtil.copyProperties(item, MkShopRechargeDetail.class,"couponInfoList"); MkShopRechargeDetail mkShopRechargeDetail = BeanUtil.copyProperties(item, MkShopRechargeDetail.class, "couponInfoList");
mkShopRechargeDetail.setCouponInfoList(JSONArray.toJSONString(item.getCouponInfoList())); mkShopRechargeDetail.setCouponInfoList(JSONArray.toJSONString(item.getCouponInfoList()));
mkShopRechargeDetail.setShopRechargeId(shopRecharge.getId()); mkShopRechargeDetail.setShopRechargeId(shopRecharge.getId());
shopRechargeDetailService.save(mkShopRechargeDetail); shopRechargeDetailService.save(mkShopRechargeDetail);
@@ -147,7 +147,7 @@ public class MkShopRechargeServiceImpl extends ServiceImpl<MkShopRechargeMapper,
throw new CzgException("未开启自定义充值金额"); throw new CzgException("未开启自定义充值金额");
} }
return money; return money;
}else { } else {
MkShopRechargeDetail rechargeDetail = shopRechargeDetailService.getOne(new QueryWrapper().eq(MkShopRechargeDetail::getShopRechargeId, rechargeVO.getId()).eq(MkShopRechargeDetail::getId, rechargeDetailId)); MkShopRechargeDetail rechargeDetail = shopRechargeDetailService.getOne(new QueryWrapper().eq(MkShopRechargeDetail::getShopRechargeId, rechargeVO.getId()).eq(MkShopRechargeDetail::getId, rechargeDetailId));
AssertUtil.isNull(rechargeDetail, "充值金额不存在"); AssertUtil.isNull(rechargeDetail, "充值金额不存在");
return rechargeDetail.getAmount(); return rechargeDetail.getAmount();
@@ -182,15 +182,9 @@ public class MkShopRechargeServiceImpl extends ServiceImpl<MkShopRechargeMapper,
}); });
} }
// 自定义金额 // 自定义金额
}else { } else {
shopUserMoneyEditDTO.setMoney(amount.divide(new BigDecimal(100), 2, RoundingMode.DOWN)); shopUserMoneyEditDTO.setMoney(amount.divide(new BigDecimal(100), 2, RoundingMode.DOWN));
} }
//TODO 以前的会员活动
// activateService.giveActivate(shopUser, new BigDecimal(czgCallBackDto.getAmount()).divide(new BigDecimal(100), 2, RoundingMode.DOWN),
// payment.getRelatedId(), flowId);
//更新会员余额 并生成流水
shopUserService.updateMoney(shopUserMoneyEditDTO); shopUserService.updateMoney(shopUserMoneyEditDTO);
} }

View File

@@ -23,4 +23,6 @@ public class OrderPayParamDTO {
private String openId; private String openId;
private String authCode; private String authCode;
private String pwd; private String pwd;
private Long rechargeId;
} }

View File

@@ -32,6 +32,11 @@ public interface PayService {
*/ */
CzgResult<Object> vipPayOrder(OrderPayParamDTO payParam); CzgResult<Object> vipPayOrder(OrderPayParamDTO payParam);
/**
* 充值并付款
*/
CzgResult<Map<String, Object>> rechargePayOrder(String clintIp, OrderPayParamDTO payParam);
/** /**
* h5支付 * h5支付
*/ */

View File

@@ -376,7 +376,6 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
if (CollUtil.isNotEmpty(param.getCouponList())) { if (CollUtil.isNotEmpty(param.getCouponList())) {
QueryWrapper couponRecordQuery = new QueryWrapper(); QueryWrapper couponRecordQuery = new QueryWrapper();
couponRecordQuery.in(MkShopCouponRecord::getId, param.getCouponList()); couponRecordQuery.in(MkShopCouponRecord::getId, param.getCouponList());
couponRecordQuery.eq(MkShopCouponRecord::getShopId, shopId);
couponRecordQuery.gt(MkShopCouponRecord::getUseStartTime, LocalDateTime.now()); couponRecordQuery.gt(MkShopCouponRecord::getUseStartTime, LocalDateTime.now());
couponRecordQuery.le(MkShopCouponRecord::getUseEndTime, LocalDateTime.now()); couponRecordQuery.le(MkShopCouponRecord::getUseEndTime, LocalDateTime.now());
couponRecordQuery.eq(MkShopCouponRecord::getStatus, 0); couponRecordQuery.eq(MkShopCouponRecord::getStatus, 0);
@@ -865,6 +864,24 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
} }
shopRechargeService.recharge(payment.getShopId(), payment.getSourceId(), payment.getRelatedId(), shopRechargeService.recharge(payment.getShopId(), payment.getSourceId(), payment.getRelatedId(),
BigDecimal.valueOf(czgCallBackDto.getAmount() / 100), payment.getId(), payment.getPayType(), bizEnum); BigDecimal.valueOf(czgCallBackDto.getAmount() / 100), payment.getId(), payment.getPayType(), bizEnum);
//充值并支付 ↓
OrderInfo orderInfo = getOne(new QueryWrapper()
.eq(OrderInfo::getPayOrderId, payment.getRelatedId())
.eq(OrderInfo::getPayType, PayEnums.VIP_PAY.getValue()));
if (orderInfo != null) {
updateChain().eq(OrderInfo::getPayOrderId, payment.getRelatedId())
.eq(OrderInfo::getPayType, PayEnums.VIP_PAY.getValue())
.set(OrderInfo::getStatus, OrderStatusEnums.DONE.getCode())
.set(OrderInfo::getPayAmount, 0)
.update();
ShopUserMoneyEditDTO shopUserMoneyEditDTO = new ShopUserMoneyEditDTO()
.setId(shopUser.getId())
.setType(0)
.setBizEnum(ShopUserFlowBizEnum.ORDER_PAY)
.setRelationId(orderInfo.getId())
.setMoney(orderInfo.getOrderAmount());
shopUserService.updateMoney(shopUserMoneyEditDTO);
}
} }
} else if ("memberPay".equals(payment.getPayType())) { } else if ("memberPay".equals(payment.getPayType())) {
memberConfigService.joinMember(payment.getShopId(), payment.getSourceId(), payment.getRelatedId()); memberConfigService.joinMember(payment.getShopId(), payment.getSourceId(), payment.getRelatedId());

View File

@@ -19,8 +19,11 @@ import com.czg.exception.CzgException;
import com.czg.exception.PaySuccessException; import com.czg.exception.PaySuccessException;
import com.czg.market.dto.MemberOrderDTO; import com.czg.market.dto.MemberOrderDTO;
import com.czg.market.entity.MkShopCouponRecord; import com.czg.market.entity.MkShopCouponRecord;
import com.czg.market.entity.MkShopRecharge;
import com.czg.market.entity.MkShopRechargeDetail;
import com.czg.market.service.MemberOrderService; import com.czg.market.service.MemberOrderService;
import com.czg.market.service.MkShopCouponRecordService; import com.czg.market.service.MkShopCouponRecordService;
import com.czg.market.service.MkShopRechargeDetailService;
import com.czg.market.service.MkShopRechargeService; import com.czg.market.service.MkShopRechargeService;
import com.czg.market.vo.MkShopRechargeVO; import com.czg.market.vo.MkShopRechargeVO;
import com.czg.order.dto.BigDecimalDTO; import com.czg.order.dto.BigDecimalDTO;
@@ -105,6 +108,8 @@ public class PayServiceImpl implements PayService {
private MemberOrderService memberOrderService; private MemberOrderService memberOrderService;
@Resource @Resource
private MkShopRechargeService shopRechargeService; private MkShopRechargeService shopRechargeService;
@Resource
private MkShopRechargeDetailService shopRechargeDetailService;
private final BigDecimal MONEY_RATE = new BigDecimal("100"); private final BigDecimal MONEY_RATE = new BigDecimal("100");
@@ -249,6 +254,36 @@ public class PayServiceImpl implements PayService {
return CzgResult.success(); return CzgResult.success();
} }
@Override
public CzgResult<Map<String, Object>> rechargePayOrder(String clintIp, OrderPayParamDTO payParam) {
OrderInfo orderInfo = checkPay(payParam.getCheckOrderPay());
ShopInfo shopInfo = shopInfoService.getById(payParam.getShopId());
AssertUtil.isNull(shopInfo, "店铺不存在");
if (!shopInfo.getIsAccountPay().equals(1)) {
return CzgResult.failure("支付失败,店铺暂未开启会员余额支付。");
}
AssertUtil.isNull(payParam.getShopUserId(), "请选择付款人后重试");
ShopUser shopUser = shopUserService.getById(payParam.getShopUserId());
AssertUtil.isNull(shopUser, "支付失败 该店铺用户不存在");
AssertUtil.isBlank(payParam.getOpenId(), "用户小程序ID不能为空");
AssertUtil.isBlank(payParam.getPayType(), "支付方式不能为空");
//查询活动Id 获取金额字段
MkShopRecharge recharge = shopRechargeService.getById(payParam.getRechargeId());
AssertUtil.isNull(recharge, "充值配置不存在");
MkShopRechargeDetail rechargeDetail = shopRechargeDetailService.getOne(
new QueryWrapper().eq("shop_recharge_id", recharge.getId()));
AssertUtil.isNull(rechargeDetail, "充值配置不存在");
if (orderInfo.getOrderAmount().compareTo(rechargeDetail.getAmount()) < 0) {
return CzgResult.failure("支付失败 充值金额小于订单金额");
}
String payOrderNo = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId();
Long paymentId = initOrderPayment(new OrderPayment(payParam.getShopId(), shopUser.getId(), "memberIn", payOrderNo,
"", rechargeDetail.getAmount(), payParam.getRechargeId()));
upOrderPayInfo(orderInfo.getId(), PayEnums.VIP_PAY, paymentId);
return ltPay(payParam.getShopId(), payParam.getPayType(), new CzgLtPayReq(payOrderNo, rechargeDetail.getAmount().multiply(MONEY_RATE).longValue(),
payParam.getPayType(), "充值并支付", payParam.getOpenId(), clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), ""));
}
@Override @Override
@Transactional(noRollbackFor = PaySuccessException.class) @Transactional(noRollbackFor = PaySuccessException.class)
public CzgResult<Map<String, Object>> h5PayOrder(@NonNull String clintIp, OrderPayParamDTO payParam) { public CzgResult<Map<String, Object>> h5PayOrder(@NonNull String clintIp, OrderPayParamDTO payParam) {