From 4f30cf515e738340a792b03dcd0baf2dfed8958c Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Tue, 23 Aug 2022 16:56:18 +0800
Subject: [PATCH] 20220822

---
 src/main/java/cc/mrbird/febs/pay/model/UniPayCallBackDto.java     |   36 ++++++++++++++++++
 src/main/java/cc/mrbird/febs/pay/controller/UnipayController.java |   37 ++++--------------
 2 files changed, 44 insertions(+), 29 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/pay/controller/UnipayController.java b/src/main/java/cc/mrbird/febs/pay/controller/UnipayController.java
index 99ee0aa..5d9a08d 100644
--- a/src/main/java/cc/mrbird/febs/pay/controller/UnipayController.java
+++ b/src/main/java/cc/mrbird/febs/pay/controller/UnipayController.java
@@ -6,9 +6,11 @@
 import cc.mrbird.febs.mall.entity.MallOrderInfo;
 import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper;
 import cc.mrbird.febs.mall.service.IApiMallMemberService;
+import cc.mrbird.febs.pay.model.UniPayCallBackDto;
 import cc.mrbird.febs.rabbit.producter.AgentProducer;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -35,39 +37,16 @@
     private AgentProducer agentProducer;
 
     @GetMapping(value = "/unipayCallBack")
-    public String unipayCallBack(HttpServletRequest request){
+    public String unipayCallBack(HttpServletRequest request, UniPayCallBackDto uniPayCallBackDto){
         log.info("进入汇聚支付回调");
-        String orderNo = "";
-        BigDecimal orderAmount = BigDecimal.ZERO;
-        String payTradeNo = "";
-        String callBackState = "";
         String requestURI = request.getRequestURI();
 
-        log.info("进入汇聚支付回调"+requestURI);
+        log.info("进入汇聚支付回调"+ JSONUtil.parseObj(uniPayCallBackDto));
+        String orderNo = uniPayCallBackDto.getR2_OrderNo();
+        BigDecimal orderAmount = new BigDecimal(uniPayCallBackDto.getR3_Amount());
+        String callBackState = uniPayCallBackDto.getR6_Status();
+        String payTradeNo = uniPayCallBackDto.getR7_TrxNo();
 //            String output = java.net.URLDecoder.decode(requestURI, "UTF-8");
-        String params = StrUtil.subAfter(requestURI, "?", true);
-        System.out.println(params);
-        List<String> paramStrList = StrUtil.splitTrim(params, "&");
-        if(CollUtil.isNotEmpty(paramStrList)){
-            for(String paramStr :paramStrList){
-                boolean r2orderNo = paramStr.startsWith("r2_OrderNo");
-                if(r2orderNo){
-                    orderNo = StrUtil.subAfter(paramStr, "=", true);
-                }
-                boolean r3Amount = paramStr.startsWith("r3_Amount");
-                if(r3Amount){
-                    orderAmount = new BigDecimal(StrUtil.subAfter(paramStr, "=", true));
-                }
-                boolean r6Status = paramStr.startsWith("r6_Status");
-                if(r6Status){
-                    callBackState = StrUtil.subAfter(paramStr, "=", true);
-                }
-                boolean r7TrxNo = paramStr.startsWith("r7_TrxNo");
-                if(r7TrxNo){
-                    payTradeNo = StrUtil.subAfter(paramStr, "=", true);
-                }
-            }
-        }
 
         log.info("进入汇聚支付回调"+orderNo+";"+orderAmount+";"+payTradeNo+";"+callBackState);
         if("100".equals(callBackState) && StrUtil.isNotBlank(orderNo)){
diff --git a/src/main/java/cc/mrbird/febs/pay/model/UniPayCallBackDto.java b/src/main/java/cc/mrbird/febs/pay/model/UniPayCallBackDto.java
new file mode 100644
index 0000000..718a130
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/pay/model/UniPayCallBackDto.java
@@ -0,0 +1,36 @@
+package cc.mrbird.febs.pay.model;
+
+import lombok.Data;
+
+/**
+ * https://www.baidu.com?
+ * r1_MerchantNo=888000000000000
+ * &r2_OrderNo=2020100000000000000
+ * &r3_Amount=10.00
+ * &r4_Cur=1
+ * &r5_Mp=goods
+ * &r6_Status=100
+ * &r7_TrxNo=100220100000000000
+ * &r8_BankOrderNo=100220100000000000
+ * &r9_BankTrxNo=4200000000202000000000000000
+ * &ra_PayTime=2022-08-11%2B16%253A14%253A39
+ * &rb_DealTime=2022-08-11%2B16%253A14%253A39
+ * &rc_BankCode=WEIXI_GZH
+ * &hmac=14c3819b5cc7bb80635901934f76c7a4
+ */
+@Data
+public class UniPayCallBackDto {
+    private String r1_MerchantNo;
+    private String r2_OrderNo;
+    private String r3_Amount;
+    private String r4_Cur;
+    private String r5_Mp;
+    private String r6_Status;
+    private String r7_TrxNo;
+    private String r8_BankOrderNo;
+    private String r9_BankTrxNo;
+    private String ra_PayTime;
+    private String rb_DealTime;
+    private String rc_BankCode;
+    private String hmac;
+}

--
Gitblit v1.9.1