From 2e9cb1d9ea6b13df5cd1f43eae476cdbef4eab2c Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期四, 26 九月 2024 17:59:53 +0800
Subject: [PATCH] 合併代碼
---
ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/WxPayController.java | 65 +++++++++++++++++++++++++++-----
1 files changed, 54 insertions(+), 11 deletions(-)
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 51b2238..6c834a0 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
@@ -3,9 +3,11 @@
import com.fasterxml.jackson.core.type.TypeReference;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.order.api.feignClient.OrderClient;
import com.ruoyi.payment.api.vo.PaymentOrder;
+import com.ruoyi.payment.api.vo.WxRefundNotifyResp;
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;
@@ -14,6 +16,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.math.BigDecimal;
@@ -31,6 +34,10 @@
public class WxPayController {
@Autowired
private WxV3Pay wxV3Pay;
+
+ @Resource
+ private OrderClient orderClient;
+
/**
@@ -79,25 +86,54 @@
// 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);
+ }
/**
* 支付回调
*/
@PostMapping("pay/notify")
+ @ApiOperation("订单回调")
public R<Map<String, Object>> payNotify(HttpServletRequest request) throws Exception {
try {
Map<String, Object> params = wxV3Pay.verifyNotify(request, new TypeReference<Map<String, Object>>() {});
- String outRefundNo = (String) params.get("out_refund_no");
- String substring = outRefundNo.substring(0, 2);
+ log.info("支付回调:{}", params);
+ String outRefundNo = (String) params.get("transaction_id");
+ String out_trade_no = params.get("out_trade_no").toString();
+ String substring = out_trade_no.substring(0, 2);
switch (substring){
//购物订单
case "GW":
- //更改订单状态
- //如果是优惠卷赠送优惠卷
+ R r = orderClient.callBack(out_trade_no, outRefundNo);
+ System.err.println("----收到购物回调");
+ break;
+ case "HY":
+ orderClient.vipCallBack(out_trade_no,outRefundNo);
+ System.err.println("----收到会员回调");
break;
}
- log.info("支付回调:{}", params);
return R.ok(params);
} catch (Exception e) {
log.error("支付回调异常:{}", e, e);
@@ -126,12 +162,12 @@
* 退款回调
*/
@PostMapping("refund/notify")
- public void refundNotify(HttpServletRequest request) throws IOException {
+ public R<WxRefundNotifyResp> refundNotify(HttpServletRequest request) throws IOException {
try {
Map<String, Object> params = wxV3Pay.verifyNotify(request, new TypeReference<Map<String, Object>>() {
});
// 商户订单号
- String tradeNo = params.get("out_trade_no").toString();
+ String out_trade_no = params.get("out_trade_no").toString();
// 商户退款单号
String out_refund_no = params.get("out_refund_no").toString();
// 微信支付订单号
@@ -144,15 +180,22 @@
// 时间不对的话,可以调用 WxTimeUtils.toRfc3339Date(success_time)转换一下
String success_time = params.get("success_time").toString();
if (tradeState.equals(RefundEnum.SUCCESS.name())) {
- // TODO 退款成功处理
+ WxRefundNotifyResp resp = new WxRefundNotifyResp();
+ resp.setOut_trade_no(out_trade_no);
+ resp.setOut_refund_no(out_refund_no);
+ resp.setTradeState(tradeState);
+ resp.setTransaction_id(transaction_id);
+ resp.setRefund_id(refund_id);
+ resp.setSuccess_time(success_time);
wxV3Pay.ack();
+ return R.ok(resp);
} else {
wxV3Pay.ack(false, "不是成功的退款状态");
}
} catch (Exception e) {
wxV3Pay.ack(false, e.getMessage());
}
-
+ return R.fail();
}
/**
--
Gitblit v1.7.1