| | |
| | | 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; |
| | |
| | | totalAmount = counsellingOrder.getPayAmount().toString(); |
| | | } |
| | | |
| | | // 判断支付金额是否为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()); |
| | |
| | | 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"; |
| | | } |
| | | } |
| | | |
| | |
| | | * 退款 |
| | | */ |
| | | @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); |