فهرست منبع

优化退款逻辑

xdd 2 ماه پیش
والد
کامیت
be92f8c58b

+ 2 - 2
fs-admin/src/main/java/com/fs/store/controller/FsStoreHealthOrderController.java

@@ -105,7 +105,7 @@ public class FsStoreHealthOrderController extends BaseController {
             param.setBeginTime(null);
             param.setEndTime(null);
         }
-        if (fsStoreOrderService.isEntityNull(param)){
+        if (BeanUtil.isEmpty(param)){
             return AjaxResult.error("请筛选数据导出");
         }
         if(!StringUtils.isEmpty(param.getCreateTimeRange())){
@@ -147,7 +147,7 @@ public class FsStoreHealthOrderController extends BaseController {
             param.setBeginTime(null);
             param.setEndTime(null);
         }
-        if (fsStoreOrderService.isEntityNull(param)){
+        if (BeanUtil.isEmpty(param)){
             return AjaxResult.error("请筛选数据导出");
         }
         if(!StringUtils.isEmpty(param.getCreateTimeRange())){

+ 2 - 2
fs-admin/src/main/java/com/fs/store/controller/FsStoreOrderController.java

@@ -181,7 +181,7 @@ public class FsStoreOrderController extends BaseController {
             param.setBeginTime(null);
             param.setEndTime(null);
         }
-        if (fsStoreOrderService.isEntityNull(param)){
+        if (BeanUtil.isEmpty(param)){
             return AjaxResult.error("请筛选数据导出");
         }
         if(!StringUtils.isEmpty(param.getCreateTimeRange())){
@@ -226,7 +226,7 @@ public class FsStoreOrderController extends BaseController {
             param.setBeginTime(null);
             param.setEndTime(null);
         }
-        if (fsStoreOrderService.isEntityNull(param)){
+        if (BeanUtil.isEmpty(param)){
             return AjaxResult.error("请筛选数据导出");
         }
         if(!StringUtils.isEmpty(param.getCreateTimeRange())){

+ 2 - 2
fs-company/src/main/java/com/fs/store/controller/FsStoreOrderController.java

@@ -142,7 +142,7 @@ public class FsStoreOrderController extends BaseController
             param.setBeginTime(null);
             param.setEndTime(null);
         }
-        if (fsStoreOrderService.isEntityNull(param)){
+        if (BeanUtil.isEmpty(param)){
             return AjaxResult.error("请筛选数据导出");
         }
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
@@ -326,7 +326,7 @@ public class FsStoreOrderController extends BaseController
             param.setBeginTime(null);
             param.setEndTime(null);
         }
-        if (fsStoreOrderService.isEntityNull(param)){
+        if (BeanUtil.isEmpty(param)){
             return AjaxResult.error("请筛选数据导出");
         }
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());

+ 0 - 2
fs-service-system/src/main/java/com/fs/store/service/IFsStoreOrderService.java

@@ -192,8 +192,6 @@ public interface IFsStoreOrderService
 
     R auditPayRemain(Long orderId);
 
-    Boolean isEntityNull(FsStoreOrderParam param);
-
     int uploadCredentials(FsStoreOrder order);
 
     String getCredentialsById(Long id);

+ 82 - 0
fs-service-system/src/main/java/com/fs/store/service/channel/HfPaymentHandler.java

@@ -0,0 +1,82 @@
+package com.fs.store.service.channel;
+
+import com.fs.common.core.domain.R;
+import com.fs.common.exception.CustomException;
+import com.fs.huifuPay.domain.HuiFuCreateOrder;
+import com.fs.huifuPay.domain.HuiFuRefundResult;
+import com.fs.huifuPay.domain.HuifuCreateOrderResult;
+import com.fs.huifuPay.sdk.opps.core.request.V2TradePaymentScanpayRefundRequest;
+import com.fs.huifuPay.service.HuiFuService;
+import com.fs.store.domain.FsStorePayment;
+import com.fs.store.service.channel.param.PayProcessContext;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.springframework.beans.factory.config.ConfigurableBeanFactory.SCOPE_PROTOTYPE;
+
+/**
+ * hf支付处理
+ */
+@Service
+@Scope(value = SCOPE_PROTOTYPE)
+@Slf4j
+public class HfPaymentHandler extends PaymentHandler{
+    @Autowired
+    protected HuiFuService huiFuService;
+
+    @Override
+    protected R doCreateOrder(PayProcessContext context) {
+        HuiFuCreateOrder o = new HuiFuCreateOrder();
+        o.setTradeType("T_MINIAPP");
+        o.setOpenid(user.getMaOpenId());
+        o.setReqSeqId(context.getOrderPrefix()+ this.fsStorePayment.getPayCode());
+        o.setTransAmt(this.fsStorePayment.getPayMoney().toString());
+        o.setGoodsDesc(context.getGoodsInfo());
+        HuifuCreateOrderResult result = huiFuService.createOrder(o);
+        //创建订单
+        if(result.getResp_code()!=null&&(result.getResp_code().equals("00000000")||result.getResp_code().equals("00000100"))){
+            FsStorePayment mt=new FsStorePayment();
+            mt.setPaymentId(context.getPaymentId());
+            mt.setTradeNo(result.getHf_seq_id());
+            this.fsStorePaymentService.updateFsStorePayment(mt);
+            return R.ok().put("payType", context.getPayType()).put("result", result.getPay_info());
+        }
+        else{
+            return R.error(result.getResp_desc());
+        }
+    }
+
+    @Override
+    protected void doRefundOrder(PayProcessContext context) {
+        V2TradePaymentScanpayRefundRequest request = new V2TradePaymentScanpayRefundRequest();
+        request.setOrdAmt(this.fsStorePayment.getPayMoney().toString());
+        request.setOrgReqDate(new SimpleDateFormat("yyyyMMdd").format(fsStorePayment.getCreateTime()));
+        request.setReqSeqId(context.getOrderPrefix()+fsStorePayment.getPayCode());
+        Map<String, Object> extendInfoMap = new HashMap<>();
+        extendInfoMap.put("org_party_order_id", fsStorePayment.getBankSerialNo());
+        request.setExtendInfo(extendInfoMap);
+        HuiFuRefundResult refund = huiFuService.refund(request);
+        log.info("退款:{}",refund);
+        if((refund.getResp_code().equals("00000000")||refund.getResp_code().equals("00000100"))&&(refund.getTrans_stat().equals("S")||refund.getTrans_stat().equals("P"))){
+            fsStorePayment.setRefundMoney(fsStorePayment.getPayMoney());
+            fsStorePayment.setStatus(-1);
+            fsStorePayment.setRefundTime(new Date());
+            this.fsStorePaymentService.updateFsStorePayment(fsStorePayment);
+        }else {
+            throw new CustomException(refund.getResp_desc());
+        }
+    }
+
+    @Override
+    public boolean support(String code) {
+        return "hf".equals(code);
+    }
+}

+ 29 - 8
fs-service-system/src/main/java/com/fs/store/service/handler/PaymentHandler.java → fs-service-system/src/main/java/com/fs/store/service/channel/PaymentHandler.java

@@ -1,18 +1,16 @@
-package com.fs.store.service.handler;
+package com.fs.store.service.channel;
 
 import cn.hutool.core.util.ObjectUtil;
 import com.fs.common.core.domain.R;
 import com.fs.common.core.redis.RedisCache;
-import com.fs.huifuPay.service.HuiFuService;
-import com.fs.huifuPay.service.impl.HuiFuServiceImpl;
 import com.fs.store.domain.FsStoreOrder;
 import com.fs.store.domain.FsStorePayment;
 import com.fs.store.domain.FsUser;
-import com.fs.store.mapper.FsStorePaymentMapper;
 import com.fs.store.service.IFsStoreOrderService;
 import com.fs.store.service.IFsStorePaymentService;
 import com.fs.store.service.IFsUserService;
-import com.fs.store.service.handler.param.PayProcessContext;
+import com.fs.store.service.channel.param.PayProcessContext;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Scope;
 import org.springframework.stereotype.Service;
@@ -21,6 +19,7 @@ import static org.springframework.beans.factory.config.ConfigurableBeanFactory.S
 
 @Service
 @Scope(value = SCOPE_PROTOTYPE)
+@Slf4j
 public abstract class PaymentHandler {
     @Autowired
     protected IFsStorePaymentService fsStorePaymentService;
@@ -42,7 +41,7 @@ public abstract class PaymentHandler {
      * @param context 上下文
      * @return R
      */
-    public final R process(PayProcessContext context){
+    public final R createOrder(PayProcessContext context){
         if(ObjectUtil.isNotNull(context.getOrderId())){
             this.order = orderService.selectFsStoreOrderById(context.getOrderId());
         }
@@ -54,14 +53,36 @@ public abstract class PaymentHandler {
         if(ObjectUtil.isNotNull(context.getPaymentId())){
             this.fsStorePayment = fsStorePaymentService.selectFsStorePaymentById(context.getPaymentId());
         }
-        return doProcess(context);
+        return doCreateOrder(context);
     }
+
+    public final void refundOrder(PayProcessContext context){
+        if(ObjectUtil.isNotNull(context.getPaymentId())){
+            this.fsStorePayment = fsStorePaymentService.selectFsStorePaymentById(context.getPaymentId());
+        }
+        if(ObjectUtil.isNotNull(context.getOrderId())){
+            this.order = orderService.selectFsStoreOrderById(context.getOrderId());
+        }
+        if(ObjectUtil.isNotNull(context.getUserId())){
+            this.user = fsUserService.selectFsUserById(context.getUserId());
+        }
+        doRefundOrder(context);
+    }
+    /**
+     * 子类实现的具体支付处理逻辑
+     * 创建订单
+     * @param context 上下文
+     * @return R
+     */
+    protected abstract R doCreateOrder(PayProcessContext context);
+
     /**
      * 子类实现的具体支付处理逻辑
+     * 退款
      * @param context 上下文
      * @return R
      */
-    protected abstract R doProcess(PayProcessContext context);
+    protected abstract void doRefundOrder(PayProcessContext context);
 
     /**
      * 是否支持

+ 1 - 9
fs-service-system/src/main/java/com/fs/store/service/handler/PaymentHandlerHolder.java → fs-service-system/src/main/java/com/fs/store/service/channel/PaymentHandlerHolder.java

@@ -1,18 +1,10 @@
-package com.fs.store.service.handler;
+package com.fs.store.service.channel;
 
-import com.fs.common.core.domain.R;
-import com.fs.store.domain.FsStoreOrder;
-import com.fs.store.domain.FsUser;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.BeansException;
-import org.springframework.beans.factory.ObjectProvider;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationContext;
-import org.springframework.context.ApplicationContextAware;
 import org.springframework.stereotype.Service;
 
-import java.util.List;
-
 @Slf4j
 @Service
 public class PaymentHandlerHolder {

+ 55 - 10
fs-service-system/src/main/java/com/fs/store/service/handler/TzbkPaymentHandler.java → fs-service-system/src/main/java/com/fs/store/service/channel/TzbkPaymentHandler.java

@@ -1,28 +1,29 @@
-package com.fs.store.service.handler;
+package com.fs.store.service.channel;
 
-import cn.hutool.core.util.StrUtil;
+import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSON;
 import com.fs.common.core.domain.R;
+import com.fs.common.exception.CustomException;
 import com.fs.common.utils.IPUtils;
 import com.fs.common.utils.ServletUtils;
-import com.fs.huifuPay.domain.HuiFuCreateOrder;
-import com.fs.huifuPay.domain.HuifuCreateOrderResult;
 import com.fs.huifuPay.dto.*;
-import com.fs.store.constants.StoreConstants;
 import com.fs.store.domain.FsStorePayment;
 import com.fs.store.domain.TzConfigInfoDTO;
-import com.fs.store.service.handler.param.PayProcessContext;
+import com.fs.store.service.IFsCouponScheduleService;
+import com.fs.store.service.channel.param.PayProcessContext;
+import com.fs.store.service.impl.FsCouponScheduleServiceImpl;
 import com.fs.system.service.ISysConfigService;
-import com.fs.system.service.impl.SysConfigServiceImpl;
 import com.fs.tzBank.TzBankService;
-import com.fs.tzBank.impl.TzBankServiceImpl;
+import com.fs.tzBank.utils.TzConfigUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Scope;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
+import java.text.SimpleDateFormat;
 import java.time.Instant;
-import java.util.concurrent.TimeUnit;
+import java.util.Date;
 
 import static org.springframework.beans.factory.config.ConfigurableBeanFactory.SCOPE_PROTOTYPE;
 
@@ -39,10 +40,12 @@ public class TzbkPaymentHandler extends PaymentHandler{
     private ISysConfigService configService;
     @Autowired
     private TzBankService tzBankService;
+    @Autowired
+    private IFsCouponScheduleService fsCouponScheduleService;
 
 
     @Override
-    protected R doProcess(PayProcessContext context) {
+    protected R doCreateOrder(PayProcessContext context) {
         String json = configService.selectConfigByKey("store.pay");
         TzConfigInfoDTO tzConfigInfoDTO = JSON.parseObject(json, TzConfigInfoDTO.class);
 
@@ -108,6 +111,48 @@ public class TzbkPaymentHandler extends PaymentHandler{
         }
     }
 
+    @Override
+    protected void doRefundOrder(PayProcessContext context) {
+        TzConfigInfoDTO tzConfigInfoDTO = TzConfigUtils.getConfig();
+
+        RequestDTO<TzPayRefundDTO> requestDTO = new RequestDTO<>();
+        TzPayRefundDTO tzPayRefundDTO = new TzPayRefundDTO();
+        tzPayRefundDTO.setOldPayOutOrderNo(fsStorePayment.getPayCode());
+        tzPayRefundDTO.setRefundOrderNo(fsStorePayment.getPayCode());
+        tzPayRefundDTO.setPlatMerCstNo(tzConfigInfoDTO.getPlatMerCstNo());
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
+        tzPayRefundDTO.setTrxSendTime(sdf.format(new Date()));
+        tzPayRefundDTO.setRefundOrdTransAmt(fsStorePayment.getPayMoney());
+        tzPayRefundDTO.setNotifyURL(tzConfigInfoDTO.getRefundNotifyUrl());
+        requestDTO.setReqBody(tzPayRefundDTO);
+        requestDTO.setReqHeader(TzReqHeaderDTO.getInstance(fsStorePayment.getPayCode()));
+
+        TzReqResultDTO<TzRefundNotifyDTO> resultDTO;
+
+        try {
+
+            // 停止发放优惠券
+            if(ObjectUtil.isNotNull(order)){
+                fsCouponScheduleService.setScheduleCouponRefund(String.valueOf(order.getId()));
+            }
+
+            resultDTO = tzBankService.payRefund(requestDTO);
+
+            TzRefundNotifyDTO body = resultDTO.getBody();
+            String refundOrdStatus = body.getRefundOrdStatus();
+            if("90".equals(refundOrdStatus) || "50".equals(refundOrdStatus)){
+                fsStorePayment.setRefundMoney(fsStorePayment.getPayMoney());
+                fsStorePayment.setStatus(-1);
+                fsStorePayment.setRefundTime(new Date());
+                this.fsStorePaymentService.updateFsStorePayment(fsStorePayment);
+            } else {
+                throw new CustomException(resultDTO.getRetMsg());
+            }
+        } catch (Exception e) {
+            throw new RuntimeException("退款请求失败"+e);
+        }
+    }
+
     @Override
     public boolean support(String code) {
         return "tzbk".equals(code);

+ 28 - 6
fs-service-system/src/main/java/com/fs/store/service/handler/YbPaymentHandler.java → fs-service-system/src/main/java/com/fs/store/service/channel/YbPaymentHandler.java

@@ -1,18 +1,20 @@
-package com.fs.store.service.handler;
+package com.fs.store.service.channel;
 
 import com.fs.common.core.domain.R;
-import com.fs.huifuPay.domain.HuiFuCreateOrder;
-import com.fs.huifuPay.domain.HuifuCreateOrderResult;
+import com.fs.common.exception.CustomException;
 import com.fs.pay.pay.domain.CreateWxOrderResult;
+import com.fs.pay.pay.domain.RefundResult;
 import com.fs.pay.pay.dto.WxJspayDTO;
 import com.fs.pay.pay.service.PayService;
 import com.fs.store.domain.FsStorePayment;
-import com.fs.store.service.handler.param.PayProcessContext;
+import com.fs.store.service.channel.param.PayProcessContext;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Scope;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
-import java.util.concurrent.TimeUnit;
+import java.util.Date;
 
 import static org.springframework.beans.factory.config.ConfigurableBeanFactory.SCOPE_PROTOTYPE;
 
@@ -21,12 +23,13 @@ import static org.springframework.beans.factory.config.ConfigurableBeanFactory.S
  */
 @Service
 @Scope(value = SCOPE_PROTOTYPE)
+@Slf4j
 public class YbPaymentHandler extends PaymentHandler{
     @Autowired
     private PayService ybPayService;
 
     @Override
-    protected R doProcess(PayProcessContext context) {
+    protected R doCreateOrder(PayProcessContext context) {
         WxJspayDTO p = new WxJspayDTO();
         p.setPayMoney(fsStorePayment.getPayMoney().toString());
         p.setLowOrderId(context.getOrderPrefix()+context.getPayCode());
@@ -49,6 +52,25 @@ public class YbPaymentHandler extends PaymentHandler{
         }
     }
 
+    @Override
+    protected void doRefundOrder(PayProcessContext context) {
+        com.fs.pay.pay.dto.RefundDTO refundDTO = new com.fs.pay.pay.dto.RefundDTO();
+        refundDTO.setRefundMoney(fsStorePayment.getPayMoney().toString());
+        refundDTO.setLowRefundNo(context.getOrderPrefix()+fsStorePayment.getPayCode());
+        refundDTO.setUpOrderId(fsStorePayment.getTradeNo());
+        RefundResult result=ybPayService.refund(refundDTO);
+        log.info("yb退款:{}",result);
+        if(result.getState().equals("5")||result.getState().equals("6")){
+            fsStorePayment.setRefundMoney(fsStorePayment.getPayMoney());
+            fsStorePayment.setStatus(-1);
+            fsStorePayment.setRefundTime(new Date());
+            this.fsStorePaymentService.updateFsStorePayment(fsStorePayment);
+        }
+        else{
+            throw new CustomException(result.getMessage());
+        }
+    }
+
     @Override
     public boolean support(String code) {
         return "yb".equals(code);

+ 1 - 1
fs-service-system/src/main/java/com/fs/store/service/handler/param/PayProcessContext.java → fs-service-system/src/main/java/com/fs/store/service/channel/param/PayProcessContext.java

@@ -1,4 +1,4 @@
-package com.fs.store.service.handler.param;
+package com.fs.store.service.channel.param;
 
 import com.fs.store.domain.FsPayConfig;
 import lombok.Data;

+ 0 - 58
fs-service-system/src/main/java/com/fs/store/service/handler/HfPaymentHandler.java

@@ -1,58 +0,0 @@
-package com.fs.store.service.handler;
-
-import com.fs.common.core.domain.R;
-import com.fs.common.core.redis.RedisCache;
-import com.fs.huifuPay.domain.HuiFuCreateOrder;
-import com.fs.huifuPay.domain.HuifuCreateOrderResult;
-import com.fs.huifuPay.service.HuiFuService;
-import com.fs.huifuPay.service.impl.HuiFuServiceImpl;
-import com.fs.store.domain.FsStoreOrder;
-import com.fs.store.domain.FsStorePayment;
-import com.fs.store.domain.FsUser;
-import com.fs.store.mapper.FsStorePaymentMapper;
-import com.fs.store.service.handler.param.PayProcessContext;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Scope;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.util.concurrent.TimeUnit;
-
-import static org.springframework.beans.factory.config.ConfigurableBeanFactory.SCOPE_PROTOTYPE;
-
-/**
- * hf支付处理
- */
-@Service
-@Scope(value = SCOPE_PROTOTYPE)
-public class HfPaymentHandler extends PaymentHandler{
-    @Autowired
-    protected HuiFuService huiFuService;
-
-    @Override
-    protected R doProcess(PayProcessContext context) {
-        HuiFuCreateOrder o = new HuiFuCreateOrder();
-        o.setTradeType("T_MINIAPP");
-        o.setOpenid(user.getMaOpenId());
-        o.setReqSeqId(context.getOrderPrefix()+ this.fsStorePayment.getPayCode());
-        o.setTransAmt(this.fsStorePayment.getPayMoney().toString());
-        o.setGoodsDesc(context.getGoodsInfo());
-        HuifuCreateOrderResult result = huiFuService.createOrder(o);
-        //创建订单
-        if(result.getResp_code()!=null&&(result.getResp_code().equals("00000000")||result.getResp_code().equals("00000100"))){
-            FsStorePayment mt=new FsStorePayment();
-            mt.setPaymentId(context.getPaymentId());
-            mt.setTradeNo(result.getHf_seq_id());
-            this.fsStorePaymentService.updateFsStorePayment(mt);
-            return R.ok().put("payType", context.getPayType()).put("result", result.getPay_info());
-        }
-        else{
-            return R.error(result.getResp_desc());
-        }
-    }
-
-    @Override
-    public boolean support(String code) {
-        return "hf".equals(code);
-    }
-}

+ 29 - 196
fs-service-system/src/main/java/com/fs/store/service/impl/FsStoreOrderServiceImpl.java

@@ -1,6 +1,5 @@
 package com.fs.store.service.impl;
 
-import java.lang.reflect.Field;
 import java.math.BigDecimal;
 import java.nio.charset.Charset;
 import java.sql.Timestamp;
@@ -68,9 +67,9 @@ import com.fs.store.enums.*;
 import com.fs.store.mapper.*;
 import com.fs.store.param.*;
 import com.fs.store.service.*;
-import com.fs.store.service.handler.PaymentHandler;
-import com.fs.store.service.handler.PaymentHandlerHolder;
-import com.fs.store.service.handler.param.PayProcessContext;
+import com.fs.store.service.channel.PaymentHandler;
+import com.fs.store.service.channel.PaymentHandlerHolder;
+import com.fs.store.service.channel.param.PayProcessContext;
 import com.fs.store.vo.*;
 import com.fs.system.service.ISysConfigService;
 import com.fs.tzBank.TzBankService;
@@ -307,7 +306,7 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
                 if(ObjectUtil.isNull(payment)){
                     throw new CustomException("支付方式不存在");
                 }
-                R process = payment.process(processContext);
+                R process = payment.createOrder(processContext);
                 if("200".equals(String.valueOf(process.get("code")))){
                     redisCache.setCacheObject("isPaying:"+order.getId(),order.getId().toString(),1, TimeUnit.MINUTES);
                     return process;
@@ -590,16 +589,11 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
             //检测库存
             //三种特定产品发YDSP001
             int ydspHouse = 0;
-            //如果是美乳产品,发武汉仓库
-            Integer meiruCount=0;
             for (FsStoreCartQueryVO cart : carts) {
-             //   cartService.checkProductStock( cart.getProductId(),cart.getProductAttrValueId());
                 totalNum += cart.getCartNum();
                 integral = NumberUtil.add(integral,
                         NumberUtil.mul(cart.getCartNum(), cart.getIntegral()));
-//                if(cart.getCateId()!=null&&cart.getCateId().equals(176L)){
-//                    meiruCount++;
-//                }
+
                 if(param.getCompanyId()==null){
                     if(StringUtils.isEmpty(cart.getGroupBarCode())){
                         if (cart.getCartNum()>10){
@@ -638,7 +632,6 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
 
             //修改默认仓库
             if(ydspHouse>0){
-//                storeOrder.setStoreHouseCode("WHSP001");
                 storeOrder.setStoreHouseCode("YDSP001");
             }
             else{
@@ -750,13 +743,7 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
             if (flag==0) {
                 return R.error("订单创建失败");
             }
-            //收款单更新
-//            if(param.getPaymentId()!=null&&param.getPaymentId()>0){
-//                FsStorePayment payment=new FsStorePayment();
-//                payment.setOrderId(storeOrder.getId());
-//                payment.setPaymentId(param.getPaymentId());
-//                paymentService.updateFsStorePayment(payment);
-//            }
+
             //使用了积分扣积分
             if (dto.getUsedIntegral() > 0) {
                 this.decIntegral(userId, dto.getUsedIntegral(), dto.getDeductionPrice().doubleValue(),storeOrder.getId().toString());
@@ -803,7 +790,7 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
                 fsStoreOrderItemMapper.insertFsStoreOrderItem(item);
                 listOrderItem.add(item);
             }
-            if(listOrderItem.size()>0){
+            if(CollectionUtils.isNotEmpty(listOrderItem)){
                 String itemJson=JSONUtil.toJsonStr(listOrderItem);
                 storeOrder.setItemJson(itemJson);
                 fsStoreOrderMapper.updateFsStoreOrder(storeOrder);
@@ -1051,8 +1038,6 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
     public List<FsMyStoreOrderListQueryVO> selectFsMyStoreOrderListVO(FsMyStoreOrderQueryParam param) {
         List<FsMyStoreOrderListQueryVO> list= fsStoreOrderMapper.selectFsMyStoreOrderListVO(param);
         for(FsMyStoreOrderListQueryVO vo:list){
-//          List<FsStoreOrderItemVO> items=fsStoreOrderItemMapper.selectMyFsStoreOrderItemListByOrderId(vo.getId());
-//          vo.setItems(items);
             if(StringUtils.isNotEmpty(vo.getItemJson())){
                 JSONArray jsonArray=JSONUtil.parseArray(vo.getItemJson());
                 List<FsStoreOrderItemVO> items=JSONUtil.toList(jsonArray, FsStoreOrderItemVO.class);
@@ -1215,7 +1200,7 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
     }
 
     @Override
-    @Transactional
+    @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
     public R createPackageOrder(long uid, FsStorePackageOrderCreateParam param) {
         //计算金额
         String packageId = redisCache.getCacheObject("orderKey:" + param.getOrderKey());
@@ -1241,8 +1226,6 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
             List<StorePackageProductDTO> goodsList=JSONUtil.toList(jsonArray,StorePackageProductDTO.class);
             //检测库存
             Integer totalNum=0;
-            //如果是美乳产品,发武汉仓库
-            Integer meiruCount=0;
             //指定三个产品发ydsp
             int ydspHouse = 0;
             List<FsStoreCartQueryVO> carts=new ArrayList<>();
@@ -1264,9 +1247,6 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
                         vo.setPrice(product.getPrice());
                         vo.setProductType(product.getProductType());
                         carts.add(vo);
-//                        if(product.getCateId()!=null&&product.getCateId().equals(176L)){
-//                            meiruCount++;
-//                        }
                         //判断是否是三种特定产品
                         if(product.getProductId()!=null&&(product.getProductId().equals(3168L)||product.getProductId().equals(3184L)||product.getProductId().equals(3185L))){
                             ydspHouse++;
@@ -1274,12 +1254,9 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
 
                     }
                 }
-                //cartService.checkProductStock(attrValue.getProductId(),attrValue.getId(), goods.getCount() );
             }
             //生成分布式唯一值
             String orderSn = IdUtil.getSnowflake(0, 0).nextIdStr();
-            //是否使用积分
-            Boolean isIntegral=false;
             //组合数据
             CompanyUser user= companyUserService.selectCompanyUserById(param.getCompanyUserId());
             FsStoreOrder storeOrder = new FsStoreOrder();
@@ -1605,26 +1582,17 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
             erpOrder.setVip_code(order.getUserId().toString());
         }
         erpOrder.setPlatform_code(order.getOrderCode());
-//        if(order.getStoreHouseCode()==null){
-//            erpOrder.setWarehouse_code("CQDS001");
-//        }
-//        else{
-//            erpOrder.setWarehouse_code(order.getStoreHouseCode());
-//        }
         if(order.getStoreHouseCode().equals("YDSP001")){
             erpOrder.setShop_code("RunDayWuHan");
         }
         else{
             erpOrder.setShop_code(sysConfig.getErpShopCode());
         }
-//      erpOrder.setPost_fee(order.getTotalPostage().doubleValue());
         erpOrder.setSeller_memo(order.getMark());
-        // order.setCurrency_code("JCZD");
         List<ErpOrderPayment> payments=new ArrayList<>();
         ErpOrderPayment payment=new ErpOrderPayment();
         payment.setPay_type_code("weixin");
         payment.setPayment(order.getPayMoney().doubleValue());
-        //payment.setPaytime(new Timestamp(System.currentTimeMillis()));
         if(order.getPayTime()!=null){
             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
             String timeString = sdf.format(order.getPayTime());
@@ -1633,12 +1601,7 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
             payment.setPaytime(new Timestamp(timeLong));
         }
         payments.add(payment);
-//      if(order.getCouponPrice()!=null&&order.getCouponPrice().doubleValue()>0){
-//            ErpOrderPayment coupon=new ErpOrderPayment();
-//            coupon.setPay_type_code("coupon");
-//            coupon.setPayment(order.getCouponPrice().doubleValue());
-//            payments.add(coupon);
-//      }
+
         //1.新疆、西藏、内蒙古、海南的订单(代收+非代收)全部发EMS
         //2.全款订单选择中通,快递ID 452  ZTO 中通商城标快 ZTBK.17782167502
         //3.新疆  西藏 内蒙古 海南  全款订单走顺丰丰云配  【非全款】的就根据公司配置那来 配的哪个走哪个快递
@@ -1770,11 +1733,7 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
             }
         }
 
-        if(order.getStoreHouseCode().equals("WHSP001")){
-            //武汉不备注快递史
-            //erpOrder.setSeller_memo(erpOrder.getSeller_memo()+"-"+order.getDeliveryName());
-        }
-        else{
+        if(!"WHSP001".equals(order.getStoreHouseCode())){
             erpOrder.setSeller_memo(erpOrder.getSeller_memo()+"-"+order.getDeliveryName());
         }
         ErpRemarkDTO remarkDTO=new ErpRemarkDTO();
@@ -1785,11 +1744,6 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
         remarkDTO.setCouponMoney(order.getCouponPrice());
         remarkDTO.setOrderId(order.getOrderCode());
         remarkDTO.setYdMoney(order.getPayPrice().subtract(order.getPayMoney().subtract(order.getPayDelivery())));
-//        //套餐标题也传过去
-//        if (order.getOrderCreateType() == 2){
-//            JSONObject jsonStr = JSONObject.parseObject(order.getPackageJson());
-//            remarkDTO.setPackageTitle(jsonStr.getString("title"));
-//        }
 
         if(order.getPayTime()!=null){
             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -1914,13 +1868,12 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
 
         ErpOrderResponse response= erpOrderService.addOrder(erpOrder);
         //写入日志
-        logger.info("ErpCreate:"+order.getOrderCode()+":"+JSONUtil.toJsonStr(response));
+        logger.info("ErpCreate:{} {}",order.getOrderCode(),JSONUtil.toJsonStr(response));
         //支付成功后 将订单号写入待发货的REDIS中
         redisCache.setCacheObject(DELIVERY+":"+response.getCode(),order.getOrderCode());
         //写入外部订单号
         order.setExtendOrderId(response.getCode());
         fsStoreOrderMapper.updateFsStoreOrder(order);
-
     }
 
     @Override
@@ -2023,7 +1976,7 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
     }
 
     @Override
-    @Transactional
+    @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
     public R refundOrderMoney(Long orderId) {
         FsStoreOrder order = fsStoreOrderMapper.selectFsStoreOrderById(orderId);
         if(order.getStatus()==-2){
@@ -2038,12 +1991,10 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
             request.setOid(order.getOrderCode());
             request.setRefund_state(1);
             BaseResponse response=erpOrderService.refundUpdate(request);
-//            if(response.getSuccess()){
-//            }
-//            else{
-//                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-//                return R.error(response.getErrorDesc());
-//            }
+            if(ObjectUtil.isNull(response) || !response.getSuccess()){
+                logger.error("调用erp退款接口失败! {}",JSON.toJSONString(response));
+                throw new CustomException("调用erp退款接口失败:"+response.getErrorDesc());
+            }
         }
         order.setStatus(-2);
         order.setRefundPrice(order.getPayMoney());
@@ -2067,103 +2018,17 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
             List<FsStorePayment> payments=paymentService.selectFsStorePaymentByOrderId(order.getId());
             if(payments!=null){
                 for(FsStorePayment payment:payments){
-                    if (payment.getPayMode()==null||payment.getPayMode().equals("yb")){
-                        com.fs.pay.pay.dto.RefundDTO refundDTO = new com.fs.pay.pay.dto.RefundDTO();
-                        refundDTO.setRefundMoney(payment.getPayMoney().toString());
-                        refundDTO.setLowRefundNo("refund-"+payment.getPayCode());
-                        refundDTO.setUpOrderId(payment.getTradeNo());
-                        RefundResult result=ybPayService.refund(refundDTO);
-                        logger.info("yb退款:"+result);
-                        if(result.getState().equals("5")||result.getState().equals("6")){
-                            payment.setRefundMoney(payment.getPayMoney());
-                            payment.setStatus(-1);
-                            payment.setRefundTime(new Date());
-                            paymentService.updateFsStorePayment(payment);
-                        }
-                        else{
-                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                            return R.error(result.getMessage());
-                        }
-                    }else if (payment.getPayMode()!=null&&payment.getPayMode().equals("hf")){
-                        V2TradePaymentScanpayRefundRequest request = new V2TradePaymentScanpayRefundRequest();
-                        request.setOrdAmt(payment.getPayMoney().toString());
-                        request.setOrgReqDate(new SimpleDateFormat("yyyyMMdd").format(payment.getCreateTime()));
-                        request.setReqSeqId("refund-"+payment.getPayCode());
-                        Map<String, Object> extendInfoMap = new HashMap<>();
-                        extendInfoMap.put("org_party_order_id", payment.getBankSerialNo());
-                        request.setExtendInfo(extendInfoMap);
-                        HuiFuRefundResult refund = huiFuService.refund(request);
-                        logger.info("退款:"+refund);
-                        if((refund.getResp_code().equals("00000000")||refund.getResp_code().equals("00000100"))&&(refund.getTrans_stat().equals("S")||refund.getTrans_stat().equals("P"))){
-                            payment.setRefundMoney(payment.getPayMoney());
-                            payment.setStatus(-1);
-                            payment.setRefundTime(new Date());
-                            paymentService.updateFsStorePayment(payment);
-                        }else {
-                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                            return R.error(refund.getResp_desc());
-                        }
-
-                    }else if (payment.getPayMode()!=null&&payment.getPayMode().equals("tzbk")){
-                        TzConfigInfoDTO tzConfigInfoDTO = TzConfigUtils.getConfig();
-
-                        RequestDTO<TzPayRefundDTO> requestDTO = new RequestDTO<TzPayRefundDTO>();
-                        TzPayRefundDTO tzPayRefundDTO = new TzPayRefundDTO();
-                        tzPayRefundDTO.setOldPayOutOrderNo(payment.getPayCode());
-                        tzPayRefundDTO.setRefundOrderNo(payment.getPayCode());
-                        tzPayRefundDTO.setPlatMerCstNo(tzConfigInfoDTO.getPlatMerCstNo());
-                        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
-                        tzPayRefundDTO.setTrxSendTime(sdf.format(new Date()));
-                        tzPayRefundDTO.setRefundOrdTransAmt(payment.getPayMoney());
-                        tzPayRefundDTO.setNotifyURL(tzConfigInfoDTO.getRefundNotifyUrl());
-                        requestDTO.setReqBody(tzPayRefundDTO);
-                        requestDTO.setReqHeader(TzReqHeaderDTO.getInstance(payment.getPayCode()));
-
-                        TzReqResultDTO<TzRefundNotifyDTO> resultDTO;
-
-                        try {
-
-
-                            // 停止发放优惠券
-                            if(ObjectUtil.isNotNull(order)){
-                                fsCouponScheduleService.setScheduleCouponRefund(String.valueOf(order.getId()));
-                            }
-
-                            resultDTO = tzBankService.payRefund(requestDTO);
-
-                            TzRefundNotifyDTO body = resultDTO.getBody();
-                            String refundOrdStatus = body.getRefundOrdStatus();
-                            if("90".equals(refundOrdStatus) || "50".equals(refundOrdStatus)){
-                                payment.setRefundMoney(payment.getPayMoney());
-                                payment.setStatus(-1);
-                                payment.setRefundTime(new Date());
-                                paymentService.updateFsStorePayment(payment);
-                            } else {
-                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                                return R.error(resultDTO.getRetMsg());
-                            }
-                        } catch (Exception e) {
-                            throw new RuntimeException("退款请求失败"+e);
-                        }
-
+                    PaymentHandler best = PaymentHandlerHolder.findBest(payment.getPayMode());
+                    if(ObjectUtil.isNull(best)){
+                        throw new CustomException("支付类型异常!");
                     }
-                    else {
-                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                        return R.error("支付类型异常");
-                    }
-
-
-                    //小雨点退款
-//                    RefundDTO refundDTO=new RefundDTO();
-//                    refundDTO.setMerchOrderNo(Ids.oid());
-//                    refundDTO.setAmount(payment.getPayMoney().toString());
-//                    if(payment.getIsPayRemain()!=null&&payment.getIsPayRemain().equals(1)){
-//                        refundDTO.setOrigMerchOrderNo("store_remain-"+payment.getPayCode());
-//                    }
-//                    else{
-//                        refundDTO.setOrigMerchOrderNo("store-"+payment.getPayCode());
-//                    }
-//                    payService.refundOrder(refundDTO);
+                    PayProcessContext payProcessContext = new PayProcessContext();
+                    payProcessContext.setOrderId(orderId);
+                    payProcessContext.setPaymentId(payment.getPaymentId());
+                    payProcessContext.setPayCode(payment.getPayCode());
+                    payProcessContext.setUserId(order.getUserId());
+                    payProcessContext.setOrderPrefix("refund-");
+                    best.refundOrder(payProcessContext);
                 }
             }
         }
@@ -2196,8 +2061,6 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
                             FsStoreOrder map=new FsStoreOrder();
                             map.setStatus(OrderInfoEnum.STATUS_2.getValue());
                             map.setId(order.getId());
-//                            map.setDeliverySn(response.getOrders().get(0).getDeliverys().get(0).getExpress_code());
-//                            map.setDeliveryName(response.getOrders().get(0).getDeliverys().get(0).getExpress_name());
                             map.setDeliveryId(response.getOrders().get(0).getDeliverys().get(0).getMail_no());
                             fsStoreOrderMapper.updateFsStoreOrder(map);
                             orderStatusService.create(order.getId(), OrderLogEnum.DELIVERY_GOODS.getValue(),
@@ -2254,7 +2117,7 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
 
     @Override
     public R createSalesOrder(CompanyUser companyUser, String cateIds) {
-        List<FsStoreCartQueryVO>  carts=cartMapper.selectFsStoreCartListByIds(cateIds);
+        List<FsStoreCartQueryVO> carts=cartMapper.selectFsStoreCartListByIds(cateIds);
         String uuid = IdUtil.randomUUID();
         redisCache.setCacheObject("createOrderKey:"+uuid, companyUser.getCompanyId()+"-"+companyUser.getUserId(), 24, TimeUnit.HOURS);
         redisCache.setCacheObject("orderCarts:"+uuid, carts, 24, TimeUnit.HOURS);
@@ -2301,12 +2164,8 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
             cartMapper.insertFsStoreCart(storeCart);
             ids.add(storeCart.getId());
         }
-        //删除REDIS
-//        redisCache.deleteObject("createOrderKey:"+createOrderKey);
-//        redisCache.deleteObject("orderCarts:" + createOrderKey);
         String[] idArr=key.split("-");
         return R.ok().put("cartIds",ids).put("companyId",idArr[0]).put("companyUserId",idArr[1]);
-
     }
 
     @Override
@@ -2482,8 +2341,7 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
     @Override
     //@Async
     public String importExpress(List<StoreOrderExpressExportDTO> list, boolean updateSupport) {
-        if (StringUtils.isNull(list) || list.size() == 0)
-        {
+        if (StringUtils.isNull(list) || list.size() == 0) {
             throw new CustomException("导入数据不能为空!");
         }
         int successNum = 0;
@@ -2595,8 +2453,6 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
      */
     private FsStoreOrderPriceDTO getOrderPriceGroup(List<FsStoreCartQueryVO> cartInfo, FsUserAddress userAddress) {
         BigDecimal storePostage = BigDecimal.ZERO;
-        //免运费设置
-//        BigDecimal storeFreePostage = BigDecimal.ZERO;
 
         BigDecimal totalPrice = this.getOrderSumPrice(cartInfo, "truePrice");//获取订单总金额
         BigDecimal costPrice = this.getOrderSumPrice(cartInfo, "costPrice");//获取订单成本价
@@ -2608,7 +2464,6 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
 
         FsStoreOrderPriceDTO priceGroupDTO = new FsStoreOrderPriceDTO();
         priceGroupDTO.setStorePostage(storePostage);
-//        priceGroupDTO.setStoreFreePostage(storeFreePostage);
         priceGroupDTO.setTotalPrice(totalPrice);
         priceGroupDTO.setCostPrice(costPrice);
         priceGroupDTO.setPayIntegral(payIntegral);
@@ -2774,28 +2629,6 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
         return sumPrice;
     }
 
-    @Override
-    public Boolean isEntityNull(FsStoreOrderParam param) {
-        if (param == null) {
-            return true; // 整个实体对象为null
-        }
-
-        Class<? extends FsStoreOrderParam> entityClass = param.getClass();
-        Field[] fields = entityClass.getDeclaredFields();
-        try {
-            for (Field field : fields) {
-                field.setAccessible(true);
-                Object value = field.get(param);
-                if (value != null) {
-                    return false; // 实体对象中有字段不为null
-                }
-            }
-        } catch (IllegalAccessException e) {
-            e.printStackTrace();
-        }
-        return true; // 实体对象内所有字段为null
-    }
-
     @Override
     public int uploadCredentials(FsStoreOrder order) {
         order.setUploadTime(new Date());
@@ -2947,7 +2780,7 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
             processContext.setGoodsInfo("商城订单支付");
             processContext.setOrderPrefix("store-");
 
-            R process = payment.process(processContext);
+            R process = payment.createOrder(processContext);
             if("200".equals(String.valueOf(process.get("code")))){
                 redisCache.setCacheObject("isPaying:"+order.getId(),order.getId().toString(),1, TimeUnit.MINUTES);
                 return process;

+ 4 - 18
fs-service-system/src/main/java/com/fs/store/service/impl/FsStorePaymentServiceImpl.java

@@ -1,41 +1,30 @@
 package com.fs.store.service.impl;
 
 import java.math.BigDecimal;
-import java.time.Instant;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
-import java.util.concurrent.TimeUnit;
 
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.fs.common.annotation.DataScope;
-import com.fs.common.config.FSConfig;
 import com.fs.common.config.FSSysConfig;
 import com.fs.common.core.controller.BaseController;
 import com.fs.common.core.domain.R;
 import com.fs.common.exception.CustomException;
 import com.fs.common.utils.DateUtils;
-import com.fs.common.utils.IPUtils;
-import com.fs.common.utils.ServletUtils;
 import com.fs.company.domain.CompanyUser;
 import com.fs.company.service.ICompanyService;
 import com.fs.company.service.ICompanyUserService;
-import com.fs.huifuPay.domain.HuiFuCreateOrder;
-import com.fs.huifuPay.domain.HuifuCreateOrderResult;
 import com.fs.huifuPay.dto.*;
 import com.fs.huifuPay.service.HuiFuService;
-import com.fs.store.constants.StoreConstants;
 import com.fs.store.service.IFsStoreOrderService;
-import com.fs.store.service.handler.PaymentHandler;
-import com.fs.store.service.handler.PaymentHandlerHolder;
-import com.fs.store.service.handler.param.PayProcessContext;
+import com.fs.store.service.channel.PaymentHandler;
+import com.fs.store.service.channel.PaymentHandlerHolder;
+import com.fs.store.service.channel.param.PayProcessContext;
 import com.fs.tzBank.TzBankService;
-import com.fs.pay.pay.domain.CreateWxOrderResult;
-import com.fs.pay.pay.dto.WxJspayDTO;
 import com.fs.pay.pay.service.PayService;
 import com.fs.store.domain.FsPayConfig;
 import com.fs.store.domain.TzConfigInfoDTO;
@@ -52,9 +41,6 @@ import com.fs.store.param.FsStorePaymentParam;
 import com.fs.store.service.IFsUserService;
 import com.fs.store.vo.FsStorePaymentVO;
 import com.fs.pay.service.IPayService;
-import com.fs.pay.service.dto.CreatePayDTO;
-import com.fs.pay.service.dto.PayDTO;
-import com.fs.pay.service.dto.TradeOrder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -226,7 +212,7 @@ public class FsStorePaymentServiceImpl implements IFsStorePaymentService
         if(ObjectUtil.isNull(payment)){
             throw new CustomException("支付方式不存在");
         }
-        return paymentHandler.process(processContext);
+        return paymentHandler.createOrder(processContext);
     }
 
     @Override