From 215fde9671b285b4f77fa3f5a669c58b74af17c8 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期六, 24 八月 2024 18:01:08 +0800
Subject: [PATCH] 代码提交

---
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppCouponFallbackFactory.java  |    5 +
 ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/wx/utils/WxV3Pay.java                      |    2 
 ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/feignClient/WxPaymentClient.java       |    6 ++
 ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/AliPayController.java           |    6 +-
 ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/factory/WxPaymentFallbackFactory.java  |    7 ++
 ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/model/WxPaymentRefundModel.java        |    2 
 ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/factory/AliPaymentFallbackFactory.java |    7 ++
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java       |    7 ++
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java    |    5 +
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java       |   12 +++
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java         |   15 ++++
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java       |   43 ++++++++++++++
 ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/WxPayController.java            |   33 ++++++++++
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java         |    6 ++
 ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/wx/utils/WxAbstractPay.java                |    2 
 ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/feignClient/AliPaymentClient.java      |    8 ++
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppCouponClient.java       |    2 
 17 files changed, 156 insertions(+), 12 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppCouponFallbackFactory.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppCouponFallbackFactory.java
index eeabca3..fb8ff40 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppCouponFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppCouponFallbackFactory.java
@@ -48,6 +48,11 @@
             public R grantCoupon(GrantCouponDto dto) {
                 return R.fail("给用户发放优惠券:"+throwable.getMessage());
             }
+
+            @Override
+            public R refund(String id) {
+                return R.fail("后台退款 退回优惠券失败:"+throwable.getMessage());
+            }
         };
     }
 }
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java
index bab9b05..47eccaf 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java
@@ -59,6 +59,11 @@
             }
 
             @Override
+            public R refundPoints(String param) {
+                return R.fail("后台兑换订单退款回退用户积分失败:"+throwable.getMessage());
+            }
+
+            @Override
             public R<List<TAppUser>> getUserByIds(List<Long> appUserIds) {
                 return R.fail("根据用户id查询用户信息失败:"+throwable.getMessage());
             }
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppCouponClient.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppCouponClient.java
index b45a58a..a2d36ea 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppCouponClient.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppCouponClient.java
@@ -47,4 +47,6 @@
      */
     @PostMapping("/t-app-coupon/grantCoupon")
     R  grantCoupon(@RequestBody GrantCouponDto dto);
+    @PostMapping(value = "/t-app-coupon/refund/{id}")
+     R refund(@PathVariable("id") String id);
 }
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java
index 4058a9c..0ad197c 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java
@@ -66,4 +66,10 @@
      */
     @GetMapping("/t-app-user/user/selectByPhone")
     R<TAppUser> selectByPhone(@RequestParam("phone") String phone);
+    /**
+     * 远程调用 积分兑换订单 退款回退积分
+     * @return
+     */
+    @PostMapping(value = "/t-app-user/refundPoints/{param}")
+    public R refundPoints(@PathVariable("param")String param);
 }
diff --git a/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/factory/AliPaymentFallbackFactory.java b/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/factory/AliPaymentFallbackFactory.java
index a552827..97ebf3e 100644
--- a/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/factory/AliPaymentFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/factory/AliPaymentFallbackFactory.java
@@ -2,6 +2,8 @@
 
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.payment.api.feignClient.AliPaymentClient;
+import com.ruoyi.payment.api.model.RefundReq;
+import com.ruoyi.payment.api.model.RefundResp;
 import com.ruoyi.payment.api.vo.AliPaymentReq;
 import com.ruoyi.payment.api.vo.AliPaymentResp;
 import com.ruoyi.payment.api.vo.AliQueryOrder;
@@ -40,6 +42,11 @@
             public void close(String outTradeNo) {
                 throw new RuntimeException("关闭支付订单失败:" + throwable.getMessage());
             }
+
+            @Override
+            public R<RefundResp> refund(RefundReq dto) {
+                throw new RuntimeException("支付宝退款失败:" + throwable.getMessage());
+            }
         };
     }
 }
