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-communityWorldCup/src/main/java/com/dsh/communityWorldCup/controller/WorldCupController.java | 65 ++++++++++++++++++++++++++++---- 1 files changed, 56 insertions(+), 9 deletions(-) diff --git a/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/controller/WorldCupController.java b/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/controller/WorldCupController.java index ccec4d5..0ade7ca 100644 --- a/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/controller/WorldCupController.java +++ b/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/controller/WorldCupController.java @@ -23,6 +23,8 @@ import com.dsh.communityWorldCup.util.PayMoneyUtil; import com.dsh.communityWorldCup.util.ResultUtil; import com.dsh.communityWorldCup.util.TokenUtil; +import com.dsh.communityWorldCup.util.wx.WxV3PayConfig; +import com.wechat.pay.contrib.apache.httpclient.util.AesUtil; import groovy.util.logging.Log4j; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -37,8 +39,10 @@ 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.nio.charset.StandardCharsets; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -448,23 +452,66 @@ } } - + @ResponseBody + @PostMapping("/base/worldCup/wxPayWorldCupCallback") + public void wxPayWorldCupCallback(HttpServletRequest request, HttpServletResponse response){ + System.err.println("微信回调"); + try { + Map<String, String> map = payMoneyUtil.weixinpayCallback(request); + if (null != map) { + String code = map.get("out_trade_no"); + String transaction_id = map.get("transaction_id"); + String result = map.get("result"); + ResultUtil resultUtil = worldCupService.paymentWorldCupCallback(code, transaction_id); + if (resultUtil.getCode() == 200) { + PrintWriter out = response.getWriter(); + out.println(result); + out.flush(); + out.close(); + } else { + log.error("社区世界杯报名微信支付回业务处理异常:" + resultUtil.getMsg()); + } + } else { + log.error("社区世界杯报名微信支付回调解析异常"); + } + } catch (Exception e) { + e.printStackTrace(); + } + } /** * 微信支付回调 */ @ResponseBody - @PostMapping("/base/worldCup/wxPayWorldCupCallback") - public void wxPayWorldCupCallback(HttpServletRequest request, HttpServletResponse response){ + @PostMapping("/base/worldCup/wxPayWorldCupCallback1") + public void wxPayWorldCupCallback1(HttpServletRequest request, HttpServletResponse response){ try { - Map<String, String> map = payMoneyUtil.weixinpayCallback(request); - if(null != map){ - String code = map.get("out_trade_no"); - String transaction_id = map.get("transaction_id"); - String result = map.get("result"); + 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"); + if (trade_state.equals("SUCCESS")) { ResultUtil resultUtil = worldCupService.paymentWorldCupCallback(code, transaction_id); if(resultUtil.getCode() == 200){ PrintWriter out = response.getWriter(); - out.println(result); + out.println("SUCCESS"); out.flush(); out.close(); }else{ -- Gitblit v1.7.1