From b4cb8e8c7553542869351ff90cba5da9090c93bf Mon Sep 17 00:00:00 2001 From: luodangjia <luodangjia> Date: 星期日, 28 四月 2024 11:21:41 +0800 Subject: [PATCH] 免费 --- rest/src/main/java/cn/stylefeng/rest/ijpay/controller/AliPayController.java | 95 +++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 94 insertions(+), 1 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 c43ffe4..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()); @@ -129,6 +160,68 @@ } } + + + @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"; + } + } + @RequestMapping(value = RuleConstants.NOT_LOGIN + "/notify_url", method = {RequestMethod.POST, RequestMethod.GET}) @ResponseBody public String notifyUrl(HttpServletRequest request) { -- Gitblit v1.7.1