Browse Source

微信/支付宝退款feign

jyc 2 weeks ago
parent
commit
d5a5dadb26

+ 11 - 0
alien-lawyer/src/main/java/shop/alien/lawyer/feign/AlienStoreFeign.java

@@ -2,7 +2,12 @@ package shop.alien.lawyer.feign;
 
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
+import shop.alien.entity.result.R;
+
+import java.util.Map;
 
 /**
  * @author ssk
@@ -25,4 +30,10 @@ public interface AlienStoreFeign {
                          @RequestParam(value = "refundAmount") String refundAmount,
                          @RequestParam(value = "refundReason") String refundReason,
                          @RequestParam(value = "partialRefundCode") String partialRefundCode);
+
+    /**
+     * 微信/支付宝退款
+     */
+    @PostMapping("payment/refunds")
+    R paymentRefunds(@RequestBody Map<String, String> params);
 }

+ 22 - 0
alien-lawyer/src/main/java/shop/alien/lawyer/service/impl/OrderExpirationServiceImpl.java

@@ -9,23 +9,28 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.CommandLineRunner;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import shop.alien.entity.result.R;
 import shop.alien.entity.store.LawyerConsultationOrder;
 import shop.alien.entity.store.LifeNotice;
 import shop.alien.entity.store.vo.WebSocketVo;
 import shop.alien.lawyer.config.BaseRedisService;
 import shop.alien.lawyer.config.WebSocketProcess;
 import shop.alien.lawyer.controller.AliController;
+import shop.alien.lawyer.feign.AlienStoreFeign;
 import shop.alien.lawyer.listener.RedisKeyExpirationHandler;
 import shop.alien.lawyer.service.OrderExpirationService;
 import shop.alien.mapper.LawyerConsultationOrderMapper;
 import shop.alien.mapper.LifeNoticeMapper;
 import shop.alien.mapper.LifeUserMapper;
 import shop.alien.util.common.DateUtils;
+import shop.alien.util.common.constant.PaymentEnum;
 
 
 import javax.annotation.PostConstruct;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
  * 訂單過期處理服務實現類
@@ -51,6 +56,7 @@ public class OrderExpirationServiceImpl implements OrderExpirationService, Comma
     private final LifeNoticeMapper lifeNoticeMapper;
     private final LifeUserMapper lifeUserMapper;
     private final WebSocketProcess webSocketProcess;
+    private final AlienStoreFeign alienStoreFeign;
 
     /**
      * Redis key前綴:訂單支付超時
@@ -133,6 +139,7 @@ public class OrderExpirationServiceImpl implements OrderExpirationService, Comma
             String refundReason = "";
             String title = "";
             String message = "";
+            Map<String, String> paramMap = new HashMap<>();
             //律师未接单退款
             if (expiredKey.contains(ORDER_ACCEPT_TIMEOUT_PREFIX)) {
                 orderNo = expiredKey.replace(ORDER_ACCEPT_TIMEOUT_PREFIX, "");
@@ -150,6 +157,13 @@ public class OrderExpirationServiceImpl implements OrderExpirationService, Comma
                 // 處理訂單退款
                 aliController.processRefund(order.getAlipayNo(),  new BigDecimal(order.getOrderAmount()).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP).toString(), refundReason,"");
 
+                // 微信/支付宝退款
+                paramMap.put("payType", "1".equals(order.getPayType()) ? PaymentEnum.ALIPAY.getType() : PaymentEnum.WECHAT_PAY.getType());
+                paramMap.put("outTradeNo", order.getAlipayNo());
+                paramMap.put("refundReason", refundReason);
+                paramMap.put("refundAmount", new BigDecimal(order.getOrderAmount()).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP).toString());
+                R refunds = alienStoreFeign.paymentRefunds(paramMap);
+
                 log.info("訂單退款成功,訂單no: {}", orderNo);
 
                 //通知
@@ -181,6 +195,14 @@ public class OrderExpirationServiceImpl implements OrderExpirationService, Comma
 
                 // 處理訂單退款
                 String refundResult = aliController.processRefund(order.getAlipayNo(), new BigDecimal(order.getOrderAmount()).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP).toString(), refundReason, "");
+
+                // 微信/支付宝退款
+                paramMap.put("payType", "1".equals(order.getPayType()) ? PaymentEnum.ALIPAY.getType() : PaymentEnum.WECHAT_PAY.getType());
+                paramMap.put("outTradeNo", order.getAlipayNo());
+                paramMap.put("refundReason", refundReason);
+                paramMap.put("refundAmount", new BigDecimal(order.getOrderAmount()).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP).toString());
+                R refunds = alienStoreFeign.paymentRefunds(paramMap);
+
                 if ("调用成功".equals(refundResult)) {
                     log.info("訂單退款成功,訂單no: {}", orderNo);