From 055ca3590436e8b078955faddfa9ef9fec8b0181 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期日, 10 八月 2025 20:21:33 +0800
Subject: [PATCH] Merge branch 'dev' of http://120.76.84.145:10101/gitblit/r/java/gy_jifenshangcheng into dev

---
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/WXCallBackController.java |   87 ++++++++++++++++++++++++-------------------
 1 files changed, 49 insertions(+), 38 deletions(-)

diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/WXCallBackController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/WXCallBackController.java
index 5b6e1fd..34c3034 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/WXCallBackController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/WXCallBackController.java
@@ -1,5 +1,6 @@
 package com.ruoyi.other.controller;
 
+import com.alibaba.fastjson.JSONObject;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.web.page.PageInfo;
 import com.ruoyi.common.security.service.TokenService;
@@ -20,21 +21,24 @@
 import com.ruoyi.system.api.feignClient.SysUserClient;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.Map;
 
 /**
  * <p>
- *  微信回调
+ * 微信回调
  * </p>
  *
  * @author 无关风月
@@ -59,22 +63,37 @@
     private WechatPayService wechatPayService;
     @Resource
     private TServicePayService servicePayService;
+
     @ResponseBody
     @PostMapping("/integralCallback")
-    public void integralCallback(HttpServletRequest request, HttpServletResponse response){
+    public R integralCallback(HttpServletRequest request) throws IOException {
         System.err.println("积分充值回调");
-        PayResult payResult= null;
-        try {
-            payResult = wechatPayService.processNotify(request);
-        } catch (Exception e) {
-            throw new RuntimeException(e);
+        Map<String, String> params = new HashMap<String, String>();
+        System.err.println("请求"+request);
+        BufferedReader reader = request.getReader();
+        String string1 = reader.toString();
+        System.err.println("请求reader"+string1);
+        StringBuilder requestBody = new StringBuilder();
+        String line;
+        while ((line = reader.readLine()) != null) {
+            requestBody.append(line);
         }
-        IntegralPay integralPay = integralPayService.lambdaQuery().eq(IntegralPay::getCode, payResult.getOrderNumber()).one();
-        if (integralPay != null && integralPay.getPayStatus() == 1){
+        System.err.println("全部请求体"+requestBody);
+        JSONObject jsonObject = JSONObject.parseObject(requestBody.toString());
+        JSONObject resp_data = jsonObject.getJSONObject("resp_data");
+        String string = resp_data.getString("trans_stat");
+        if (!string.equals("S")){
+            return R.ok();
+        }
+        String req_seq_id = resp_data.getString("req_seq_id");
+        String hf_seq_id = resp_data.getString("hf_seq_id");
+        IntegralPay integralPay = integralPayService.lambdaQuery().eq(IntegralPay::getCode, req_seq_id).one();
+        if (integralPay != null && integralPay.getPayStatus() == 1) {
+
             SysUser data = sysUserClient.getSysUser(integralPay.getUserId()).getData();
             integralPay.setPayStatus(2);
             integralPay.setPayTime(LocalDateTime.now());
-            integralPay.setOrderNumber(payResult.getTransactionId());
+            integralPay.setOrderNumber(hf_seq_id);
             integralPayService.updateById(integralPay);
             IntegralRecord integralRecord = new IntegralRecord();
             integralRecord.setPayId(integralPay.getId());
@@ -85,42 +104,35 @@
             integralRecord.setDelFlag(0);
             integralRecord.setCreateTime(LocalDateTime.now());
             integralRecordService.save(integralRecord);
-            data.setIntegral(data.getIntegral()+integralPay.getIntegralCount());
+            data.setIntegral(data.getIntegral()!=null?data.getIntegral() + integralPay.getIntegralCount():integralPay.getIntegralCount());
             sysUserClient.updateSysUser(data);
+            return R.ok(null, "success");
         }
-            response.setStatus(200);
-            PrintWriter out = null;
-            try {
-                out = response.getWriter();
-            } catch (IOException e) {
-                throw new RuntimeException(e);
-            }
-            out.println("success");
-            out.flush();
-            out.close();
+        return R.ok(null, "error");
     }
+
     @ResponseBody
     @PostMapping("/serviceCallback")
-    public void serviceCallback(HttpServletRequest request, HttpServletResponse response){
+    public void serviceCallback(HttpServletRequest request, HttpServletResponse response) {
         System.err.println("服务费缴纳回调");
-        PayResult payResult= null;
+        PayResult payResult = null;
         try {
             payResult = wechatPayService.processNotify(request);
         } catch (Exception e) {
             throw new RuntimeException(e);
         }
         ServicePay servicePay = servicePayService.lambdaQuery().eq(ServicePay::getCode, payResult.getOrderNumber()).one();
-        if (servicePay != null && servicePay.getPayStatus() == 1){
+        if (servicePay != null && servicePay.getPayStatus() == 1) {
             servicePay.setPayStatus(2);
             ServicePay servicePayBefore = servicePayService.lambdaQuery()
                     .eq(ServicePay::getUserId, servicePay.getUserId())
-                    .eq(ServicePay::getPayStatus,2)
+                    .eq(ServicePay::getPayStatus, 2)
                     .orderByDesc(ServicePay::getCreateTime)
                     .last("limit 1")
                     .one();
-            if (servicePayBefore!=null){
+            if (servicePayBefore != null) {
                 servicePay.setEndTime(servicePayBefore.getEndTime().plusDays(365));
-            }else{
+            } else {
                 servicePay.setEndTime(LocalDateTime.now().plusDays(365));
 
             }
@@ -130,18 +142,17 @@
             servicePay.setOrderNumber(payResult.getTransactionId());
             servicePayService.updateById(servicePay);
         }
-            response.setStatus(200);
-            PrintWriter out = null;
-            try {
-                out = response.getWriter();
-            } catch (IOException e) {
-                throw new RuntimeException(e);
-            }
-            out.println("success");
-            out.flush();
-            out.close();
+        response.setStatus(200);
+        PrintWriter out = null;
+        try {
+            out = response.getWriter();
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        out.println("success");
+        out.flush();
+        out.close();
     }
-
 
 
 }

--
Gitblit v1.7.1