diff --git a/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/factory/WxPaymentFallbackFactory.java b/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/factory/WxPaymentFallbackFactory.java
index 0938408..ee40d32 100644
--- a/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/factory/WxPaymentFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/factory/WxPaymentFallbackFactory.java
@@ -2,6 +2,7 @@
 
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.payment.api.feignClient.WxPaymentClient;
+import com.ruoyi.payment.api.model.WxPaymentRefundModel;
 import com.ruoyi.payment.api.vo.NotifyV3PayDecodeRespBody;
 import com.ruoyi.payment.api.vo.PaymentOrder;
 import org.slf4j.Logger;
@@ -51,6 +52,12 @@
             public void close(String outTradeNo) {
                 throw new RuntimeException("关闭支付订单失败:" + throwable.getMessage());
             }
+
+            @Override
+            public R<String> refundOrderR(WxPaymentRefundModel model) {
+                return R.fail("微信退款失败:" + throwable.getMessage());
+
+            }
         };
     }
 }
diff --git a/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/feignClient/AliPaymentClient.java b/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/feignClient/AliPaymentClient.java
index 54ba192..496217c 100644
--- a/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/feignClient/AliPaymentClient.java
+++ b/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/feignClient/AliPaymentClient.java
@@ -3,6 +3,8 @@
 import com.ruoyi.common.core.constant.ServiceNameConstants;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.payment.api.factory.WxPaymentFallbackFactory;
+import com.ruoyi.payment.api.model.RefundReq;
+import com.ruoyi.payment.api.model.RefundResp;
 import com.ruoyi.payment.api.vo.AliPaymentReq;
 import com.ruoyi.payment.api.vo.AliPaymentResp;
 import com.ruoyi.payment.api.vo.AliQueryOrder;
@@ -41,5 +43,9 @@
 	 */
 	@PostMapping("/ali/close")
 	void close(String outTradeNo);
-
+	/**
+	 * 后台退款 远程调用
+	 */
+	@PostMapping("/ali/refund")
+	public R<RefundResp> refund(@RequestBody RefundReq dto);
 }
diff --git a/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/feignClient/WxPaymentClient.java b/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/feignClient/WxPaymentClient.java
index 7c8f21f..a09b432 100644
--- a/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/feignClient/WxPaymentClient.java
+++ b/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/feignClient/WxPaymentClient.java
@@ -3,8 +3,10 @@
 import com.ruoyi.common.core.constant.ServiceNameConstants;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.payment.api.factory.WxPaymentFallbackFactory;
+import com.ruoyi.payment.api.model.WxPaymentRefundModel;
 import com.ruoyi.payment.api.vo.NotifyV3PayDecodeRespBody;
 import com.ruoyi.payment.api.vo.PaymentOrder;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -59,4 +61,8 @@
 	 */
 	@PostMapping("/wx/pay/close")
 	void close(String outTradeNo);
+
+	@ApiOperation("订单退款")
+	@PostMapping(value = "/wx/refundOrderR")
+	public R<String> refundOrderR(@RequestBody WxPaymentRefundModel model);
 }
diff --git a/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/wx/model/WxPaymentRefundModel.java b/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/model/WxPaymentRefundModel.java
similarity index 97%
rename from ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/wx/model/WxPaymentRefundModel.java
rename to ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/model/WxPaymentRefundModel.java
index 2920b93..79cebc5 100644
--- a/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/wx/model/WxPaymentRefundModel.java
+++ b/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/model/WxPaymentRefundModel.java
@@ -1,4 +1,4 @@
-package com.ruoyi.payment.wx.model;
+package com.ruoyi.payment.api.model;
 
 import lombok.*;
 
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java
index 8cfd00d..5fa9ce9 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java
@@ -72,7 +72,17 @@
     @Resource
     private ChargingGunClient chargingGunClient;
 
