现金支付

支付回调
This commit is contained in:
2025-02-19 10:06:48 +08:00
parent 400515b641
commit 7338854429
10 changed files with 111 additions and 60 deletions

View File

@@ -17,7 +17,7 @@ import org.springframework.web.bind.annotation.RestController;
*/ */
@Slf4j @Slf4j
@RestController @RestController
@RequestMapping("notify") @RequestMapping("/notify")
public class NotifyController { public class NotifyController {
private static final String SUCCESS = "SUCCESS"; private static final String SUCCESS = "SUCCESS";
@@ -25,7 +25,7 @@ public class NotifyController {
private OrderInfoService orderInfoService; private OrderInfoService orderInfoService;
@RequestMapping("payCallBack") @RequestMapping("/payCallBack")
public String notifyCallBack(@RequestBody CzgBaseRespParams respParams){ public String notifyCallBack(@RequestBody CzgBaseRespParams respParams){
JSONObject czg = CzgPayUtils.getCzg(respParams); JSONObject czg = CzgPayUtils.getCzg(respParams);
AssertUtil.isNull(czg, "回调数据为空"); AssertUtil.isNull(czg, "回调数据为空");

View File

@@ -28,6 +28,11 @@ public class OrderPayController {
private PayService payService; private PayService payService;
@PostMapping("/cashPay")
public CzgResult<Object> cashPayOrder(@Validated @RequestBody OrderPayParamDTO payParam) {
return payService.cashPayOrder(payParam);
}
/** /**
* 会员支付 * 会员支付
* payType 必填 * payType 必填
@@ -37,7 +42,7 @@ public class OrderPayController {
* <p> * <p>
* accountPay(小程序使用) 密码支付 用户密码pwd 必填 * accountPay(小程序使用) 密码支付 用户密码pwd 必填
*/ */
@PostMapping("vipPay") @PostMapping("/vipPay")
public CzgResult<Object> vipPayOrder(@Validated @RequestBody OrderPayParamDTO payParam) { public CzgResult<Object> vipPayOrder(@Validated @RequestBody OrderPayParamDTO payParam) {
AssertUtil.isBlank(payParam.getPayType(), "支付类型不可为空"); AssertUtil.isBlank(payParam.getPayType(), "支付类型不可为空");
return payService.vipPayOrder(payParam); return payService.vipPayOrder(payParam);
@@ -46,7 +51,7 @@ public class OrderPayController {
/** /**
* h5支付 * h5支付
*/ */
@PostMapping("h5Pay") @PostMapping("/h5Pay")
public CzgResult<Map<String, Object>> h5PayOrder(HttpServletRequest request, @Validated @RequestBody OrderPayParamDTO payParam) { public CzgResult<Map<String, Object>> h5PayOrder(HttpServletRequest request, @Validated @RequestBody OrderPayParamDTO payParam) {
return payService.h5PayOrder(ServletUtil.getClientIPByHeader(request), payParam); return payService.h5PayOrder(ServletUtil.getClientIPByHeader(request), payParam);
} }
@@ -57,7 +62,7 @@ public class OrderPayController {
* payType 必填 支付方式aliPay 支付宝wechatPay 微信 * payType 必填 支付方式aliPay 支付宝wechatPay 微信
* openId 必填 * openId 必填
*/ */
@PostMapping("jsPay") @PostMapping("/jsPay")
public CzgResult<Map<String, Object>> jsPayOrder(HttpServletRequest request, @Validated @RequestBody OrderPayParamDTO payParam) { public CzgResult<Map<String, Object>> jsPayOrder(HttpServletRequest request, @Validated @RequestBody OrderPayParamDTO payParam) {
return payService.jsPayOrder(ServletUtil.getClientIPByHeader(request), payParam); return payService.jsPayOrder(ServletUtil.getClientIPByHeader(request), payParam);
} }
@@ -67,7 +72,7 @@ public class OrderPayController {
* payType 必填 支付方式aliPay 支付宝wechatPay 微信 * payType 必填 支付方式aliPay 支付宝wechatPay 微信
* openId 必填 * openId 必填
*/ */
@PostMapping("ltPayOrder") @PostMapping("/ltPayOrder")
public CzgResult<Map<String, Object>> ltPayOrder(HttpServletRequest request, @Validated @RequestBody OrderPayParamDTO payParam) { public CzgResult<Map<String, Object>> ltPayOrder(HttpServletRequest request, @Validated @RequestBody OrderPayParamDTO payParam) {
return payService.ltPayOrder(ServletUtil.getClientIPByHeader(request), payParam); return payService.ltPayOrder(ServletUtil.getClientIPByHeader(request), payParam);
} }
@@ -75,7 +80,7 @@ public class OrderPayController {
/** /**
* 正扫 * 正扫
*/ */
@PostMapping("scanPay") @PostMapping("/scanPay")
public CzgResult<Map<String, Object>> scanPayOrder(HttpServletRequest request, @Validated @RequestBody OrderPayParamDTO payParam) { public CzgResult<Map<String, Object>> scanPayOrder(HttpServletRequest request, @Validated @RequestBody OrderPayParamDTO payParam) {
return payService.scanPayOrder(ServletUtil.getClientIPByHeader(request), payParam); return payService.scanPayOrder(ServletUtil.getClientIPByHeader(request), payParam);
} }
@@ -84,7 +89,7 @@ public class OrderPayController {
* 反扫 * 反扫
* authCode 必填 扫描码 * authCode 必填 扫描码
*/ */
@PostMapping("microPay") @PostMapping("/microPay")
public CzgResult<Map<String, Object>> microPayOrder(@Validated @RequestBody OrderPayParamDTO payParam) { public CzgResult<Map<String, Object>> microPayOrder(@Validated @RequestBody OrderPayParamDTO payParam) {
return payService.microPayOrder(payParam); return payService.microPayOrder(payParam);
} }

View File

@@ -31,7 +31,7 @@ public class VipPayController {
* 现金充值 * 现金充值
* 如果shop_info的 is_member_in_pwd=1 则pwd必填 店铺操作密码 * 如果shop_info的 is_member_in_pwd=1 则pwd必填 店铺操作密码
*/ */
@PostMapping("cashPayVip") @PostMapping("/cashPayVip")
public CzgResult<Object> cashPayVip(@Validated @RequestBody VipPayParamDTO payParam) { public CzgResult<Object> cashPayVip(@Validated @RequestBody VipPayParamDTO payParam) {
AssertUtil.isNull(payParam.getShopUserId(), "充值失败 未指定店铺用户Id"); AssertUtil.isNull(payParam.getShopUserId(), "充值失败 未指定店铺用户Id");
payParam.setPlatformType(ServletUtil.getHeaderIgnoreCase(ServletUtil.getRequest(), "platformType")); payParam.setPlatformType(ServletUtil.getHeaderIgnoreCase(ServletUtil.getRequest(), "platformType"));
@@ -43,7 +43,7 @@ public class VipPayController {
* payType 必填 支付方式aliPay 支付宝wechatPay 微信 * payType 必填 支付方式aliPay 支付宝wechatPay 微信
* openId 必填 * openId 必填
*/ */
@PostMapping("jsPayVip") @PostMapping("/jsPayVip")
public CzgResult<Map<String, Object>> jsPayVip(HttpServletRequest request, @Validated @RequestBody VipPayParamDTO payParam) { public CzgResult<Map<String, Object>> jsPayVip(HttpServletRequest request, @Validated @RequestBody VipPayParamDTO payParam) {
AssertUtil.isNull(payParam.getShopUserId(), "充值失败 未指定店铺用户Id"); AssertUtil.isNull(payParam.getShopUserId(), "充值失败 未指定店铺用户Id");
payParam.setPlatformType(ServletUtil.getHeaderIgnoreCase(ServletUtil.getRequest(), "platformType")); payParam.setPlatformType(ServletUtil.getHeaderIgnoreCase(ServletUtil.getRequest(), "platformType"));
@@ -55,7 +55,7 @@ public class VipPayController {
* payType 必填 支付方式aliPay 支付宝wechatPay 微信 * payType 必填 支付方式aliPay 支付宝wechatPay 微信
* openId 必填 * openId 必填
*/ */
@PostMapping("ltPayVip") @PostMapping("/ltPayVip")
public CzgResult<Map<String, Object>> ltPayVip(HttpServletRequest request, @Validated @RequestBody VipPayParamDTO payParam) { public CzgResult<Map<String, Object>> ltPayVip(HttpServletRequest request, @Validated @RequestBody VipPayParamDTO payParam) {
AssertUtil.isNull(payParam.getShopUserId(), "充值失败 未指定店铺用户Id"); AssertUtil.isNull(payParam.getShopUserId(), "充值失败 未指定店铺用户Id");
payParam.setPlatformType(ServletUtil.getHeaderIgnoreCase(ServletUtil.getRequest(), "platformType")); payParam.setPlatformType(ServletUtil.getHeaderIgnoreCase(ServletUtil.getRequest(), "platformType"));
@@ -65,7 +65,7 @@ public class VipPayController {
/** /**
* 正扫 * 正扫
*/ */
@PostMapping("scanPayVip") @PostMapping("/scanPayVip")
public CzgResult<Map<String, Object>> scanPayVip(HttpServletRequest request, @Validated @RequestBody VipPayParamDTO payParam) { public CzgResult<Map<String, Object>> scanPayVip(HttpServletRequest request, @Validated @RequestBody VipPayParamDTO payParam) {
AssertUtil.isNull(payParam.getShopUserId(), "充值失败 未指定店铺用户Id"); AssertUtil.isNull(payParam.getShopUserId(), "充值失败 未指定店铺用户Id");
payParam.setPlatformType(ServletUtil.getHeaderIgnoreCase(ServletUtil.getRequest(), "platformType")); payParam.setPlatformType(ServletUtil.getHeaderIgnoreCase(ServletUtil.getRequest(), "platformType"));
@@ -76,7 +76,7 @@ public class VipPayController {
* 反扫 * 反扫
* authCode 必填 扫描码 * authCode 必填 扫描码
*/ */
@PostMapping("microPayVip") @PostMapping("/microPayVip")
public CzgResult<Map<String, Object>> microPayVip(@Validated @RequestBody VipPayParamDTO payParam) { public CzgResult<Map<String, Object>> microPayVip(@Validated @RequestBody VipPayParamDTO payParam) {
AssertUtil.isNull(payParam.getShopUserId(), "充值失败 未指定店铺用户Id"); AssertUtil.isNull(payParam.getShopUserId(), "充值失败 未指定店铺用户Id");
payParam.setPlatformType(ServletUtil.getHeaderIgnoreCase(ServletUtil.getRequest(), "platformType")); payParam.setPlatformType(ServletUtil.getHeaderIgnoreCase(ServletUtil.getRequest(), "platformType"));

View File

@@ -16,7 +16,7 @@ import org.springframework.web.bind.annotation.*;
* @description * @description
*/ */
@RestController @RestController
@RequestMapping("admin/order") @RequestMapping("/admin/order")
public class AdminOrderController { public class AdminOrderController {
@Resource @Resource

View File

@@ -1,4 +1,4 @@
package com.czg.service.order.enums; package com.czg.order.enums;
import lombok.Getter; import lombok.Getter;

View File

@@ -3,10 +3,14 @@ package com.czg.order.service;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.czg.order.dto.OrderInfoQueryDTO; import com.czg.order.dto.OrderInfoQueryDTO;
import com.czg.order.entity.OrderInfo; import com.czg.order.entity.OrderInfo;
import com.czg.order.enums.PayEnums;
import com.czg.order.vo.OrderInfoVo; import com.czg.order.vo.OrderInfoVo;
import com.mybatisflex.core.paginate.Page; import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.service.IService; import com.mybatisflex.core.service.IService;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/** /**
* 订单表 服务层。 * 订单表 服务层。
* *
@@ -16,6 +20,10 @@ import com.mybatisflex.core.service.IService;
public interface OrderInfoService extends IService<OrderInfo> { public interface OrderInfoService extends IService<OrderInfo> {
Page<OrderInfoVo> getOrderByPage(OrderInfoQueryDTO param); Page<OrderInfoVo> getOrderByPage(OrderInfoQueryDTO param);
void payCallBackOrder(String orderNo, JSONObject resultJson); void payCallBackOrder(String orderNo, JSONObject resultJson);
void refundCallBackOrder(); void refundCallBackOrder();
void upOrderInfo(Long orderId, BigDecimal payAmount, LocalDateTime payTime, Long payOrderId, PayEnums payType);
} }

View File

@@ -20,6 +20,9 @@ public class VipPayParamDTO {
private BigDecimal amount; private BigDecimal amount;
private String buyerRemark; private String buyerRemark;
/**
* 跳转地址
*/
private String returnUrl; private String returnUrl;
/** /**
* 平台类型 pc 收银机客户端 wechat 微信小程序 alipay 支付宝小程序 admin-pc PC管理端 admin-app APP管理端 * 平台类型 pc 收银机客户端 wechat 微信小程序 alipay 支付宝小程序 admin-pc PC管理端 admin-app APP管理端
@@ -27,6 +30,9 @@ public class VipPayParamDTO {
private String platformType; private String platformType;
private String payType; private String payType;
private String openId; private String openId;
/**
* 扫码支付 扫描码
*/
private String authCode; private String authCode;
private String pwd; private String pwd;
} }

View File

@@ -16,6 +16,10 @@ import java.util.Map;
* @author ww * @author ww
*/ */
public interface PayService { public interface PayService {
/**
* 现金支付
*/
CzgResult<Object> cashPayOrder(OrderPayParamDTO payParam);
/** /**
* 会员支付 * 会员支付
*/ */

View File

@@ -1,6 +1,7 @@
package com.czg.service.order.service.impl; package com.czg.service.order.service.impl;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.czg.account.dto.shopuser.ShopUserMoneyEditDTO; import com.czg.account.dto.shopuser.ShopUserMoneyEditDTO;
@@ -14,6 +15,7 @@ import com.czg.order.dto.OrderInfoQueryDTO;
import com.czg.order.entity.OrderDetail; import com.czg.order.entity.OrderDetail;
import com.czg.order.entity.OrderInfo; import com.czg.order.entity.OrderInfo;
import com.czg.order.entity.OrderPayment; import com.czg.order.entity.OrderPayment;
import com.czg.order.enums.PayEnums;
import com.czg.order.service.OrderDetailService; import com.czg.order.service.OrderDetailService;
import com.czg.order.service.OrderInfoService; import com.czg.order.service.OrderInfoService;
import com.czg.order.service.OrderPaymentService; import com.czg.order.service.OrderPaymentService;
@@ -25,6 +27,7 @@ import com.czg.utils.CzgStrUtils;
import com.czg.utils.PageUtil; import com.czg.utils.PageUtil;
import com.mybatisflex.core.paginate.Page; import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.query.QueryWrapper; import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.core.update.UpdateChain;
import com.mybatisflex.spring.service.impl.ServiceImpl; import com.mybatisflex.spring.service.impl.ServiceImpl;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
@@ -34,6 +37,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List; import java.util.List;
/** /**
@@ -104,15 +108,8 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
if ("TRADE_SUCCESS".equals(czgCallBackDto.getState())) { if ("TRADE_SUCCESS".equals(czgCallBackDto.getState())) {
if ("order".equals(payment.getPayType())) { if ("order".equals(payment.getPayType())) {
updateChain() upOrderInfo(payment.getSourceId(), new BigDecimal(czgCallBackDto.getAmount() / 100L),
.set(OrderInfo::getPayAmount, new BigDecimal(czgCallBackDto.getAmount() / 100L)) DateUtil.parseLocalDateTime(czgCallBackDto.getPayTime()), payment.getId(), null);
.set(OrderInfo::getStatus, OrderStatusEnums.DONE.getCode())
.set(OrderInfo::getPaidTime, DateUtil.parseLocalDateTime(czgCallBackDto.getPayTime()))
.set(OrderInfo::getPayOrderId, payment.getId())
.where(OrderInfo::getId).eq(payment.getSourceId())
.update();
//发送打票信息
rabbitPublisher.sendOrderPrintMsg(payment.getSourceId().toString());
} else if ("memberIn".equals(payment.getPayType())) { } else if ("memberIn".equals(payment.getPayType())) {
ShopUser shopUser = shopUserService.getById(payment.getSourceId()); ShopUser shopUser = shopUserService.getById(payment.getSourceId());
if (shopUser == null) { if (shopUser == null) {
@@ -152,4 +149,33 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
public void refundCallBackOrder() { public void refundCallBackOrder() {
} }
/**
* 更新订单信息 (支付成功后调用)
*
* @param payAmount 注意是分 还是元
* @param payTime 支付时间
* @param payOrderId 支付订单号
* 现金支付为空
* 会员支付为tb_shop_user_flow.id
* 其它支付为 tb_order_payment.id
*/
@Override
public void upOrderInfo(Long orderId, BigDecimal payAmount, LocalDateTime payTime, Long payOrderId, PayEnums payType) {
UpdateChain<OrderInfo> updateChain = updateChain()
.set(OrderInfo::getPayAmount, payAmount)
.set(OrderInfo::getStatus, OrderStatusEnums.DONE.getCode())
.set(OrderInfo::getPaidTime, payTime)
.where(OrderInfo::getId).eq(orderId);
if (payOrderId != null) {
updateChain.set(OrderInfo::getPayOrderId, payOrderId);
}
if (ObjectUtil.isNotNull(payType)) {
updateChain.set(OrderInfo::getPayType, payType.getValue());
}
updateChain.update();
//发送打票信息
rabbitPublisher.sendOrderPrintMsg(orderId.toString());
}
} }

View File

@@ -17,6 +17,7 @@ import com.czg.entity.resp.*;
import com.czg.enums.ShopUserFlowBizEnum; import com.czg.enums.ShopUserFlowBizEnum;
import com.czg.order.entity.OrderInfo; import com.czg.order.entity.OrderInfo;
import com.czg.order.entity.OrderPayment; import com.czg.order.entity.OrderPayment;
import com.czg.order.enums.PayEnums;
import com.czg.order.service.OrderInfoService; import com.czg.order.service.OrderInfoService;
import com.czg.order.service.OrderPaymentService; import com.czg.order.service.OrderPaymentService;
import com.czg.resp.CzgResult; import com.czg.resp.CzgResult;
@@ -24,8 +25,6 @@ import com.czg.service.CzgPayService;
import com.czg.service.RedisService; import com.czg.service.RedisService;
import com.czg.service.order.dto.OrderPayParamDTO; import com.czg.service.order.dto.OrderPayParamDTO;
import com.czg.service.order.dto.VipPayParamDTO; import com.czg.service.order.dto.VipPayParamDTO;
import com.czg.service.order.enums.OrderStatusEnums;
import com.czg.service.order.enums.PayEnums;
import com.czg.service.order.service.PayService; import com.czg.service.order.service.PayService;
import com.czg.system.enums.SysParamCodeEnum; import com.czg.system.enums.SysParamCodeEnum;
import com.czg.system.service.SysParamsService; import com.czg.system.service.SysParamsService;
@@ -76,19 +75,32 @@ public class PayServiceImpl implements PayService {
private final BigDecimal MONEY_RATE = new BigDecimal("100"); private final BigDecimal MONEY_RATE = new BigDecimal("100");
@Override private OrderInfo checkPay(Long orderId) {
@Transactional OrderInfo orderInfo = orderInfoService.getById(orderId);
public CzgResult<Object> vipPayOrder(OrderPayParamDTO payParam) {
OrderInfo orderInfo = orderInfoService.getById(payParam.getOrderId());
AssertUtil.isNull(orderInfo, "订单不存在"); AssertUtil.isNull(orderInfo, "订单不存在");
if (!"unpaid".equals(orderInfo.getStatus())) { if (!"unpaid".equals(orderInfo.getStatus())) {
return CzgResult.failure("该订单已不可支付"); throw new ValidateException("该订单已不可支付");
} }
if (!"afterPay".equals(orderInfo.getPayMode()) if (!"afterPay".equals(orderInfo.getPayMode())
&& orderInfo.getCreateTime().isAfter(LocalDateTimeUtil.offset(LocalDateTime.now(), -15, ChronoUnit.SECONDS))) { && orderInfo.getCreateTime().isAfter(LocalDateTimeUtil.offset(LocalDateTime.now(), -15, ChronoUnit.SECONDS))) {
return CzgResult.failure("订单十五分钟内有效,当前已超时,请重新下单。"); throw new ValidateException("订单十五分钟内有效,当前已超时,请重新下单。");
} }
return orderInfo;
}
@Override
@Transactional
public CzgResult<Object> cashPayOrder(OrderPayParamDTO payParam) {
OrderInfo orderInfo = checkPay(payParam.getOrderId());
orderInfoService.upOrderInfo(orderInfo.getId(), orderInfo.getOrderAmount(),
LocalDateTime.now(), null, PayEnums.CASH_PAY);
return CzgResult.success();
}
@Override
@Transactional
public CzgResult<Object> vipPayOrder(OrderPayParamDTO payParam) {
OrderInfo orderInfo = checkPay(payParam.getOrderId());
ShopUser shopUser = new ShopUser(); ShopUser shopUser = new ShopUser();
if ("scanCode".equals(payParam.getPayType())) { if ("scanCode".equals(payParam.getPayType())) {
AssertUtil.isBlank(payParam.getAuthCode(), "会员码不能为空"); AssertUtil.isBlank(payParam.getAuthCode(), "会员码不能为空");
@@ -128,28 +140,19 @@ public class PayServiceImpl implements PayService {
.build(); .build();
//更新会员余额 并生成流水 //更新会员余额 并生成流水
Long flowId = shopUserService.updateMoney(shopUser.getShopId(), shopUserMoneyEditDTO); Long flowId = shopUserService.updateMoney(shopUser.getShopId(), shopUserMoneyEditDTO);
orderInfoService.updateChain() orderInfoService.upOrderInfo(orderInfo.getId(), orderInfo.getOrderAmount(),
.set(OrderInfo::getPayAmount, orderInfo.getOrderAmount()) LocalDateTime.now(), flowId, PayEnums.VIP_PAY);
.set(OrderInfo::getStatus, OrderStatusEnums.DONE.getCode())
.set(OrderInfo::getPaidTime, LocalDateTime.now())
.set(OrderInfo::getPayType, "vip-pay")
.set(OrderInfo::getPayOrderId, flowId)
.where(OrderInfo::getId).eq(orderInfo.getId())
.update();
//发送打票信息
rabbitPublisher.sendOrderPrintMsg(orderInfo.getId().toString());
return CzgResult.success(); return CzgResult.success();
} }
@Override @Override
@Transactional @Transactional
public CzgResult<Map<String, Object>> h5PayOrder(@NonNull String clintIp, OrderPayParamDTO payParam) { public CzgResult<Map<String, Object>> h5PayOrder(@NonNull String clintIp, OrderPayParamDTO payParam) {
OrderInfo orderInfo = orderInfoService.getById(payParam.getOrderId()); OrderInfo orderInfo = checkPay(payParam.getOrderId());
AssertUtil.isNull(orderInfo, "订单不存在");
String payOrderNo = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId(); String payOrderNo = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId();
Long paymentId = initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(), Long paymentId = initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(),
"order", payOrderNo, "", orderInfo.getOrderAmount())); "order", payOrderNo, "", orderInfo.getOrderAmount()));
upOrderPayInfo(orderInfo.getId(), PayEnums.H5_PAY.getValue(), paymentId); upOrderPayInfo(orderInfo.getId(), PayEnums.H5_PAY, paymentId);
return h5Pay(payParam.getShopId(), new CzgH5PayReq(payOrderNo, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(), return h5Pay(payParam.getShopId(), new CzgH5PayReq(payOrderNo, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(),
"点餐支付", clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), "")); "点餐支付", clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), ""));
} }
@@ -158,14 +161,13 @@ public class PayServiceImpl implements PayService {
@Override @Override
@Transactional @Transactional
public CzgResult<Map<String, Object>> jsPayOrder(@NonNull String clintIp, OrderPayParamDTO payParam) { public CzgResult<Map<String, Object>> jsPayOrder(@NonNull String clintIp, OrderPayParamDTO payParam) {
OrderInfo orderInfo = orderInfoService.getById(payParam.getOrderId()); OrderInfo orderInfo = checkPay(payParam.getOrderId());
AssertUtil.isNull(orderInfo, "订单不存在");
AssertUtil.isBlank(payParam.getOpenId(), "用户小程序ID不能为空");
AssertUtil.isBlank(payParam.getPayType(), "支付方式不能为空"); AssertUtil.isBlank(payParam.getPayType(), "支付方式不能为空");
AssertUtil.isBlank(payParam.getOpenId(), "用户小程序ID不能为空");
String payOrderNo = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId(); String payOrderNo = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId();
Long paymentId = initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(), Long paymentId = initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(),
"order", payOrderNo, "", orderInfo.getOrderAmount())); "order", payOrderNo, "", orderInfo.getOrderAmount()));
upOrderPayInfo(orderInfo.getId(), "aliPay".equals(payParam.getPayType()) ? PayEnums.ALIPAY_MINI.getValue() : PayEnums.WECHAT_MINI.getValue(), paymentId); 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(), return jsPay(payParam.getShopId(), payParam.getPayType(), new CzgJsPayReq(payOrderNo, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(),
"点餐支付", payParam.getOpenId(), clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), "")); "点餐支付", payParam.getOpenId(), clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), ""));
} }
@@ -173,12 +175,13 @@ public class PayServiceImpl implements PayService {
@Override @Override
@Transactional @Transactional
public CzgResult<Map<String, Object>> ltPayOrder(@NonNull String clintIp, OrderPayParamDTO payParam) { public CzgResult<Map<String, Object>> ltPayOrder(@NonNull String clintIp, OrderPayParamDTO payParam) {
OrderInfo orderInfo = orderInfoService.getById(payParam.getOrderId()); OrderInfo orderInfo = checkPay(payParam.getOrderId());
AssertUtil.isNull(orderInfo, "订单不存在"); AssertUtil.isBlank(payParam.getPayType(), "支付方式不能为空");
AssertUtil.isBlank(payParam.getOpenId(), "用户小程序ID不能为空");
String payOrderNo = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId(); String payOrderNo = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId();
Long paymentId = initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(), Long paymentId = initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(),
"order", payOrderNo, "", orderInfo.getOrderAmount())); "order", payOrderNo, "", orderInfo.getOrderAmount()));
upOrderPayInfo(orderInfo.getId(), "aliPay".equals(payParam.getPayType()) ? PayEnums.ALIPAY_MINI.getValue() : PayEnums.WECHAT_MINI.getValue(), paymentId); 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(), return ltPay(payParam.getShopId(), payParam.getPayType(), new CzgLtPayReq(payOrderNo, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(),
"点餐支付", payParam.getOpenId(), clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), "")); "点餐支付", payParam.getOpenId(), clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), ""));
} }
@@ -186,12 +189,12 @@ public class PayServiceImpl implements PayService {
@Override @Override
@Transactional @Transactional
public CzgResult<Map<String, Object>> scanPayOrder(@NonNull String clintIp, OrderPayParamDTO payParam) { public CzgResult<Map<String, Object>> scanPayOrder(@NonNull String clintIp, OrderPayParamDTO payParam) {
OrderInfo orderInfo = orderInfoService.getById(payParam.getOrderId()); OrderInfo orderInfo = checkPay(payParam.getOrderId());
AssertUtil.isNull(orderInfo, "订单不存在");
String payOrderNo = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId(); String payOrderNo = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId();
Long paymentId = initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(), Long paymentId = initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(),
"order", payOrderNo, "", orderInfo.getOrderAmount())); "order", payOrderNo, "", orderInfo.getOrderAmount()));
upOrderPayInfo(orderInfo.getId(), PayEnums.MAIN_SCAN.getValue(), paymentId); upOrderPayInfo(orderInfo.getId(), PayEnums.MAIN_SCAN, paymentId);
return scanPay(payParam.getShopId(), new CzgScanPayReq(payOrderNo, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(), return scanPay(payParam.getShopId(), new CzgScanPayReq(payOrderNo, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(),
"点餐支付", clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), "")); "点餐支付", clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), ""));
} }
@@ -199,13 +202,12 @@ public class PayServiceImpl implements PayService {
@Override @Override
@Transactional @Transactional
public CzgResult<Map<String, Object>> microPayOrder(OrderPayParamDTO payParam) { public CzgResult<Map<String, Object>> microPayOrder(OrderPayParamDTO payParam) {
OrderInfo orderInfo = orderInfoService.getById(payParam.getOrderId()); OrderInfo orderInfo = checkPay(payParam.getOrderId());
AssertUtil.isNull(orderInfo, "订单不存在");
AssertUtil.isBlank(payParam.getAuthCode(), "扫描码不能为空"); AssertUtil.isBlank(payParam.getAuthCode(), "扫描码不能为空");
String payOrderNo = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId(); String payOrderNo = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId();
Long paymentId = initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(), Long paymentId = initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(),
"order", payOrderNo, payParam.getAuthCode(), orderInfo.getOrderAmount())); "order", payOrderNo, payParam.getAuthCode(), orderInfo.getOrderAmount()));
upOrderPayInfo(orderInfo.getId(), PayEnums.BACK_SCAN.getValue(), paymentId); upOrderPayInfo(orderInfo.getId(), PayEnums.BACK_SCAN, paymentId);
return microPay(payParam.getShopId(), new CzgMicroPayReq(payOrderNo, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(), return microPay(payParam.getShopId(), new CzgMicroPayReq(payOrderNo, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(),
"点餐支付", payParam.getAuthCode(), payParam.getBuyerRemark(), "")); "点餐支付", payParam.getAuthCode(), payParam.getBuyerRemark(), ""));
} }
@@ -322,10 +324,10 @@ public class PayServiceImpl implements PayService {
return payment.getId(); return payment.getId();
} }
private void upOrderPayInfo(@NonNull Long orderId, @NotBlank String payType, @NotBlank Long paymentId) { private void upOrderPayInfo(@NonNull Long orderId, @NonNull PayEnums payType, @NotBlank Long paymentId) {
orderInfoService.updateChain() orderInfoService.updateChain()
.set(OrderInfo::getPayOrderId, paymentId) .set(OrderInfo::getPayOrderId, paymentId)
.set(OrderInfo::getPayType, payType) .set(OrderInfo::getPayType, payType.getValue())
.where(OrderInfo::getId).eq(orderId) .where(OrderInfo::getId).eq(orderId)
.update(); .update();
} }