| | |
| | | |
| | | import cn.hutool.core.net.NetUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.hutool.json.JSONUtil; |
| | | import cn.stylefeng.guns.modular.business.dto.request.OrderPayRequest; |
| | | import cn.stylefeng.guns.modular.business.entity.CounsellingOrder; |
| | | import cn.stylefeng.guns.modular.business.entity.CourseOrder; |
| | |
| | | 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 |
| | |
| | | @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(); |
| | | } |
| | | |
| | | // 设置支付配置 |
| | |
| | | // 获取微信支付配置 |
| | | WxPayApiConfig wxPayApiConfig = WxPayApiConfigKit.getWxPayApiConfig(); |
| | | |
| | | // 支付金额X100求整 |
| | | String totalFee = totalAmount.multiply(BigDecimal.valueOf(100)) |
| | | .setScale(0, RoundingMode.HALF_UP) |
| | | .toPlainString(); |
| | | // 组装支付参数 |
| | | Map<String, String> params = UnifiedOrderModel |
| | | .builder() |
| | |
| | | .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()) |
| | | .build() |
| | | .createSign(wxPayApiConfig.getPartnerKey(), SignType.HMACSHA256); |
| | | |
| | | log.info("微信APP支付请求params:{}", JSONUtil.toJsonStr(params)); |
| | | String xmlResult = WxPayApi.pushOrder(false, params); |
| | | log.info("微信APP支付结果xml:{}", xmlResult); |
| | | |