From 1901fceb6ddaa56a57f3131191454554c3e77e68 Mon Sep 17 00:00:00 2001 From: guohongjin <guohongjin@test.com> Date: 星期三, 01 五月 2024 13:56:51 +0800 Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/PsychologicalCounseling --- rest/src/main/java/cn/stylefeng/rest/ijpay/controller/AliPayController.java | 97 +++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 95 insertions(+), 2 deletions(-) diff --git a/rest/src/main/java/cn/stylefeng/rest/ijpay/controller/AliPayController.java b/rest/src/main/java/cn/stylefeng/rest/ijpay/controller/AliPayController.java index 7f0631d..2115487 100644 --- a/rest/src/main/java/cn/stylefeng/rest/ijpay/controller/AliPayController.java +++ b/rest/src/main/java/cn/stylefeng/rest/ijpay/controller/AliPayController.java @@ -44,6 +44,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.math.BigDecimal; import java.util.Date; import java.util.HashMap; import java.util.Map; @@ -103,7 +104,37 @@ totalAmount = counsellingOrder.getPayAmount().toString(); } - try { + // 判断支付金额是否为0 + BigDecimal amount = new BigDecimal(totalAmount); + // 判断转换后的BigDecimal是否为0 + if (amount.compareTo(BigDecimal.ZERO) == 0) { + if (req.getOrderNo().startsWith(OrderTypeEnum.MENTAL_TEST.getCode())) { + // 心理测试订单 + orderMentalTestService.paySuccess(req.getOrderNo(), req.getOrderNo(), totalAmount, PayTypeEnum.ALIPAY.getCode()); + } else if (req.getOrderNo().startsWith(OrderTypeEnum.CONSULT_ONE.getCode())) { + // 心理咨询1V1订单 + mentalTestOrderBizService.paySuccessOrderConsultOne(req.getOrderNo(), req.getOrderNo(), totalAmount, PayTypeEnum.ALIPAY.getCode()); + } else if (req.getOrderNo().startsWith(OrderTypeEnum.COURSE_ORDER.getCode())) { + //课程订单 + OrderPayRequest orderPayRequest = new OrderPayRequest(); + orderPayRequest.setOrderNo(req.getOrderNo()); + orderPayRequest.setTransactionNo(req.getOrderNo()); + orderPayRequest.setPayType("2"); + orderPayRequest.setOrderType(1); + courseOrderService.payCourseOrder(orderPayRequest); + } else if (req.getOrderNo().startsWith(OrderTypeEnum.COUNSELLING_ORDER.getCode())) { + //咨询订单 + OrderPayRequest orderPayRequest = new OrderPayRequest(); + orderPayRequest.setOrderNo(req.getOrderNo()); + orderPayRequest.setTransactionNo(req.getOrderNo()); + orderPayRequest.setPayType("2"); + orderPayRequest.setOrderType(2); + counsellingOrderService.payCounsellingOrder(orderPayRequest); + } + return new SuccessResponseData("支付成功"); + } + + try { // 设置支付配置 AliPayApiConfigKit.putApiConfig(getApiConfig()); //AliPayApiConfigKit.setThreadLocalAppId(aliPayBean.getAppId()); @@ -126,6 +157,68 @@ e.printStackTrace(); log.error("支付宝APP支付异常!", e.getMessage()); return new ErrorResponseData("500", e.getMessage()); + } + } + + + + @PostMapping(value = RuleConstants.NOT_LOGIN + "/freePay") + @ResponseBody + public String freePay(HttpServletRequest request) { + try { + log.info("支付宝异步通知"); + + // 获取支付宝POST过来反馈信息 + Map<String, String> params = AliPayApi.toMap(request); + for (Map.Entry<String, String> entry : params.entrySet()) { + log.info(entry.getKey() + " = " + entry.getValue()); + } + if (params.get("out_biz_no") != null){ + log.info(params.get("out_biz_no").toString()+",退费成功!"); + return "success"; + } + boolean verifyResult = AlipaySignature.rsaCheckV1(params, aliPayBean.getPublicKey(), "UTF-8", "RSA2"); + + if (verifyResult) { + // 参数文档:https://opendocs.alipay.com/open/204/105301?pathHash=fef00e6d + String tradeNo = params.get("trade_no"); + String totalAmount = params.get("total_amount"); + // 获取订单号 + String orderNo = params.get("out_trade_no"); + // 订单编号判断订单类型 + if (orderNo.startsWith(OrderTypeEnum.MENTAL_TEST.getCode())) { + // 心理测试订单 + orderMentalTestService.paySuccess(orderNo, tradeNo, totalAmount, PayTypeEnum.ALIPAY.getCode()); + } else if (orderNo.startsWith(OrderTypeEnum.CONSULT_ONE.getCode())) { + // 心理咨询1V1订单 + mentalTestOrderBizService.paySuccessOrderConsultOne(orderNo, tradeNo, totalAmount, PayTypeEnum.ALIPAY.getCode()); + } else if (orderNo.startsWith(OrderTypeEnum.COURSE_ORDER.getCode())) { + //课程订单 + OrderPayRequest orderPayRequest = new OrderPayRequest(); + orderPayRequest.setOrderNo(orderNo); + orderPayRequest.setTransactionNo(tradeNo); + orderPayRequest.setPayType("2"); + orderPayRequest.setOrderType(1); + courseOrderService.payCourseOrder(orderPayRequest); + } else if (orderNo.startsWith(OrderTypeEnum.COUNSELLING_ORDER.getCode())) { + //咨询订单 + OrderPayRequest orderPayRequest = new OrderPayRequest(); + orderPayRequest.setOrderNo(orderNo); + orderPayRequest.setTransactionNo(tradeNo); + orderPayRequest.setPayType("2"); + orderPayRequest.setOrderType(2); + counsellingOrderService.payCounsellingOrder(orderPayRequest); + } + + log.info("notify_url 验证成功succcess"); + return "success"; + } else { + log.error("notify_url 验证失败"); + return "failure"; + } + } catch (AlipayApiException e) { + e.printStackTrace(); + return "failure"; } } @@ -511,7 +604,7 @@ * 退款 */ @ApiOperation("支付宝退款") - @RequestMapping(value = RuleConstants.NOT_LOGIN + "/tradeRefund") + @RequestMapping(value = RuleConstants.NOT_LOGIN + "/tradeRefund", method = {RequestMethod.POST, RequestMethod.GET}) @ResponseBody public Boolean tradeRefund(@RequestParam(required = false, name = "outTradeNo") String outTradeNo, @RequestParam(required = false, name = "tradeNo") String tradeNo) { log.info("支付宝-退款信息-outTradeNo:"+outTradeNo+", tradeNo:"+tradeNo); -- Gitblit v1.7.1