-
+    /**
+     * 后台退款 回退优惠券使用状态
+     * @return
+     */
+    @PostMapping(value = "/refund/{id}")
+    public R refund(@PathVariable("id") String id) {
+        TAppCoupon byId = tAppCouponService.getById(id);
+        byId.setStatus(1);
+        tAppCouponService.updateById(byId);
+        return R.ok();
+    }
     /**
      * 小程序扫一扫 添加车辆
      * @param dto
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java
index 3745fd9..ff010e9 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java
@@ -116,7 +116,20 @@
     private TInviteUserService inviteUserService;
 
 
-
+    /**
+     * 远程调用 积分兑换订单 退款回退积分
+     * @return
+     */
+    @PostMapping(value = "/refundPoints/{param}")
+    public R refundPoints(@PathVariable("param")String param) {
+        String[] split = param.split("-");
+        String userId = split[0];
+        String points = split[1];
+        TAppUser byId = appUserService.getById(userId);
+        byId.setPoints(byId.getPoints()+Integer.parseInt(points));
+        appUserService.updateById(byId);
+        return R.ok();
+    }
 
     @ApiOperation(value = "查询当前用户是否为会员 0否1是", tags = {"小程序--查询当前用户是否为会员"})
     @PostMapping(value = "/getUserInfo")
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java
index e2a563a..721c8ba 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java
@@ -27,6 +27,8 @@
 import com.ruoyi.common.core.utils.OrderCodeUtil;
 import com.ruoyi.other.api.feignClient.CouponClient;
 import com.ruoyi.other.api.feignClient.GoodsClient;
+import com.ruoyi.payment.api.feignClient.AliPaymentClient;
+import com.ruoyi.payment.api.feignClient.WxPaymentClient;
 import com.ruoyi.system.api.domain.SysUser;
 import com.ruoyi.system.api.feignClient.SysUserClient;
 import io.swagger.annotations.Api;
@@ -67,6 +69,7 @@
     private GoodsClient goodsClient;
     @Resource
     private CouponClient couponClient;
+
 
     @PostMapping("/getExchangeOrderList")
     @ApiOperation(value = "列表查询", tags = {"管理后台-兑换订单"})
@@ -131,11 +134,13 @@
     public AjaxResult cancelShoppingOrder(String id) {
         TExchangeOrder byId = exchangeOrderService.getById(id);
         Long userid = tokenService.getLoginUser().getUserid();
-        // todo 根据支付方式 取消订单
         byId.setCancellationId(userid);
         byId.setCancellationTime(LocalDateTime.now());
         byId.setStatus(4);
         exchangeOrderService.updateById(byId);
+        // 回退积分
+        Integer points = byId.getPoints();
+        appUserClient.refundPoints(byId.getAppUserId()+"-"+points);
         return AjaxResult.success();
     }
     @GetMapping("/consignerShoppingOrder")
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java
index ba052cc..5312f64 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java
@@ -3,6 +3,7 @@
 import java.time.LocalDateTime;
 
 
+import com.ruoyi.account.api.feignClient.AppCouponClient;
 import com.ruoyi.account.api.feignClient.AppUserClient;
 import com.ruoyi.account.api.model.TAppUserAddress;
 import com.ruoyi.common.core.domain.R;
@@ -18,6 +19,11 @@
 import com.ruoyi.order.service.TShoppingOrderService;
 import com.ruoyi.other.api.feignClient.CouponClient;
 import com.ruoyi.other.api.feignClient.GoodsClient;
+import com.ruoyi.payment.api.feignClient.AliPaymentClient;
+import com.ruoyi.payment.api.feignClient.WxPaymentClient;
+import com.ruoyi.payment.api.model.RefundReq;
+import com.ruoyi.payment.api.model.RefundResp;
+import com.ruoyi.payment.api.model.WxPaymentRefundModel;
 import com.ruoyi.system.api.domain.SysUser;
 import com.ruoyi.system.api.feignClient.SysUserClient;
 import io.swagger.annotations.Api;
