guohongjin
2024-05-01 1901fceb6ddaa56a57f3131191454554c3e77e68
rest/src/main/java/cn/stylefeng/rest/ijpay/controller/WxPayController.java
@@ -107,6 +107,35 @@
         totalAmount = counsellingOrder.getPayAmount();
      }
      // 判断转换后的BigDecimal是否为0
      if (totalAmount.compareTo(BigDecimal.ZERO) == 0) {
         if (req.getOrderNo().startsWith(OrderTypeEnum.MENTAL_TEST.getCode())) {
            // 心理测试订单
            orderMentalTestService.paySuccess(req.getOrderNo(), req.getOrderNo(), String.valueOf(totalAmount), PayTypeEnum.ALIPAY.getCode());
         } else if (req.getOrderNo().startsWith(OrderTypeEnum.CONSULT_ONE.getCode())) {
            // 心理咨询1V1订单
            mentalTestOrderBizService.paySuccessOrderConsultOne(req.getOrderNo(), req.getOrderNo(), String.valueOf(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("支付成功");
      }
      // 设置支付配置
      WxPayApiConfigKit.putApiConfig(getApiConfig());
      //WxPayApiConfigKit.setThreadLocalAppId(wxPayBean.getAppId());
@@ -130,12 +159,12 @@
            .nonce_str(WxPayKit.generateStr())
            .body(req.getSubject())
            .attach(req.getSubject())
            //.out_trade_no(WxPayKit.generateStr())
            .out_trade_no(req.getOrderNo())
            .out_trade_no(WxPayKit.generateStr())
//            .out_trade_no(req.getOrderNo())
            .total_fee(totalFee)
            .spbill_create_ip(ip)
            .notify_url(notifyUrl)
            .trade_type(TradeType.APP.getTradeType())
            .trade_type(TradeType.APP.getTradeType()).attach(req.getOrderNo())
            .build()
            .createSign(wxPayApiConfig.getPartnerKey(), SignType.MD5);
      log.debug("微信APP支付请求params:{}", JSONUtil.toJsonStr(params));
@@ -176,10 +205,11 @@
      if (WxPayKit.verifyNotify(params, WxPayApiConfigKit.getWxPayApiConfig().getPartnerKey(), SignType.MD5)) {
         if (WxPayKit.codeIsOk(returnCode)) {
            // 参数文档: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_7&index=8
            String totalFee = params.get("total_fee");
            String totalFee = new BigDecimal(params.get("total_fee")).divide(BigDecimal.valueOf(100)).toString();
            String transactionId = params.get("transaction_id");
            // 获取订单号
            String orderNo = params.get("out_trade_no");
//            String orderNo = params.get("out_trade_no");
            String orderNo = params.get("attach");
            // 订单编号判断订单类型
            if (orderNo.startsWith(OrderTypeEnum.MENTAL_TEST.getCode())) {
               // 心理测试订单