package com.dsh.account.controller; import com.alibaba.fastjson.JSONObject; import com.dsh.account.service.RechargeRecordsService; import com.dsh.account.service.TAppUserService; import com.dsh.account.service.TStudentService; import com.dsh.account.util.PayMoneyUtil; import com.dsh.account.util.ResultUtil; import com.dsh.account.util.wx.WxV3PayConfig; import com.wechat.pay.contrib.apache.httpclient.util.AesUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.BufferedReader; import java.io.PrintWriter; import java.nio.charset.StandardCharsets; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; /** * 支付回调控制器 */ @RestController @RequestMapping("") public class PaymentCallbackController { @Autowired private PayMoneyUtil payMoneyUtil; @Autowired private TStudentService tstuService; @Autowired private RechargeRecordsService recordsService; @Autowired private TAppUserService tappService; /** * 课包续课支付宝支付回调接口 */ @PostMapping("/base/coursePackage/alipayPaymentCallback") public void alipayCallback(HttpServletRequest request, HttpServletResponse response) { try { Map map = payMoneyUtil.alipayCallback(request); if (null != map) { String out_trade_no = map.get("out_trade_no"); String transaction_id = map.get("transaction_id"); ResultUtil resultUtil = tstuService.insertVipPaymentCallback(out_trade_no, transaction_id); if (resultUtil.getCode() == 200) { PrintWriter out = response.getWriter(); out.write("success"); out.flush(); out.close(); } } } catch (Exception e) { e.printStackTrace(); } } /** * 课包续课微信支付回调接口 */ @PostMapping("/base/coursePackage/wechatPaymentCallback1") public void weChatCallback1(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 out_trade_no = 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 = tstuService.insertVipPaymentCallback(out_trade_no, transaction_id); if (resultUtil.getCode() == 200) { PrintWriter out = response.getWriter(); out.write("SUCCESS"); out.flush(); out.close(); } } } catch (Exception e) { e.printStackTrace(); } } @PostMapping("/base/coursePackage/wechatPaymentCallback") public void weChatCallback(HttpServletRequest request, HttpServletResponse response) { try { Map map = payMoneyUtil.weixinpayCallback(request); if (null != map) { String out_trade_no = map.get("out_trade_no"); String transaction_id = map.get("transaction_id"); String result = map.get("result"); ResultUtil resultUtil = tstuService.insertVipPaymentCallback(out_trade_no, transaction_id); if (resultUtil.getCode() == 200) { PrintWriter out = response.getWriter(); out.write(result); out.flush(); out.close(); } } } catch (Exception e) { e.printStackTrace(); } } /** * 充值玩湃币支付宝支付回调接口 */ @PostMapping("/base/recharge/alipayRechargeCallback") public void alipayRechargeCallback(HttpServletRequest request, HttpServletResponse response) { try { Map map = payMoneyUtil.alipayCallback(request); if (null != map) { String out_trade_no = map.get("out_trade_no"); String transaction_id = map.get("transaction_id"); ResultUtil resultUtil = recordsService.addRechargeCallbackPay(out_trade_no, transaction_id); if (resultUtil.getCode() == 200) { PrintWriter out = response.getWriter(); out.write("success"); out.flush(); out.close(); } } } catch (Exception e) { e.printStackTrace(); } } /** * 课包续课微信支付回调接口 */ @PostMapping("/base/recharge/wechatRechargeCallback1") public void wechatRechargeCallback1(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 out_trade_no = 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 = recordsService.addRechargeCallbackPay(out_trade_no, transaction_id); if (resultUtil.getCode() == 200) { PrintWriter out = response.getWriter(); out.write("SUCCESS"); out.flush(); out.close(); } } } catch (Exception e) { e.printStackTrace(); } } /** * 课包续课微信支付回调接口 */ @PostMapping("/base/recharge/wechatRechargeCallback") public void wechatRechargeCallback(HttpServletRequest request, HttpServletResponse response) { try { Map map = payMoneyUtil.weixinpayCallback(request); if (null != map) { String out_trade_no = map.get("out_trade_no"); String transaction_id = map.get("transaction_id"); String result = map.get("result"); ResultUtil resultUtil = recordsService.addRechargeCallbackPay(out_trade_no, transaction_id); if (resultUtil.getCode() == 200) { PrintWriter out = response.getWriter(); out.write(result); out.flush(); out.close(); } } } catch (Exception e) { e.printStackTrace(); } } @ResponseBody @PostMapping("/base/pointMer/exchangeGoodPaymentWeChatCallback") public void exchangeGoodPaymentWeChatCallback(HttpServletRequest request, HttpServletResponse response) { try { Map map = payMoneyUtil.weixinpayCallback(request); if (null != map) { String out_trade_no = map.get("out_trade_no"); String transaction_id = map.get("transaction_id"); String result = map.get("result"); ResultUtil resultUtil = tappService.exchangeAddPaymentCallback(out_trade_no, transaction_id); if (resultUtil.getCode() == 200) { PrintWriter out = response.getWriter(); out.write(result); out.flush(); out.close(); } } } catch (Exception e) { e.printStackTrace(); } } /** * 兑换商品支付的微信回调V3版本 * * @param request * @param response */ @ResponseBody @PostMapping("/base/pointMer/exchangeGoodPaymentWeChatCallback1") public void exchangeGoodPaymentWeChatCallback1(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 out_trade_no = 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 = tappService.exchangeAddPaymentCallback(out_trade_no, transaction_id); if (resultUtil.getCode() == 200) { PrintWriter out = response.getWriter(); out.write("SUCCESS"); out.flush(); out.close(); } } } catch (Exception e) { e.printStackTrace(); } } /** * 兑换商品支付的支付宝回调 * * @param request * @param response */ @ResponseBody @PostMapping("/base/pointMer/exchangeGoodPaymentAliCallback") public void exchangeGoodPaymentAliCallback(HttpServletRequest request, HttpServletResponse response) { try { System.err.println("积分商品支付宝回调"); Map map = payMoneyUtil.alipayCallback(request); if (null != map) { String out_trade_no = map.get("out_trade_no"); String trade_no = map.get("trade_no"); ResultUtil resultUtil = tappService.exchangeAddPaymentCallback(out_trade_no, trade_no); if (resultUtil.getCode() == 200) { PrintWriter out = response.getWriter(); out.write("success"); out.flush(); out.close(); } } } catch (Exception e) { e.printStackTrace(); } } }