From 79d5e91444eca538d523d3bd014528abd939da33 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期四, 14 八月 2025 18:54:45 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev' 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