From 5dc40fcd64b0513150f1d8335ab849e6d8cdc28e Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期五, 04 七月 2025 19:42:49 +0800 Subject: [PATCH] 支付版本更新 根据资金流向使用V2或V3服务商版本支付 --- cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java | 74 ++++++++++++++++++++++++++++++++++++- 1 files changed, 72 insertions(+), 2 deletions(-) diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java index 437749b..41f3fae 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java +++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java @@ -2,6 +2,7 @@ import cn.mb.cloud.common.data.controller.BaseController; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -14,6 +15,8 @@ import com.dsh.course.model.vo.TQueryBenefitsVideosVO; import com.dsh.course.service.*; import com.dsh.course.util.*; +import com.dsh.course.util.wx.WxV3PayConfig; +import com.wechat.pay.contrib.apache.httpclient.util.AesUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -26,8 +29,10 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.io.BufferedReader; import java.io.PrintWriter; import java.math.BigDecimal; +import java.nio.charset.StandardCharsets; import java.util.*; import java.util.stream.Collectors; @@ -129,6 +134,29 @@ return ResultUtil.runErr(); } } + + @ResponseBody + @PostMapping("/base/course/queryCoursePackageType") + @ApiOperation(value = "获取课程类型列表", tags = {"APP-课程列表"}) + @ApiImplicitParams({ + }) + public ResultUtil<List<BaseVo>> queryCoursePackageType1() { + try { + List<TCoursePackageType> coursePackageTypes = coursePackageTypeService.list(new QueryWrapper<TCoursePackageType>().eq("state", 1)); + List<BaseVo> list = new ArrayList<>(); + coursePackageTypes.forEach(c -> { + BaseVo baseVo = new BaseVo(); + BeanUtils.copyProperties(c, baseVo); + list.add(baseVo); + }); + return ResultUtil.success(list); + } catch (Exception e) { + e.printStackTrace(); + return ResultUtil.runErr(); + } + } + + @ResponseBody @@ -244,6 +272,47 @@ * @param response */ @ResponseBody + @PostMapping("/base/course/weChatPaymentCourseCallback1") + public void weChatPaymentCourseCallback1(HttpServletRequest request, HttpServletResponse response) { + try { + System.err.println("微信回调"); + 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); + } + System.err.println("全部请求体" + requestBody); + JSONObject jsonObject = JSONObject.parseObject(requestBody.toString()); + JSONObject resource = jsonObject.getJSONObject("resource"); + + AesUtil aesUtil = new AesUtil(WxV3PayConfig.apiV3Key.getBytes(StandardCharsets.UTF_8)); + String decryptedData = aesUtil.decryptToString(resource.getString("associated_data").getBytes(StandardCharsets.UTF_8), resource.getString("nonce").getBytes(StandardCharsets.UTF_8), + resource.getString("ciphertext")); + System.err.println("微信解密的字符串信息" + decryptedData); + JSONObject jsonInfo = (JSONObject) JSONObject.parse(decryptedData); + String code = jsonInfo.getString("out_trade_no"); + String transaction_id = jsonInfo.getString("transaction_id"); + String trade_state = jsonInfo.getString("trade_state"); + String attach = jsonInfo.getString("attach"); + if (trade_state.equals("SUCCESS")) { + + ResultUtil resultUtil = coursePackageService.paymentCourseCallback(code, transaction_id, attach); + if (resultUtil.getCode() == 200) { + PrintWriter out = response.getWriter(); + out.write("SUCCESS"); + out.flush(); + out.close(); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + @ResponseBody @PostMapping("/base/course/weChatPaymentCourseCallback") public void weChatPaymentCourseCallback(HttpServletRequest request, HttpServletResponse response) { try { @@ -266,7 +335,6 @@ e.printStackTrace(); } } - /** * 购买课程支付宝回调 @@ -436,10 +504,12 @@ public List<String> queryPackageById(@RequestBody Integer coursePackageId) { ArrayList<String> strings = new ArrayList<>(); TCoursePackage byId = coursePackageService.getById(coursePackageId); + if(null == byId){ + return null; + } Integer coursePackageTypeId = byId.getCoursePackageTypeId(); strings.add(coursePackageTypeService.getById(coursePackageTypeId).getName()); strings.add(byId.getName()); - return strings; } -- Gitblit v1.7.1