TRX 1 年之前
父節點
當前提交
58d14103c2

+ 21 - 0
PaymentClient/src/main/java/com/zhongshu/payment/client/payModel/commn/ClosePayOrderParam.java

@@ -0,0 +1,21 @@
+package com.zhongshu.payment.client.payModel.commn;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/8/22
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class ClosePayOrderParam {
+
+    @Schema(description = "商户订单号(必填)")
+    private String outTradeNo;
+}

+ 14 - 13
PaymentServer/src/main/java/com/zhongshu/payment/server/core/service/RechargeService.java

@@ -14,6 +14,7 @@ import com.zhongshu.card.client.service.feign.ProjectPaySettingFeignService;
 import com.zhongshu.payment.client.model.RechargeRecordModel;
 import com.zhongshu.payment.client.model.RechargeRecordModel;
 import com.zhongshu.payment.client.model.param.OrderParam;
 import com.zhongshu.payment.client.model.param.OrderParam;
 import com.zhongshu.payment.client.model.param.RechargeParam;
 import com.zhongshu.payment.client.model.param.RechargeParam;
+import com.zhongshu.payment.client.payModel.commn.ClosePayOrderParam;
 import com.zhongshu.payment.client.payModel.commn.PayNotityParam;
 import com.zhongshu.payment.client.payModel.commn.PayNotityParam;
 import com.zhongshu.payment.client.types.RechargeState;
 import com.zhongshu.payment.client.types.RechargeState;
 import com.zhongshu.payment.client.types.TradeType;
 import com.zhongshu.payment.client.types.TradeType;
