支付前置
This commit is contained in:
parent
da3f548ca0
commit
6b785709f1
|
|
@ -1,6 +1,7 @@
|
|||
package com.czg.controller;
|
||||
|
||||
import com.czg.resp.CzgResult;
|
||||
import com.czg.sa.StpKit;
|
||||
import com.czg.service.order.dto.OrderPayParamDTO;
|
||||
import com.czg.service.order.service.PayService;
|
||||
import com.czg.utils.AssertUtil;
|
||||
|
|
@ -30,6 +31,7 @@ public class OrderPayController {
|
|||
|
||||
@PostMapping("/cashPay")
|
||||
public CzgResult<Object> cashPayOrder(@Validated @RequestBody OrderPayParamDTO payParam) {
|
||||
payParam.setShopId(StpKit.USER.getShopId());
|
||||
return payService.cashPayOrder(payParam);
|
||||
}
|
||||
|
||||
|
|
@ -44,6 +46,7 @@ public class OrderPayController {
|
|||
*/
|
||||
@PostMapping("/vipPay")
|
||||
public CzgResult<Object> vipPayOrder(@Validated @RequestBody OrderPayParamDTO payParam) {
|
||||
payParam.setShopId(StpKit.USER.getShopId());
|
||||
AssertUtil.isBlank(payParam.getPayType(), "支付类型不可为空");
|
||||
return payService.vipPayOrder(payParam);
|
||||
}
|
||||
|
|
@ -53,6 +56,7 @@ public class OrderPayController {
|
|||
*/
|
||||
@PostMapping("/h5Pay")
|
||||
public CzgResult<Map<String, Object>> h5PayOrder(HttpServletRequest request, @Validated @RequestBody OrderPayParamDTO payParam) {
|
||||
payParam.setShopId(StpKit.USER.getShopId());
|
||||
return payService.h5PayOrder(ServletUtil.getClientIPByHeader(request), payParam);
|
||||
}
|
||||
|
||||
|
|
@ -64,6 +68,7 @@ public class OrderPayController {
|
|||
*/
|
||||
@PostMapping("/jsPay")
|
||||
public CzgResult<Map<String, Object>> jsPayOrder(HttpServletRequest request, @Validated @RequestBody OrderPayParamDTO payParam) {
|
||||
payParam.setShopId(StpKit.USER.getShopId());
|
||||
return payService.jsPayOrder(ServletUtil.getClientIPByHeader(request), payParam);
|
||||
}
|
||||
|
||||
|
|
@ -74,6 +79,7 @@ public class OrderPayController {
|
|||
*/
|
||||
@PostMapping("/ltPayOrder")
|
||||
public CzgResult<Map<String, Object>> ltPayOrder(HttpServletRequest request, @Validated @RequestBody OrderPayParamDTO payParam) {
|
||||
payParam.setShopId(StpKit.USER.getShopId());
|
||||
return payService.ltPayOrder(ServletUtil.getClientIPByHeader(request), payParam);
|
||||
}
|
||||
|
||||
|
|
@ -82,6 +88,7 @@ public class OrderPayController {
|
|||
*/
|
||||
@PostMapping("/scanPay")
|
||||
public CzgResult<Map<String, Object>> scanPayOrder(HttpServletRequest request, @Validated @RequestBody OrderPayParamDTO payParam) {
|
||||
payParam.setShopId(StpKit.USER.getShopId());
|
||||
return payService.scanPayOrder(ServletUtil.getClientIPByHeader(request), payParam);
|
||||
}
|
||||
|
||||
|
|
@ -91,6 +98,7 @@ public class OrderPayController {
|
|||
*/
|
||||
@PostMapping("/microPay")
|
||||
public CzgResult<Map<String, Object>> microPayOrder(@Validated @RequestBody OrderPayParamDTO payParam) {
|
||||
payParam.setShopId(StpKit.USER.getShopId());
|
||||
return payService.microPayOrder(payParam);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
|
||||
package com.czg.order.dto;
|
||||
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
|
|
@ -22,6 +23,7 @@ import java.util.List;
|
|||
@AllArgsConstructor
|
||||
public class CheckOrderPay implements Serializable {
|
||||
|
||||
@NotNull(message = "订单id不可为空")
|
||||
private Long orderId;
|
||||
|
||||
private Long userId;
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ public interface OrderInfoService extends IService<OrderInfo> {
|
|||
|
||||
// void updateOrder(OrderInfoUpDTO upDTO);
|
||||
|
||||
BigDecimal checkOrderPay(CheckOrderPay param);
|
||||
OrderInfo checkOrderPay(CheckOrderPay param);
|
||||
|
||||
CzgResult<Object> refundOrder(OrderInfoRefundDTO param);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
package com.czg.service.order.dto;
|
||||
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import com.czg.order.dto.CheckOrderPay;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
|
|
@ -11,10 +11,10 @@ import lombok.Data;
|
|||
*/
|
||||
@Data
|
||||
public class OrderPayParamDTO {
|
||||
@NotNull(message = "店铺不能为空")
|
||||
|
||||
private CheckOrderPay checkOrderPay;
|
||||
// @NotNull(message = "店铺不能为空")
|
||||
private Long shopId;
|
||||
@NotNull(message = "订单不能为空")
|
||||
private Long orderId;
|
||||
private Long shopUserId;
|
||||
private String buyerRemark;
|
||||
private String returnUrl;
|
||||
|
|
|
|||
|
|
@ -211,8 +211,11 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
|||
// }
|
||||
|
||||
@Override
|
||||
public BigDecimal checkOrderPay(CheckOrderPay param) {
|
||||
public OrderInfo checkOrderPay(CheckOrderPay param) {
|
||||
OrderInfo orderInfo = getById(param.getOrderId());
|
||||
if (!orderInfo.getStatus().equals(OrderStatusEnums.UNPAID.getCode())) {
|
||||
throw new ValidateException("生成支付订单失败,订单不可支付");
|
||||
}
|
||||
Long shopId = StpKit.USER.getShopId();
|
||||
PointsBasicSetting pointSetting = pointsBasicService.getById(shopId);
|
||||
if (param.getPointsNum() > 0 && !pointSetting.getEnableDeduction().equals(1)) {
|
||||
|
|
@ -286,7 +289,7 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
|||
orderDetailService.updateBatch(orderDetails);
|
||||
//券消耗
|
||||
couponService.use(param.getCouponList(), shopUser.getId(), orderInfo.getId());
|
||||
return newTotalAmount;
|
||||
return orderInfo;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
package com.czg.service.order.service.impl;
|
||||
|
||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||
import cn.hutool.core.exceptions.ValidateException;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
|
|
@ -12,6 +11,7 @@ import com.czg.config.RedisCst;
|
|||
import com.czg.entity.req.*;
|
||||
import com.czg.entity.resp.*;
|
||||
import com.czg.enums.ShopUserFlowBizEnum;
|
||||
import com.czg.order.dto.CheckOrderPay;
|
||||
import com.czg.order.entity.OrderInfo;
|
||||
import com.czg.order.entity.OrderPayment;
|
||||
import com.czg.order.enums.PayEnums;
|
||||
|
|
@ -23,7 +23,6 @@ import com.czg.service.RedisService;
|
|||
import com.czg.service.order.dto.OrderPayParamDTO;
|
||||
import com.czg.service.order.dto.VipPayParamDTO;
|
||||
import com.czg.service.order.dto.VipRefundDTO;
|
||||
import com.czg.service.order.enums.OrderStatusEnums;
|
||||
import com.czg.service.order.service.PayService;
|
||||
import com.czg.system.enums.SysParamCodeEnum;
|
||||
import com.czg.system.service.SysParamsService;
|
||||
|
|
@ -39,7 +38,6 @@ import org.springframework.transaction.annotation.Transactional;
|
|||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
|
|
@ -81,23 +79,14 @@ public class PayServiceImpl implements PayService {
|
|||
|
||||
private final BigDecimal MONEY_RATE = new BigDecimal("100");
|
||||
|
||||
private OrderInfo checkPay(Long orderId) {
|
||||
OrderInfo orderInfo = orderInfoService.getById(orderId);
|
||||
AssertUtil.isNull(orderInfo, "订单不存在");
|
||||
if (!OrderStatusEnums.UNPAID.getCode().equals(orderInfo.getStatus())) {
|
||||
throw new ValidateException("该订单已不可支付");
|
||||
}
|
||||
if (!"after-pay".equals(orderInfo.getPayMode())
|
||||
&& orderInfo.getCreateTime().isAfter(LocalDateTimeUtil.offset(LocalDateTime.now(), -15, ChronoUnit.SECONDS))) {
|
||||
throw new ValidateException("订单十五分钟内有效,当前已超时,请重新下单。");
|
||||
}
|
||||
return orderInfo;
|
||||
private OrderInfo checkPay(CheckOrderPay checkOrderPay) {
|
||||
return orderInfoService.checkOrderPay(checkOrderPay);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public CzgResult<Object> cashPayOrder(OrderPayParamDTO payParam) {
|
||||
OrderInfo orderInfo = checkPay(payParam.getOrderId());
|
||||
OrderInfo orderInfo = checkPay(payParam.getCheckOrderPay());
|
||||
orderInfoService.upOrderInfo(orderInfo.getId(), orderInfo.getOrderAmount(),
|
||||
LocalDateTime.now(), null, PayEnums.CASH_PAY);
|
||||
return CzgResult.success();
|
||||
|
|
@ -106,7 +95,7 @@ public class PayServiceImpl implements PayService {
|
|||
@Override
|
||||
@Transactional
|
||||
public CzgResult<Object> vipPayOrder(OrderPayParamDTO payParam) {
|
||||
OrderInfo orderInfo = checkPay(payParam.getOrderId());
|
||||
OrderInfo orderInfo = checkPay(payParam.getCheckOrderPay());
|
||||
ShopUser shopUser = new ShopUser();
|
||||
if ("scanCode".equals(payParam.getPayType())) {
|
||||
AssertUtil.isBlank(payParam.getAuthCode(), "会员码不能为空");
|
||||
|
|
@ -154,9 +143,9 @@ public class PayServiceImpl implements PayService {
|
|||
@Override
|
||||
@Transactional
|
||||
public CzgResult<Map<String, Object>> h5PayOrder(@NonNull String clintIp, OrderPayParamDTO payParam) {
|
||||
OrderInfo orderInfo = checkPay(payParam.getOrderId());
|
||||
OrderInfo orderInfo = checkPay(payParam.getCheckOrderPay());
|
||||
String payOrderNo = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId();
|
||||
Long paymentId = initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(),
|
||||
Long paymentId = initOrderPayment(new OrderPayment(payParam.getShopId(), orderInfo.getId(),
|
||||
"order", payOrderNo, "", orderInfo.getOrderAmount()));
|
||||
upOrderPayInfo(orderInfo.getId(), PayEnums.H5_PAY, paymentId);
|
||||
return h5Pay(payParam.getShopId(), new CzgH5PayReq(payOrderNo, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(),
|
||||
|
|
@ -167,11 +156,11 @@ public class PayServiceImpl implements PayService {
|
|||
@Override
|
||||
@Transactional
|
||||
public CzgResult<Map<String, Object>> jsPayOrder(@NonNull String clintIp, OrderPayParamDTO payParam) {
|
||||
OrderInfo orderInfo = checkPay(payParam.getOrderId());
|
||||
OrderInfo orderInfo = checkPay(payParam.getCheckOrderPay());
|
||||
AssertUtil.isBlank(payParam.getPayType(), "支付方式不能为空");
|
||||
AssertUtil.isBlank(payParam.getOpenId(), "用户小程序ID不能为空");
|
||||
String payOrderNo = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId();
|
||||
Long paymentId = initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(),
|
||||
Long paymentId = initOrderPayment(new OrderPayment(payParam.getShopId(), orderInfo.getId(),
|
||||
"order", payOrderNo, "", orderInfo.getOrderAmount()));
|
||||
upOrderPayInfo(orderInfo.getId(), "aliPay".equals(payParam.getPayType()) ? PayEnums.ALIPAY_MINI : PayEnums.WECHAT_MINI, paymentId);
|
||||
return jsPay(payParam.getShopId(), payParam.getPayType(), new CzgJsPayReq(payOrderNo, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(),
|
||||
|
|
@ -181,11 +170,11 @@ public class PayServiceImpl implements PayService {
|
|||
@Override
|
||||
@Transactional
|
||||
public CzgResult<Map<String, Object>> ltPayOrder(@NonNull String clintIp, OrderPayParamDTO payParam) {
|
||||
OrderInfo orderInfo = checkPay(payParam.getOrderId());
|
||||
OrderInfo orderInfo = checkPay(payParam.getCheckOrderPay());
|
||||
AssertUtil.isBlank(payParam.getPayType(), "支付方式不能为空");
|
||||
AssertUtil.isBlank(payParam.getOpenId(), "用户小程序ID不能为空");
|
||||
String payOrderNo = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId();
|
||||
Long paymentId = initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(),
|
||||
Long paymentId = initOrderPayment(new OrderPayment(payParam.getShopId(), orderInfo.getId(),
|
||||
"order", payOrderNo, "", orderInfo.getOrderAmount()));
|
||||
upOrderPayInfo(orderInfo.getId(), "aliPay".equals(payParam.getPayType()) ? PayEnums.ALIPAY_MINI : PayEnums.WECHAT_MINI, paymentId);
|
||||
return ltPay(payParam.getShopId(), payParam.getPayType(), new CzgLtPayReq(payOrderNo, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(),
|
||||
|
|
@ -195,10 +184,10 @@ public class PayServiceImpl implements PayService {
|
|||
@Override
|
||||
@Transactional
|
||||
public CzgResult<Map<String, Object>> scanPayOrder(@NonNull String clintIp, OrderPayParamDTO payParam) {
|
||||
OrderInfo orderInfo = checkPay(payParam.getOrderId());
|
||||
OrderInfo orderInfo = checkPay(payParam.getCheckOrderPay());
|
||||
|
||||
String payOrderNo = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId();
|
||||
Long paymentId = initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(),
|
||||
Long paymentId = initOrderPayment(new OrderPayment(payParam.getShopId(), orderInfo.getId(),
|
||||
"order", payOrderNo, "", orderInfo.getOrderAmount()));
|
||||
upOrderPayInfo(orderInfo.getId(), PayEnums.MAIN_SCAN, paymentId);
|
||||
return scanPay(payParam.getShopId(), new CzgScanPayReq(payOrderNo, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(),
|
||||
|
|
@ -208,10 +197,10 @@ public class PayServiceImpl implements PayService {
|
|||
@Override
|
||||
@Transactional
|
||||
public CzgResult<Map<String, Object>> microPayOrder(OrderPayParamDTO payParam) {
|
||||
OrderInfo orderInfo = checkPay(payParam.getOrderId());
|
||||
OrderInfo orderInfo = checkPay(payParam.getCheckOrderPay());
|
||||
AssertUtil.isBlank(payParam.getAuthCode(), "扫描码不能为空");
|
||||
String payOrderNo = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId();
|
||||
Long paymentId = initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(),
|
||||
Long paymentId = initOrderPayment(new OrderPayment(payParam.getShopId(), orderInfo.getId(),
|
||||
"order", payOrderNo, payParam.getAuthCode(), orderInfo.getOrderAmount()));
|
||||
upOrderPayInfo(orderInfo.getId(), PayEnums.BACK_SCAN, paymentId);
|
||||
return microPay(payParam.getShopId(), new CzgMicroPayReq(payOrderNo, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(),
|
||||
|
|
|
|||
Loading…
Reference in New Issue