后续封装

This commit is contained in:
2025-02-15 17:38:02 +08:00
parent 2e6fc7c4b3
commit 33d8baeace
8 changed files with 87 additions and 35 deletions

View File

@@ -67,7 +67,7 @@ public class PayController {
* authCode 必填 扫描码 * authCode 必填 扫描码
*/ */
@PostMapping("microPay") @PostMapping("microPay")
public CzgResult<CzgMicroPayResp> microPayOrder(@Validated @RequestBody OrderPayParamDTO payParam) { public CzgResult<Object> microPayOrder(@Validated @RequestBody OrderPayParamDTO payParam) {
return payService.microPayOrder(payParam); return payService.microPayOrder(payParam);
} }
} }

View File

@@ -3,7 +3,6 @@ package com.czg.order.dto;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import com.alibaba.fastjson2.annotation.JSONField; import com.alibaba.fastjson2.annotation.JSONField;
@@ -30,7 +29,7 @@ public class OrderInfoDTO implements Serializable {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private BigInteger id; private Long id;
/** /**
* 订单编号 * 订单编号

View File

@@ -80,7 +80,7 @@ public class OrderInfoQueryDTO implements Serializable {
/** /**
* 是否回收站 0-否1回收站 默认查未删除 * 是否回收站 0-否1回收站 默认查未删除
*/ */
private Integer isDel = 0; private Integer isDel;
/** /**
* 查询包含该商品的 所有订单 * 查询包含该商品的 所有订单

View File

@@ -7,7 +7,6 @@ import com.mybatisflex.annotation.Table;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.io.Serial; import java.io.Serial;
@@ -34,7 +33,7 @@ public class OrderInfo implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@Id(keyType = KeyType.Auto) @Id(keyType = KeyType.Auto)
private BigInteger id; private Long id;
/** /**
* 订单编号 * 订单编号

View File

@@ -0,0 +1,28 @@
package com.czg.service.order.enums;
import lombok.Getter;
/**
* @author ww
*/
@Getter
public enum PayEnums {
MAIN_SCAN("main_scan", "主扫"),
BACK_SCAN("back_scan", "被扫"),
WECHAT_MINI("wechat_mini", "微信小程序"),
ALIPAY_MINI("alipay_mini", "支付宝小程序"),
VIP_PAY("vip_pay", "会员支付"),
CASH_PAY("cash_pay", "现金支付"),
H5_PAY("h5_pay", "h5支付");
private final String value;
private final String msg;
PayEnums(String value, String msg) {
this.value = value;
this.msg = msg;
}
}

View File

@@ -1,7 +1,5 @@
package com.czg.service.order.service; package com.czg.service.order.service;
import com.czg.entity.notify.CzgPayNotifyDTO;
import com.czg.entity.notify.CzgRefundNotifyDTO;
import com.czg.entity.resp.*; import com.czg.entity.resp.*;
import com.czg.resp.CzgResult; import com.czg.resp.CzgResult;
import com.czg.service.order.dto.OrderPayParamDTO; import com.czg.service.order.dto.OrderPayParamDTO;
@@ -37,7 +35,7 @@ public interface PayService {
/** /**
* 聚合反扫 * 聚合反扫
*/ */
CzgResult<CzgMicroPayResp> microPayOrder(OrderPayParamDTO payParam); CzgResult<Object> microPayOrder(OrderPayParamDTO payParam);
/** /**

View File

@@ -1,5 +1,6 @@
package com.czg.service.order.service.impl; package com.czg.service.order.service.impl;
import cn.hutool.core.date.DateUtil;
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.entity.notify.CzgPayNotifyDTO; import com.czg.entity.notify.CzgPayNotifyDTO;
@@ -87,6 +88,8 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
updateChain().of(OrderInfo.class) updateChain().of(OrderInfo.class)
.set(OrderInfo::getPayAmount, new BigDecimal(czgCallBackDto.getAmount() / 100L)) .set(OrderInfo::getPayAmount, new BigDecimal(czgCallBackDto.getAmount() / 100L))
.set(OrderInfo::getStatus, OrderStatusEnums.DONE.getCode()) .set(OrderInfo::getStatus, OrderStatusEnums.DONE.getCode())
.set(OrderInfo::getPaidTime, DateUtil.parseLocalDateTime(czgCallBackDto.getPayTime()))
.set(OrderInfo::getPayOrderNo, czgCallBackDto.getMchOrderNo())
.where(OrderInfo::getId).eq(payment.getSourceId()) .where(OrderInfo::getId).eq(payment.getSourceId())
.update(); .update();
//发送打票信息 //发送打票信息

View File

@@ -3,8 +3,6 @@ package com.czg.service.order.service.impl;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import com.czg.account.entity.ShopMerchant; import com.czg.account.entity.ShopMerchant;
import com.czg.account.service.ShopMerchantService; import com.czg.account.service.ShopMerchantService;
import com.czg.entity.notify.CzgPayNotifyDTO;
import com.czg.entity.notify.CzgRefundNotifyDTO;
import com.czg.entity.req.*; import com.czg.entity.req.*;
import com.czg.entity.resp.*; import com.czg.entity.resp.*;
import com.czg.order.entity.OrderInfo; import com.czg.order.entity.OrderInfo;
@@ -14,11 +12,13 @@ import com.czg.order.service.OrderPaymentService;
import com.czg.resp.CzgResult; import com.czg.resp.CzgResult;
import com.czg.service.CzgPayService; import com.czg.service.CzgPayService;
import com.czg.service.order.dto.OrderPayParamDTO; import com.czg.service.order.dto.OrderPayParamDTO;
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;
import com.czg.utils.AssertUtil; import com.czg.utils.AssertUtil;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import jakarta.validation.constraints.NotBlank;
import lombok.NonNull; import lombok.NonNull;
import org.apache.dubbo.config.annotation.DubboReference; import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -51,9 +51,10 @@ public class PayServiceImpl implements PayService {
public CzgResult<CzgH5PayResp> h5PayOrder(@NonNull String clintIp, OrderPayParamDTO payParam) { public CzgResult<CzgH5PayResp> h5PayOrder(@NonNull String clintIp, OrderPayParamDTO payParam) {
OrderInfo orderInfo = orderInfoService.getById(payParam.getOrderId()); OrderInfo orderInfo = orderInfoService.getById(payParam.getOrderId());
AssertUtil.isNull(orderInfo, "订单不存在"); AssertUtil.isNull(orderInfo, "订单不存在");
String payOrderNO = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId(); String payOrderNo = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId();
initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(), "order", payOrderNO, "", orderInfo.getOrderAmount())); initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(), "order", payOrderNo, "", orderInfo.getOrderAmount()));
return h5Pay(payParam.getShopId(), new CzgH5PayReq(payOrderNO, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(), upOrderPayInfo(orderInfo.getId(), PayEnums.H5_PAY.getValue(), payOrderNo);
return h5Pay(payParam.getShopId(), new CzgH5PayReq(payOrderNo, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(),
"点餐支付", clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), payJsonExtParam)); "点餐支付", clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), payJsonExtParam));
} }
@@ -62,9 +63,10 @@ public class PayServiceImpl implements PayService {
public CzgResult<CzgJsPayResp> jsPayOrder(@NonNull String clintIp, OrderPayParamDTO payParam) { public CzgResult<CzgJsPayResp> jsPayOrder(@NonNull String clintIp, OrderPayParamDTO payParam) {
OrderInfo orderInfo = orderInfoService.getById(payParam.getOrderId()); OrderInfo orderInfo = orderInfoService.getById(payParam.getOrderId());
AssertUtil.isNull(orderInfo, "订单不存在"); AssertUtil.isNull(orderInfo, "订单不存在");
String payOrderNO = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId(); String payOrderNo = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId();
initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(), "order", payOrderNO, "", orderInfo.getOrderAmount())); initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(), "order", payOrderNo, "", orderInfo.getOrderAmount()));
return jsPay(payParam.getShopId(), payParam.getPayType(), new CzgJsPayReq(payOrderNO, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(), upOrderPayInfo(orderInfo.getId(), "aliPay".equals(payParam.getPayType()) ? PayEnums.ALIPAY_MINI.getValue() : PayEnums.WECHAT_MINI.getValue(), payOrderNo);
return jsPay(payParam.getShopId(), payParam.getPayType(), new CzgJsPayReq(payOrderNo, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(),
"点餐支付", payParam.getOpenId(), clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), payJsonExtParam)); "点餐支付", payParam.getOpenId(), clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), payJsonExtParam));
} }
@@ -72,9 +74,10 @@ public class PayServiceImpl implements PayService {
public CzgResult<CzgLtPayResp> ltPayOrder(@NonNull String clintIp, OrderPayParamDTO payParam) { public CzgResult<CzgLtPayResp> ltPayOrder(@NonNull String clintIp, OrderPayParamDTO payParam) {
OrderInfo orderInfo = orderInfoService.getById(payParam.getOrderId()); OrderInfo orderInfo = orderInfoService.getById(payParam.getOrderId());
AssertUtil.isNull(orderInfo, "订单不存在"); AssertUtil.isNull(orderInfo, "订单不存在");
String payOrderNO = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId(); String payOrderNo = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId();
initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(), "order", payOrderNO, "", orderInfo.getOrderAmount())); initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(), "order", payOrderNo, "", orderInfo.getOrderAmount()));
return ltPay(payParam.getShopId(), payParam.getPayType(), new CzgLtPayReq(payOrderNO, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(), upOrderPayInfo(orderInfo.getId(), "aliPay".equals(payParam.getPayType()) ? PayEnums.ALIPAY_MINI.getValue() : PayEnums.WECHAT_MINI.getValue(), payOrderNo);
return ltPay(payParam.getShopId(), payParam.getPayType(), new CzgLtPayReq(payOrderNo, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(),
"点餐支付", payParam.getOpenId(), clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), payJsonExtParam)); "点餐支付", payParam.getOpenId(), clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), payJsonExtParam));
} }
@@ -82,19 +85,21 @@ public class PayServiceImpl implements PayService {
public CzgResult<CzgScanPayResp> scanPayOrder(@NonNull String clintIp, OrderPayParamDTO payParam) { public CzgResult<CzgScanPayResp> scanPayOrder(@NonNull String clintIp, OrderPayParamDTO payParam) {
OrderInfo orderInfo = orderInfoService.getById(payParam.getOrderId()); OrderInfo orderInfo = orderInfoService.getById(payParam.getOrderId());
AssertUtil.isNull(orderInfo, "订单不存在"); AssertUtil.isNull(orderInfo, "订单不存在");
String payOrderNO = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId(); String payOrderNo = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId();
initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(), "order", payOrderNO, "", orderInfo.getOrderAmount())); initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(), "order", payOrderNo, "", orderInfo.getOrderAmount()));
return scanPay(payParam.getShopId(), new CzgScanPayReq(payOrderNO, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(), upOrderPayInfo(orderInfo.getId(), PayEnums.MAIN_SCAN.getValue(), payOrderNo);
return scanPay(payParam.getShopId(), new CzgScanPayReq(payOrderNo, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(),
"点餐支付", clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), payJsonExtParam)); "点餐支付", clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), payJsonExtParam));
} }
@Override @Override
public CzgResult<CzgMicroPayResp> microPayOrder(OrderPayParamDTO payParam) { public CzgResult<Object> microPayOrder(OrderPayParamDTO payParam) {
OrderInfo orderInfo = orderInfoService.getById(payParam.getOrderId()); OrderInfo orderInfo = orderInfoService.getById(payParam.getOrderId());
AssertUtil.isNull(orderInfo, "订单不存在"); AssertUtil.isNull(orderInfo, "订单不存在");
String payOrderNO = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId(); String payOrderNo = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId();
initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(), "order", payOrderNO, payParam.getAuthCode(), orderInfo.getOrderAmount())); initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(), "order", payOrderNo, payParam.getAuthCode(), orderInfo.getOrderAmount()));
return microPay(payParam.getShopId(), new CzgMicroPayReq(payOrderNO, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(), upOrderPayInfo(orderInfo.getId(), PayEnums.BACK_SCAN.getValue(), payOrderNo);
return microPay(payParam.getShopId(), new CzgMicroPayReq(payOrderNo, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(),
"点餐支付", payParam.getAuthCode(), payParam.getBuyerRemark(), payJsonExtParam)); "点餐支付", payParam.getAuthCode(), payParam.getBuyerRemark(), payJsonExtParam));
} }
@@ -119,11 +124,18 @@ public class PayServiceImpl implements PayService {
} }
private void initOrderPayment(OrderPayment payment) { private void initOrderPayment(OrderPayment payment) {
paymentService.save(payment); paymentService.save(payment);
} }
private void upOrderPayInfo(@NonNull Long orderId, @NotBlank String payType, @NotBlank String payOrderNo) {
orderInfoService.updateChain().of(OrderInfo.class)
.set(OrderInfo::getPayOrderNo, payOrderNo)
.set(OrderInfo::getPayType, payType)
.where(OrderInfo::getId).eq(orderId)
.update();
}
private CzgResult<CzgH5PayResp> h5Pay(@NonNull Long shopId, CzgH5PayReq bizData) { private CzgResult<CzgH5PayResp> h5Pay(@NonNull Long shopId, CzgH5PayReq bizData) {
ShopMerchant shopMerchant = shopMerchantService.getById(shopId); ShopMerchant shopMerchant = shopMerchantService.getById(shopId);
@@ -134,19 +146,19 @@ public class PayServiceImpl implements PayService {
private CzgResult<CzgJsPayResp> jsPay(@NonNull Long shopId, @NonNull String payType, CzgJsPayReq bizData) { private CzgResult<CzgJsPayResp> jsPay(@NonNull Long shopId, @NonNull String payType, CzgJsPayReq bizData) {
ShopMerchant shopMerchant = shopMerchantService.getById(shopId); ShopMerchant shopMerchant = shopMerchantService.getById(shopId);
AssertUtil.isBlank(bizData.getSubAppid(), "暂不可用,请联系商家配置" + ("aliPay" .equals(payType) ? "支付宝" : "微信") + "小程序"); AssertUtil.isBlank(bizData.getSubAppid(), "暂不可用,请联系商家配置" + ("aliPay".equals(payType) ? "支付宝" : "微信") + "小程序");
bizData.assignMerchant(shopMerchant.getStoreId(), shopMerchant.getMerchantName(), bizData.assignMerchant(shopMerchant.getStoreId(), shopMerchant.getMerchantName(),
sysParamsService.getSysParamValue(SysParamCodeEnum.PAY_CZG_NOTIFY_URL.getCode())); sysParamsService.getSysParamValue(SysParamCodeEnum.PAY_CZG_NOTIFY_URL.getCode()));
bizData.setSubAppid("aliPay" .equals(payType) ? shopMerchant.getAlipaySmallAppid() : shopMerchant.getWechatSmallAppid()); bizData.setSubAppid("aliPay".equals(payType) ? shopMerchant.getAlipaySmallAppid() : shopMerchant.getWechatSmallAppid());
return czgPayService.jsPay(shopMerchant.getAppId(), shopMerchant.getAppSecret(), bizData); return czgPayService.jsPay(shopMerchant.getAppId(), shopMerchant.getAppSecret(), bizData);
} }
private CzgResult<CzgLtPayResp> ltPay(@NonNull Long shopId, String payType, CzgLtPayReq bizData) { private CzgResult<CzgLtPayResp> ltPay(@NonNull Long shopId, String payType, CzgLtPayReq bizData) {
ShopMerchant shopMerchant = shopMerchantService.getById(shopId); ShopMerchant shopMerchant = shopMerchantService.getById(shopId);
AssertUtil.isBlank(bizData.getSubAppid(), "暂不可用,请联系商家配置" + ("aliPay" .equals(payType) ? "支付宝" : "微信") + "小程序"); AssertUtil.isBlank(bizData.getSubAppid(), "暂不可用,请联系商家配置" + ("aliPay".equals(payType) ? "支付宝" : "微信") + "小程序");
bizData.assignMerchant(shopMerchant.getStoreId(), shopMerchant.getMerchantName(), bizData.assignMerchant(shopMerchant.getStoreId(), shopMerchant.getMerchantName(),
sysParamsService.getSysParamValue(SysParamCodeEnum.PAY_CZG_NOTIFY_URL.getCode())); sysParamsService.getSysParamValue(SysParamCodeEnum.PAY_CZG_NOTIFY_URL.getCode()));
bizData.setSubAppid("aliPay" .equals(payType) ? shopMerchant.getAlipaySmallAppid() : shopMerchant.getWechatSmallAppid()); bizData.setSubAppid("aliPay".equals(payType) ? shopMerchant.getAlipaySmallAppid() : shopMerchant.getWechatSmallAppid());
return czgPayService.ltPay(shopMerchant.getAppId(), shopMerchant.getAppSecret(), bizData); return czgPayService.ltPay(shopMerchant.getAppId(), shopMerchant.getAppSecret(), bizData);
} }
@@ -157,7 +169,8 @@ public class PayServiceImpl implements PayService {
return czgPayService.scanPay(shopMerchant.getAppId(), shopMerchant.getAppSecret(), bizData); return czgPayService.scanPay(shopMerchant.getAppId(), shopMerchant.getAppSecret(), bizData);
} }
private CzgResult<CzgMicroPayResp> microPay(@NonNull Long shopId, CzgMicroPayReq bizData) { private CzgResult<Object> microPay(@NonNull Long shopId, CzgMicroPayReq bizData) {
CzgResult<Object> result = CzgResult.success();
ShopMerchant shopMerchant = shopMerchantService.getById(shopId); ShopMerchant shopMerchant = shopMerchantService.getById(shopId);
bizData.assignMerchant(shopMerchant.getStoreId(), shopMerchant.getMerchantName(), bizData.assignMerchant(shopMerchant.getStoreId(), shopMerchant.getMerchantName(),
sysParamsService.getSysParamValue(SysParamCodeEnum.PAY_CZG_NOTIFY_URL.getCode())); sysParamsService.getSysParamValue(SysParamCodeEnum.PAY_CZG_NOTIFY_URL.getCode()));
@@ -175,8 +188,20 @@ public class PayServiceImpl implements PayService {
//支付宝支付 //支付宝支付
bizData.setSubAppid(shopMerchant.getAlipaySmallAppid()); bizData.setSubAppid(shopMerchant.getAlipaySmallAppid());
} }
CzgResult<CzgMicroPayResp> czgScanPayResult = czgPayService.microPay(shopMerchant.getAppId(), shopMerchant.getAppSecret(), bizData);
return czgPayService.microPay(shopMerchant.getAppId(), shopMerchant.getAppSecret(), bizData); if (czgScanPayResult.getCode() != 200 || czgScanPayResult.getData() == null) {
result.setCode(500);
result.setMsg(czgScanPayResult.getMsg());
return result;
}
CzgMicroPayResp data = czgScanPayResult.getData();
result.setMsg(data.getNote());
if ("TRADE_SUCCESS".equals(data.getState())) {
result.setCode(200);
} else {
result.setCode(500);
}
return result;
} }
private CzgResult<CzgRefundResp> refund(@NonNull Long shopId, CzgRefundReq bizData) { private CzgResult<CzgRefundResp> refund(@NonNull Long shopId, CzgRefundReq bizData) {