From 6f41132aab921276f96c3247df0936b238bbd1d8 Mon Sep 17 00:00:00 2001
From: guohongjin <guohongjin@test.com>
Date: 星期三, 24 四月 2024 19:29:32 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/PsychologicalCounseling

---
 rest/src/main/java/cn/stylefeng/rest/ijpay/controller/WxPayController.java |   21 ++++++++++++++-------
 1 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/rest/src/main/java/cn/stylefeng/rest/ijpay/controller/WxPayController.java b/rest/src/main/java/cn/stylefeng/rest/ijpay/controller/WxPayController.java
index 9b6c80c..b93effb 100644
--- a/rest/src/main/java/cn/stylefeng/rest/ijpay/controller/WxPayController.java
+++ b/rest/src/main/java/cn/stylefeng/rest/ijpay/controller/WxPayController.java
@@ -2,6 +2,7 @@
 
 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;
@@ -47,6 +48,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 +88,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 +118,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,13 +132,13 @@
 				.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);
 

--
Gitblit v1.7.1