@@ -111,6 +117,12 @@
 	}
 	@Resource
 	private TokenService tokenService;
+	@Resource
+	private AliPaymentClient aliPaymentClient;
+	@Resource
+	private WxPaymentClient wxPaymentClient;
+	@Resource
+	private AppCouponClient appCouponClient;
 	@GetMapping("/cancelShoppingOrder")
 	@ApiOperation(value = "取消订单", tags = {"管理后台-购物订单"})
 	public AjaxResult cancelShoppingOrder(String id) {
@@ -123,9 +135,40 @@
 		switch (byId.getPaymentType()){
 			case 1:
 				// 微信
+				WxPaymentRefundModel wxPaymentRefundModel = new WxPaymentRefundModel();
+				wxPaymentRefundModel.setTransaction_id(byId.getSerialNumber());
+				wxPaymentRefundModel.setOut_trade_no(byId.getCode());
+				wxPaymentRefundModel.setOut_refund_no(OrderCodeUtil.getOrderCode("GW"));
+				// todo 部署到线上之后写回调地址
+//				wxPaymentRefundModel.setNotify_url("");
+				String string = byId.getPaymentAmount().multiply(new BigDecimal("100")).toString();
+				int i = Integer.parseInt(string);
+				WxPaymentRefundModel.RefundAmount refundAmount = new WxPaymentRefundModel.RefundAmount();
+				refundAmount.setTotal(i);
+				refundAmount.setRefund(i);
+				wxPaymentRefundModel.setAmount(refundAmount);
+				wxPaymentClient.refundOrderR(wxPaymentRefundModel);
 				break;
 			case 2:
 				// 支付宝
+				RefundReq refundReq = new RefundReq();
+				refundReq.setOutTradeNo(byId.getSerialNumber());
+				String gw = OrderCodeUtil.getOrderCode("GW");
+				refundReq.setOutRequestNo(gw);
+				refundReq.setRefundAmount(byId.getPaymentAmount().toString());
+				refundReq.setRefundReason("后台退款");
+				RefundResp data = aliPaymentClient.refund(refundReq).getData();
+				if (data!=null){
+					// 退款成功 回退优惠券
+//					byId.setStatus(4);
+					if (byId.getAppCouponId()!=null){
+						appCouponClient.refund(byId.getAppCouponId().toString());
+						byId.setRefundCode(gw);
+						byId.setRefundAmount(byId.getPaymentAmount());
+						byId.setRefundStatus(2);
+						byId.setRefundSerialNumber(data.getTradeNo());
+					}
+				}
 				break;
 		}
 		shoppingOrderService.updateById(byId);
diff --git a/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/AliPayController.java b/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/AliPayController.java
index e5e125e..ea2bb50 100644
--- a/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/AliPayController.java
+++ b/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/AliPayController.java
@@ -3,7 +3,7 @@
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.payment.ali.config.AliProperties;
 import com.ruoyi.payment.ali.v2.AppletPayUtil;
-import com.ruoyi.payment.ali.v2.model.*;
+import com.ruoyi.payment.api.model.*;
 import com.ruoyi.payment.api.vo.AliPaymentReq;
 import com.ruoyi.payment.api.vo.AliPaymentResp;
 import com.ruoyi.payment.api.vo.AliQueryOrder;
@@ -80,8 +80,8 @@
 	 * 后台退款 远程调用
 	 */
 	@PostMapping("/refund")
-	public RefundResp refund(@RequestBody RefundReq dto){
-		return appletPayUtil.refund(dto);
+	public R<RefundResp> refund(@RequestBody RefundReq dto){
+		return R.ok(appletPayUtil.refund(dto));
 	}
 	
 	
diff --git a/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/WxPayController.java b/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/WxPayController.java
index d51b017..81ea044 100644
--- a/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/WxPayController.java
+++ b/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/WxPayController.java
@@ -5,7 +5,7 @@
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.payment.api.vo.PaymentOrder;
 import com.ruoyi.payment.wx.enums.RefundEnum;
-import com.ruoyi.payment.wx.model.WxPaymentRefundModel;
+import com.ruoyi.payment.api.model.WxPaymentRefundModel;
 import com.ruoyi.payment.wx.resp.NotifyV3PayDecodeRespBody;
 import com.ruoyi.payment.wx.utils.WxV3Pay;
 import io.swagger.annotations.Api;
@@ -79,7 +79,30 @@
         // TODO 退款业务处理
         return AjaxResult.success();
     }
-
+    /**
+     * 微信v3支付-订单退款 远程调用
+     *
+     * @return
+     */
+    @ApiOperation("订单退款")
+    @PostMapping(value = "refundOrderR")
+    public R<String> refundOrderR(@RequestBody WxPaymentRefundModel model) {
+        Map<String, Object> result = wxV3Pay.refund(model);
+        log.info("退款结果:{}", result);
+        // 微信支付退款单号
+        String refund_id = result.get("refund_id").toString();
+        // 商户退款单号
+        String out_refund_no = result.get("out_refund_no").toString();
+        // 微信支付订单号
+        String transaction_id = result.get("transaction_id").toString();
+        // 商户订单号 tradeNo
+        String out_trade_no = result.get("out_trade_no").toString();
+        // 退款成功时间
+        String success_time = Objects.nonNull(result.get("success_time")) ? result.get("success_time").toString() : null;
+        // 退款状态 RefundEnum
+        String status = result.get("status").toString();
+        return R.ok(status);
+    }
     /**
      * 支付回调
      */
@@ -144,6 +167,12 @@
             // 时间不对的话,可以调用  WxTimeUtils.toRfc3339Date(success_time)转换一下
             String success_time = params.get("success_time").toString();
             if (tradeState.equals(RefundEnum.SUCCESS.name())) {
+                String substring = out_refund_no.substring(0, 2);
+                switch (substring){
+                    case "GW":
+                        break;
+
+                }
                 // TODO 退款成功处理
                 wxV3Pay.ack();
             } else {
diff --git a/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/wx/utils/WxAbstractPay.java b/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/wx/utils/WxAbstractPay.java
index dbbae3a..8e040ac 100644
--- a/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/wx/utils/WxAbstractPay.java
+++ b/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/wx/utils/WxAbstractPay.java
@@ -4,7 +4,7 @@
 import com.ruoyi.common.core.utils.WebUtils;
 import com.ruoyi.payment.wx.model.WxCloseOrderModel;
 import com.ruoyi.payment.wx.model.WxPaymentInfoModel;
-import com.ruoyi.payment.wx.model.WxPaymentRefundModel;
+import com.ruoyi.payment.api.model.WxPaymentRefundModel;
 import com.ruoyi.payment.wx.resp.NotifyV3PayDecodeRespBody;
 import com.wechat.pay.contrib.apache.httpclient.auth.PrivateKeySigner;
 import com.wechat.pay.contrib.apache.httpclient.auth.Verifier;
diff --git a/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/wx/utils/WxV3Pay.java b/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/wx/utils/WxV3Pay.java
index 4e01120..af10ca3 100644
--- a/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/wx/utils/WxV3Pay.java
+++ b/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/wx/utils/WxV3Pay.java
@@ -7,7 +7,7 @@
 import com.ruoyi.payment.wx.model.WeixinProperties;
 import com.ruoyi.payment.wx.model.WxCloseOrderModel;
 import com.ruoyi.payment.wx.model.WxPaymentInfoModel;
-import com.ruoyi.payment.wx.model.WxPaymentRefundModel;
+import com.ruoyi.payment.api.model.WxPaymentRefundModel;
 import com.ruoyi.payment.wx.resp.NotifyV3PayDecodeRespBody;
 import com.wechat.pay.contrib.apache.httpclient.WechatPayHttpClientBuilder;
 import com.wechat.pay.contrib.apache.httpclient.auth.PrivateKeySigner;

--
Gitblit v1.7.1