goupan
2024-04-24 bd9890d6d7723be770510f43f34b85e60b7b91ca
rest/src/main/java/cn/stylefeng/rest/ijpay/controller/WxPayController.java
@@ -47,6 +47,8 @@
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
@Slf4j
@@ -85,23 +87,23 @@
   @ResponseBody
   public ResponseData appPay(@RequestBody @Validated WxAppPayRequest req) {
      // 支付金额
      String totalAmount = "";
      BigDecimal totalAmount = BigDecimal.valueOf(0);
      // 订单编号判断订单类型
      if (req.getOrderNo().contains(OrderTypeEnum.MENTAL_TEST.getCode())) {
         // 心理测试订单
         OrderMentalTest order = orderMentalTestService.getOrderByNo(req.getOrderNo());
         totalAmount = order.getPayAmount().toString();
         totalAmount = order.getPayAmount();
      } else if (req.getOrderNo().contains(OrderTypeEnum.CONSULT_ONE.getCode())) {
         // 心理咨询1V1订单
         OrderConsultOne order = orderConsultOneService.getOrderByNo(req.getOrderNo());
         totalAmount = order.getPayAmount().toString();
         totalAmount = order.getPayAmount();
      }else if (req.getOrderNo().startsWith(OrderTypeEnum.COURSE_ORDER.getCode())){
         CourseOrder courseOrder = this.courseOrderService.getCourseOrderByNo(req.getOrderNo());
         totalAmount = courseOrder.getPayAmount().toString();
         totalAmount = courseOrder.getPayAmount();
      } else if (req.getOrderNo().startsWith(OrderTypeEnum.COUNSELLING_ORDER.getCode())) {
         CounsellingOrder counsellingOrder = this.counsellingOrderService.getCounsellingOrderByNo(req.getOrderNo());
         totalAmount = counsellingOrder.getPayAmount().toString();
         totalAmount = counsellingOrder.getPayAmount();
      }
      // 设置支付配置
@@ -115,6 +117,10 @@
      // 获取微信支付配置
      WxPayApiConfig wxPayApiConfig = WxPayApiConfigKit.getWxPayApiConfig();
      // 支付金额X100求整
      String totalFee = totalAmount.multiply(BigDecimal.valueOf(100))
            .setScale(0, RoundingMode.HALF_UP)
            .toPlainString();
      // 组装支付参数
      Map<String, String> params = UnifiedOrderModel
            .builder()
@@ -125,7 +131,7 @@
            .attach(req.getSubject())
            //.out_trade_no(WxPayKit.generateStr())
            .out_trade_no(req.getOrderNo())
            .total_fee(totalAmount)
            .total_fee(totalFee)
            .spbill_create_ip(ip)
            .notify_url(notifyUrl)
            .trade_type(TradeType.APP.getTradeType())