@@ -215,27 +216,27 @@ public class RechargeService extends SuperService {
     /**
     /**
      * 关闭充值订单
      * 关闭充值订单
      */
      */
-    public Object close(String outTradeNo) {
+    public ResultContent close(String outTradeNo) {
         RechargeRecord record = rechargeRecordDao.findByOutTradeNo(outTradeNo);
         RechargeRecord record = rechargeRecordDao.findByOutTradeNo(outTradeNo);
         if (record == null) {
         if (record == null) {
             return ResultContent.buildFail("充值订单:" + outTradeNo + "不存在");
             return ResultContent.buildFail("充值订单:" + outTradeNo + "不存在");
         }
         }
-
-        if (record.getRechargeState().equals(RechargeState.NOTPAY)) {
-            record.setRechargeState(RechargeState.CLOSED);
-            rechargeRecordDao.save(record);
-            return ResultContent.buildSuccess();
+        // 判断状态
+        if (record.getRechargeState() != RechargeState.NOTPAY) {
+            return ResultContent.buildFail(String.format("订单状态不为[%s]不能关闭"));
         }
         }
-
-        ProjectWxPayParam wxPayParam = new ProjectWxPayParam();
-        wxPayParam.setAppId(record.getAppid());
-        ResultContent<WxPayConfigModel> paySetResult = paySettingFeignService.getProjectWxPayConfig(wxPayParam);
-        if (paySetResult.isFailed()) {
-            return ResultContent.buildFail("获取微信支付配置失败");
+        ExecuteMethodInfo executeMethodInfo = executeMethodInfoDao.findTopByPaymentType(record.getPaymentType());
+        if (ObjectUtils.isEmpty(executeMethodInfo)) {
+            return ResultContent.buildFail(String.format("", record.getPaymentType().getRemark()));
+        }
+        SuperPayService service = (SuperPayService) ApplicationContextHolder.getContext().getBean(executeMethodInfo.getBeanName());
+        ResultContent resultContent = service.closePayOrder(ClosePayOrderParam.builder().outTradeNo(outTradeNo).build());
+        if (resultContent.isFailed()) {
+            return resultContent;
         }
         }
         record.setRechargeState(RechargeState.CLOSED);
         record.setRechargeState(RechargeState.CLOSED);
         rechargeRecordDao.save(record);
         rechargeRecordDao.save(record);
-        return wxPaymentService.closeOrder(outTradeNo, paySetResult.getContent());
+        return ResultContent.buildSuccess();
     }
     }
 
 
     public Object closeNoPay(String outTradeNo) {
     public Object closeNoPay(String outTradeNo) {

+ 8 - 24
PaymentServer/src/main/java/com/zhongshu/payment/server/core/service/pay/SuperPayService.java

@@ -8,6 +8,7 @@ import com.github.microservice.net.ResultContent;
 import com.zhongshu.payment.client.model.WalletModel;
 import com.zhongshu.payment.client.model.WalletModel;
 import com.zhongshu.payment.client.model.param.OrderParam;
 import com.zhongshu.payment.client.model.param.OrderParam;
 import com.zhongshu.payment.client.model.param.WalletQueryParam;
 import com.zhongshu.payment.client.model.param.WalletQueryParam;
+import com.zhongshu.payment.client.payModel.commn.ClosePayOrderParam;
 import com.zhongshu.payment.client.payModel.commn.PayNotityParam;
 import com.zhongshu.payment.client.payModel.commn.PayNotityParam;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletRequest;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
@@ -23,36 +24,19 @@ public abstract class SuperPayService {
     @Autowired
     @Autowired
     private AuthHelper authHelper;
     private AuthHelper authHelper;
 
 
-    /**
-     * 更加本地 创建渠道支付订单
-     *
-     * @param param
-     * @return
-     */
+    // 更加本地 创建渠道支付订单
     public abstract ResultContent createChannelOrder(OrderParam param);
     public abstract ResultContent createChannelOrder(OrderParam param);
 
 
-    /**
-     * 支付回调
-     *
-     * @param request
-     * @param param
-     * @return
-     */
+    // 支付回调
     public abstract ResultContent payNotify(HttpServletRequest request, PayNotityParam param);
     public abstract ResultContent payNotify(HttpServletRequest request, PayNotityParam param);
 
 
-    /**
-     * 查询付款账户信息
-     *
-     * @param param
-     * @return
-     */
+    // 查询付款账户信息
     public abstract ResultContent<WalletModel> getWallet(WalletQueryParam param);
     public abstract ResultContent<WalletModel> getWallet(WalletQueryParam param);
 
 
-    /**
-     * 得到当前的用户ID
-     *
-     * @return
-     */
+    // 关闭支付订单
+    public abstract ResultContent closePayOrder(ClosePayOrderParam param);
+
+    // 得到当前的用户ID
     public String getCurrentUserId() {
     public String getCurrentUserId() {
         try {
         try {
             if (authHelper != null && authHelper.getCurrentUser() != null) {
             if (authHelper != null && authHelper.getCurrentUser() != null) {

+ 24 - 0
PaymentServer/src/main/java/com/zhongshu/payment/server/core/service/pay/impl/unionFrictionlessPay/UnionFrictionlessPayMainService.java

@@ -4,6 +4,7 @@ import com.github.microservice.net.ResultContent;
 import com.zhongshu.payment.client.model.WalletModel;
 import com.zhongshu.payment.client.model.WalletModel;
 import com.zhongshu.payment.client.model.param.OrderParam;
 import com.zhongshu.payment.client.model.param.OrderParam;
 import com.zhongshu.payment.client.model.param.WalletQueryParam;
 import com.zhongshu.payment.client.model.param.WalletQueryParam;
+import com.zhongshu.payment.client.payModel.commn.ClosePayOrderParam;
 import com.zhongshu.payment.client.payModel.commn.PayNotityParam;
 import com.zhongshu.payment.client.payModel.commn.PayNotityParam;
 import com.zhongshu.payment.server.core.service.pay.SuperPayService;
 import com.zhongshu.payment.server.core.service.pay.SuperPayService;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletRequest;
@@ -20,18 +21,41 @@ import org.springframework.stereotype.Service;
 @Service
 @Service
 public class UnionFrictionlessPayMainService extends SuperPayService {
 public class UnionFrictionlessPayMainService extends SuperPayService {
 
 
+    /**
+     * 创建支付渠道订单
+     *
+     * @param param
+     * @return
+     */
     public ResultContent createChannelOrder(OrderParam param) {
     public ResultContent createChannelOrder(OrderParam param) {
 
 
         return ResultContent.buildSuccess();
         return ResultContent.buildSuccess();
     }
     }
 
 
+    /***
+     * 支付成功回调
+     * @param request
+     * @param param
+     * @return
+     */
     @Override
     @Override
     public ResultContent payNotify(HttpServletRequest request, PayNotityParam param) {
     public ResultContent payNotify(HttpServletRequest request, PayNotityParam param) {
         return null;
         return null;
     }
     }
 
 
+    /**
+     * 查询账户信息
+     *
+     * @param param
+     * @return
+     */
     public ResultContent<WalletModel> getWallet(WalletQueryParam param) {
     public ResultContent<WalletModel> getWallet(WalletQueryParam param) {
         return ResultContent.buildFail("无感支付不支持查询账户信息");
         return ResultContent.buildFail("无感支付不支持查询账户信息");
     }
     }
 
 
+    @Override
+    public ResultContent closePayOrder(ClosePayOrderParam param) {
+        return ResultContent.buildFail("暂未实现");
+    }
+
 }
 }

+ 7 - 0
PaymentServer/src/main/java/com/zhongshu/payment/server/core/service/pay/impl/wallet/WalletService.java

@@ -12,6 +12,7 @@ import com.zhongshu.payment.client.model.WalletOrderModel;
 import com.zhongshu.payment.client.model.param.GetWalletParam;
 import com.zhongshu.payment.client.model.param.GetWalletParam;
 import com.zhongshu.payment.client.model.param.OrderParam;
 import com.zhongshu.payment.client.model.param.OrderParam;
 import com.zhongshu.payment.client.model.param.WalletQueryParam;
 import com.zhongshu.payment.client.model.param.WalletQueryParam;
+import com.zhongshu.payment.client.payModel.commn.ClosePayOrderParam;
 import com.zhongshu.payment.client.payModel.commn.PayNotityParam;
 import com.zhongshu.payment.client.payModel.commn.PayNotityParam;
 import com.zhongshu.payment.client.types.WalletState;
 import com.zhongshu.payment.client.types.WalletState;
 import com.zhongshu.payment.client.types.WalletType;
 import com.zhongshu.payment.client.types.WalletType;
@@ -75,10 +76,16 @@ public class WalletService extends SuperPayService {
      * @param param
      * @param param
      * @return
      * @return
      */
      */
+    @Override
     public ResultContent<WalletModel> getWallet(WalletQueryParam param) {
     public ResultContent<WalletModel> getWallet(WalletQueryParam param) {
         return ResultContent.buildContent(toModel(findWallet(param)));
         return ResultContent.buildContent(toModel(findWallet(param)));
     }
     }
 
 
+    @Override
+    public ResultContent closePayOrder(ClosePayOrderParam param) {
+        return ResultContent.buildFail("暂未实现");
+    }
+
     //----------------------------渠道的方法 start-----------------------
     //----------------------------渠道的方法 start-----------------------
 
 
     @NotNull
     @NotNull

+ 19 - 5
PaymentServer/src/main/java/com/zhongshu/payment/server/core/service/pay/impl/wxPaymentV3/WxPaymentMainService.java

@@ -20,6 +20,7 @@ import com.zhongshu.payment.client.model.PrePayModel;
 import com.zhongshu.payment.client.model.WalletModel;
 import com.zhongshu.payment.client.model.WalletModel;
 import com.zhongshu.payment.client.model.param.OrderParam;
 import com.zhongshu.payment.client.model.param.OrderParam;
 import com.zhongshu.payment.client.model.param.WalletQueryParam;
 import com.zhongshu.payment.client.model.param.WalletQueryParam;
+import com.zhongshu.payment.client.payModel.commn.ClosePayOrderParam;
 import com.zhongshu.payment.client.payModel.commn.PayNotityParam;
 import com.zhongshu.payment.client.payModel.commn.PayNotityParam;
 import com.zhongshu.payment.client.types.RechargeState;
 import com.zhongshu.payment.client.types.RechargeState;
 import com.zhongshu.payment.server.core.dao.RechargeRecordDao;
 import com.zhongshu.payment.server.core.dao.RechargeRecordDao;
@@ -267,15 +268,28 @@ public class WxPaymentMainService extends SuperPayService {
         }
         }
     }
     }
 
 
-
     /**
     /**
-     * @return
-     * @Author wjf
-     * @Description //TODO 关闭订单
+     * 关闭订单
+     *
      * @Date 2024/7/24
      * @Date 2024/7/24
      * @Param 商户订单号 outTradeNo
      * @Param 商户订单号 outTradeNo
      **/
      **/
-    public ResultContent closeOrder(String outTradeNo, WxPayConfigModel configModel) {
+    public ResultContent closePayOrder(ClosePayOrderParam param) {
+        String outTradeNo = param.getOutTradeNo();
+        RechargeRecord record = rechargeRecordDao.findByOutTradeNo(outTradeNo);
+        if (record == null) {
+            return ResultContent.buildFail("充值订单:" + outTradeNo + "不存在");
+        }
+
+        ProjectWxPayParam wxPayParam = new ProjectWxPayParam();
+        wxPayParam.setAppId(record.getAppid());
+        ResultContent<WxPayConfigModel> paySetResult = paySettingFeignService.getProjectWxPayConfig(wxPayParam);
+        if (paySetResult.isFailed()) {
+            return ResultContent.buildFail("获取微信支付配置失败");
+        }
+        // 项目的支付设置
+        WxPayConfigModel configModel = paySetResult.getContent();
+
         String privateKeyPath = configModel.getPrivateKeyPath();
         String privateKeyPath = configModel.getPrivateKeyPath();
         if (configModel.getPrivateKeyType().equals("local")) {
         if (configModel.getPrivateKeyType().equals("local")) {
             privateKeyPath = Thread.currentThread().getContextClassLoader().getResource("").getPath() + configModel.getPrivateKeyPath();
             privateKeyPath = Thread.currentThread().getContextClassLoader().getResource("").getPath() + configModel.getPrivateKeyPath();