diff --git a/ruoyi-admin/src/main/resources/application-pay.yml b/ruoyi-admin/src/main/resources/application-pay.yml
index 2a50b6b..6866d71 100644
--- a/ruoyi-admin/src/main/resources/application-pay.yml
+++ b/ruoyi-admin/src/main/resources/application-pay.yml
@@ -1,5 +1,6 @@
pay:
sqb:
+ enabled: false
apiDomain: "apiDomain"
terminalSn: "terminalSn"
terminalKey: "terminalKey"
@@ -7,13 +8,15 @@ pay:
vendorSn: "vendorSn"
vendorKey: "vendorKey"
alipay:
+ enabled: false
appId: appId
appPrivateKey: appPrivateKey #classpath:pay/alipay/alipay_private_key.pem
alipayPublicKey: alipayPublicKey #classpath:pay/alipay/alipay_public_key.pem
notifyUrl: http://www.sdaizy.com/prod-api/alipay/notify
wechat:
+ enabled: false
merchantId: merchantId
- privateKeyPath: privateKeyPath
+ privateKeyPath: privateKeyPath # classpath:pay/wx/apiclient_key.pem
merchantSerialNumber: merchantSerialNumber
apiV3Key: apiV3Key
appId: appId
diff --git a/ruoyi-pay/ruoyi-pay-alipay/src/main/java/com/ruoyi/pay/alipay/config/AliPayConfig.java b/ruoyi-pay/ruoyi-pay-alipay/src/main/java/com/ruoyi/pay/alipay/config/AliPayConfig.java
index f8c30b3..32a10a4 100644
--- a/ruoyi-pay/ruoyi-pay-alipay/src/main/java/com/ruoyi/pay/alipay/config/AliPayConfig.java
+++ b/ruoyi-pay/ruoyi-pay-alipay/src/main/java/com/ruoyi/pay/alipay/config/AliPayConfig.java
@@ -7,6 +7,7 @@ import java.util.stream.Collectors;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -18,6 +19,7 @@ import com.alipay.easysdk.kernel.Config;
* @author zlh
*/
@Configuration
+@ConditionalOnProperty(prefix = "pay.alipay", name = "enabled", havingValue = "true")
public class AliPayConfig {
@Value("${pay.alipay.appId}")
private String appId;
diff --git a/ruoyi-pay/ruoyi-pay-alipay/src/main/java/com/ruoyi/pay/alipay/controller/AliPayController.java b/ruoyi-pay/ruoyi-pay-alipay/src/main/java/com/ruoyi/pay/alipay/controller/AliPayController.java
index e28a00d..3371fad 100644
--- a/ruoyi-pay/ruoyi-pay-alipay/src/main/java/com/ruoyi/pay/alipay/controller/AliPayController.java
+++ b/ruoyi-pay/ruoyi-pay-alipay/src/main/java/com/ruoyi/pay/alipay/controller/AliPayController.java
@@ -4,6 +4,7 @@ import java.util.HashMap;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
@@ -22,11 +23,13 @@ import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletRequest;
+
/**
* @author zlh
*/
@RestController
@RequestMapping("/alipay")
+@ConditionalOnProperty(prefix = "pay.alipay", name = "enabled", havingValue = "true")
@Tag(name = "【支付宝】管理")
public class AliPayController {
@@ -44,8 +47,11 @@ public class AliPayController {
PayOrder aliPay = payOrderService.selectPayOrderByOrderNumber(orderNumber);
try {
// 发起API调用(以创建当面付收款二维码为例)
- response = Factory.Payment.Page()
- .pay(aliPay.getOrderContent(), aliPay.getOrderNumber(), aliPay.getTotalAmount(), "");
+ response = Factory.Payment.Page().pay(
+ aliPay.getOrderContent(),
+ aliPay.getOrderNumber(),
+ aliPay.getActualAmount(),
+ "");
} catch (Exception e) {
System.err.println("调用遭遇异常,原因:" + e.getMessage());
throw new RuntimeException(e.getMessage(), e);
diff --git a/ruoyi-pay/ruoyi-pay-common/src/main/java/com/ruoyi/pay/domain/PayOrder.java b/ruoyi-pay/ruoyi-pay-common/src/main/java/com/ruoyi/pay/domain/PayOrder.java
index 01e847d..585d876 100644
--- a/ruoyi-pay/ruoyi-pay-common/src/main/java/com/ruoyi/pay/domain/PayOrder.java
+++ b/ruoyi-pay/ruoyi-pay-common/src/main/java/com/ruoyi/pay/domain/PayOrder.java
@@ -42,6 +42,11 @@ public class PayOrder extends BaseEntity {
@Excel(name = "订单总金额")
private String totalAmount;
+ /** 订单总金额 */
+ @Schema(title = "实际支付金额")
+ @Excel(name = "实际支付金额")
+ private String actualAmount;
+
/** 订单内容 */
@Schema(title = "订单内容")
@Excel(name = "订单内容")
@@ -97,6 +102,14 @@ public class PayOrder extends BaseEntity {
return totalAmount;
}
+ public String getActualAmount() {
+ return actualAmount;
+ }
+
+ public void setActualAmount(String actualAmount) {
+ this.actualAmount = actualAmount;
+ }
+
public void setOrderContent(String orderContent) {
this.orderContent = orderContent;
}
@@ -129,6 +142,7 @@ public class PayOrder extends BaseEntity {
.append("orderNumber", getOrderNumber())
.append("orderStatus", getOrderStatus())
.append("totalAmount", getTotalAmount())
+ .append("actualAmount", getActualAmount())
.append("orderContent", getOrderContent())
.append("orderRemark", getOrderRemark())
.append("orderMessage", getOrderMessage())
diff --git a/ruoyi-pay/ruoyi-pay-common/src/main/resources/mapper/pay/PayOrderMapper.xml b/ruoyi-pay/ruoyi-pay-common/src/main/resources/mapper/pay/PayOrderMapper.xml
index a43062c..2c14d94 100644
--- a/ruoyi-pay/ruoyi-pay-common/src/main/resources/mapper/pay/PayOrderMapper.xml
+++ b/ruoyi-pay/ruoyi-pay-common/src/main/resources/mapper/pay/PayOrderMapper.xml
@@ -8,6 +8,7 @@
+
@@ -23,12 +24,10 @@
and order_number = #{orderNumber}
and order_status = #{orderStatus}
and total_amount = #{totalAmount}
- and order_content =
- #{orderContent}
- and order_remark
- = #{orderRemark}
- and
- order_message = #{orderMessage}
+ and actual_amount = #{actualAmount}
+ and order_content = #{orderContent}
+ and order_remark = #{orderRemark}
+ and order_message = #{orderMessage}
@@ -47,9 +46,9 @@
order_id,
user_id,
order_number,
-
- order_status,
+ order_status,
total_amount,
+ actual_amount,
order_content,
order_remark,
@@ -59,12 +58,11 @@
#{orderId},
#{userId},
#{orderNumber},
-
- #{orderStatus},
+ #{orderStatus},
#{totalAmount},
+ #{actualAmount},
#{orderContent},
-
- #{orderRemark},
+ #{orderRemark},
#{orderMessage},
@@ -72,10 +70,10 @@
update pay_order
user_id = #{userId},
- order_number
- = #{orderNumber},
+ order_number = #{orderNumber},
order_status = #{orderStatus},
total_amount = #{totalAmount},
+ actual_amount = #{actualAmount},
order_content = #{orderContent},
order_remark = #{orderRemark},
order_message = #{orderMessage},
@@ -91,13 +89,13 @@
- delete from pay_order where order_id in
+ delete from pay_order where order_id in
- #{orderId}
+ #{orderId}
- update pay_order set order_status = #{orderStatus} where order_number = #{orderNumber}
+ update pay_order set order_status = #{orderStatus} where order_number = #{orderNumber}
\ No newline at end of file
diff --git a/ruoyi-pay/ruoyi-pay-sqb/src/main/java/com/ruoyi/pay/sqb/constant/SqbConstant.java b/ruoyi-pay/ruoyi-pay-sqb/src/main/java/com/ruoyi/pay/sqb/config/SqbConfig.java
similarity index 86%
rename from ruoyi-pay/ruoyi-pay-sqb/src/main/java/com/ruoyi/pay/sqb/constant/SqbConstant.java
rename to ruoyi-pay/ruoyi-pay-sqb/src/main/java/com/ruoyi/pay/sqb/config/SqbConfig.java
index f119464..5805981 100644
--- a/ruoyi-pay/ruoyi-pay-sqb/src/main/java/com/ruoyi/pay/sqb/constant/SqbConstant.java
+++ b/ruoyi-pay/ruoyi-pay-sqb/src/main/java/com/ruoyi/pay/sqb/config/SqbConfig.java
@@ -1,10 +1,12 @@
-package com.ruoyi.pay.sqb.constant;
+package com.ruoyi.pay.sqb.config;
import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Component;
@Component
-public class SqbConstant {
+@ConditionalOnProperty(prefix = "pay.sqb", name = "enabled", havingValue = "true")
+public class SqbConfig {
@Value("${pay.sqb.apiDomain}")
private String apiDomain;
diff --git a/ruoyi-pay/ruoyi-pay-sqb/src/main/java/com/ruoyi/pay/sqb/controller/SQBController.java b/ruoyi-pay/ruoyi-pay-sqb/src/main/java/com/ruoyi/pay/sqb/controller/SQBController.java
index cda15e3..275cfd3 100644
--- a/ruoyi-pay/ruoyi-pay-sqb/src/main/java/com/ruoyi/pay/sqb/controller/SQBController.java
+++ b/ruoyi-pay/ruoyi-pay-sqb/src/main/java/com/ruoyi/pay/sqb/controller/SQBController.java
@@ -1,6 +1,7 @@
package com.ruoyi.pay.sqb.controller;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -24,6 +25,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
@Tag(name = "sqb支付")
@RestController
@RequestMapping("/pay/sql")
+@ConditionalOnProperty(prefix = "pay.sqb", name = "enabled", havingValue = "true")
public class SQBController extends BaseController {
@Autowired
private SQBServiceImpl sqbServiceImpl;
diff --git a/ruoyi-pay/ruoyi-pay-sqb/src/main/java/com/ruoyi/pay/sqb/service/Impl/SQBServiceImpl.java b/ruoyi-pay/ruoyi-pay-sqb/src/main/java/com/ruoyi/pay/sqb/service/Impl/SQBServiceImpl.java
index c704984..e9fb5ae 100644
--- a/ruoyi-pay/ruoyi-pay-sqb/src/main/java/com/ruoyi/pay/sqb/service/Impl/SQBServiceImpl.java
+++ b/ruoyi-pay/ruoyi-pay-sqb/src/main/java/com/ruoyi/pay/sqb/service/Impl/SQBServiceImpl.java
@@ -4,6 +4,7 @@ import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Service;
import com.alibaba.fastjson2.JSON;
@@ -11,13 +12,14 @@ import com.alibaba.fastjson2.JSONObject;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.sign.Md5Utils;
import com.ruoyi.pay.domain.PayOrder;
-import com.ruoyi.pay.sqb.constant.SqbConstant;
+import com.ruoyi.pay.sqb.config.SqbConfig;
import com.ruoyi.pay.sqb.utils.HttpUtil;
@Service
+@ConditionalOnProperty(prefix = "pay.sqb", name = "enabled", havingValue = "true")
public class SQBServiceImpl {
@Autowired
- private SqbConstant sqbConstant;
+ private SqbConfig sqbConstant;
/**
* 计算字符串的MD5值
@@ -107,7 +109,7 @@ public class SQBServiceImpl {
try {
params.put("terminal_sn", sqbConstant.getTerminalSn()); // 收钱吧终端ID
params.put("client_sn", payOrder.getOrderNumber()); // 商户系统订单号,必须在商户系统内唯一;且长度不超过64字节
- params.put("refund_amount", payOrder.getTotalAmount()); // 退款金额
+ params.put("refund_amount", payOrder.getActualAmount()); // 退款金额
params.put("refund_request_no", "1"); // 商户退款所需序列号,表明是第几次退款
params.put("operator", "kay"); // 门店操作员
@@ -156,14 +158,14 @@ public class SQBServiceImpl {
"&return_url=" + "https://www.shouqianba.com/" +
"&subject=" + payOrder.getRemark() +
"&terminal_sn=" + sqbConstant.getTerminalSn() +
- "&total_amount=" + payOrder.getTotalAmount();
+ "&total_amount=" + payOrder.getActualAmount();
String urlParam = "" +
"client_sn=" + payOrder.getOrderNumber() +
"&operator=" + URLEncoder.encode("admin", "UTF-8") +
"&return_url=" + "https://www.shouqianba.com/" +
"&subject=" + URLEncoder.encode(payOrder.getRemark(), "UTF-8") +
"&terminal_sn=" + sqbConstant.getTerminalSn() +
- "&total_amount=" + payOrder.getTotalAmount();
+ "&total_amount=" + payOrder.getActualAmount();
String sign = getSign(param + "&key=" + sqbConstant.getTerminalKey());
return "https://qr.shouqianba.com/gateway?" + urlParam + "&sign=" + sign.toUpperCase();
}
@@ -179,7 +181,7 @@ public class SQBServiceImpl {
try {
params.put("terminal_sn", sqbConstant.getTerminalSn()); // 收钱吧终端ID
params.put("client_sn", payOrder.getOrderNumber()); // 商户系统订单号,必须在商户系统内唯一;且长度不超过32字节
- params.put("total_amount", payOrder.getTotalAmount()); // 交易总金额
+ params.put("total_amount", payOrder.getActualAmount()); // 交易总金额
// params.put("payway", payway); // 支付方式
params.put("subject", "无简介"); // 交易简介
params.put("operator", SecurityUtils.getUsername()); // 门店操作员
diff --git a/ruoyi-pay/ruoyi-pay-wx/src/main/java/com/ruoyi/pay/wx/config/WxPayAppConfig.java b/ruoyi-pay/ruoyi-pay-wx/src/main/java/com/ruoyi/pay/wx/config/WxPayConfig.java
similarity index 94%
rename from ruoyi-pay/ruoyi-pay-wx/src/main/java/com/ruoyi/pay/wx/config/WxPayAppConfig.java
rename to ruoyi-pay/ruoyi-pay-wx/src/main/java/com/ruoyi/pay/wx/config/WxPayConfig.java
index fd19973..a7b7d74 100644
--- a/ruoyi-pay/ruoyi-pay-wx/src/main/java/com/ruoyi/pay/wx/config/WxPayAppConfig.java
+++ b/ruoyi-pay/ruoyi-pay-wx/src/main/java/com/ruoyi/pay/wx/config/WxPayConfig.java
@@ -7,7 +7,7 @@ import java.nio.file.StandardCopyOption;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -23,8 +23,8 @@ import com.wechat.pay.java.service.payments.nativepay.NativePayService;
* @author ZlH
*/
@Configuration
-@ConfigurationProperties(prefix = "wechat")
-public class WxPayAppConfig {
+@ConditionalOnProperty(prefix = "pay.wechat", name = "enabled", havingValue = "true")
+public class WxPayConfig {
@Value("${pay.wechat.merchantId}")
private String wxchantId;
diff --git a/ruoyi-pay/ruoyi-pay-wx/src/main/java/com/ruoyi/pay/wx/controller/WxAppPayController.java b/ruoyi-pay/ruoyi-pay-wx/src/main/java/com/ruoyi/pay/wx/controller/WxPayController.java
similarity index 92%
rename from ruoyi-pay/ruoyi-pay-wx/src/main/java/com/ruoyi/pay/wx/controller/WxAppPayController.java
rename to ruoyi-pay/ruoyi-pay-wx/src/main/java/com/ruoyi/pay/wx/controller/WxPayController.java
index cc66df0..1660501 100644
--- a/ruoyi-pay/ruoyi-pay-wx/src/main/java/com/ruoyi/pay/wx/controller/WxAppPayController.java
+++ b/ruoyi-pay/ruoyi-pay-wx/src/main/java/com/ruoyi/pay/wx/controller/WxPayController.java
@@ -4,6 +4,7 @@ import java.io.IOException;
import java.nio.charset.StandardCharsets;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.util.StreamUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
@@ -16,7 +17,7 @@ import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.pay.domain.PayOrder;
import com.ruoyi.pay.service.IPayOrderService;
-import com.ruoyi.pay.wx.config.WxPayAppConfig;
+import com.ruoyi.pay.wx.config.WxPayConfig;
import com.wechat.pay.java.core.exception.ValidationException;
import com.wechat.pay.java.core.notification.NotificationParser;
import com.wechat.pay.java.core.notification.RequestParam;
@@ -38,10 +39,11 @@ import lombok.extern.slf4j.Slf4j;
*/
@Slf4j
@RestController
+@ConditionalOnProperty(prefix = "pay.wechat", name = "enabled", havingValue = "true")
@RequestMapping("/wxPay")
-public class WxAppPayController extends BaseController {
+public class WxPayController extends BaseController {
@Autowired
- private WxPayAppConfig wxPayAppConfig;
+ private WxPayConfig wxPayAppConfig;
@Autowired
private IPayOrderService payOrderService;
@@ -57,7 +59,7 @@ public class WxAppPayController extends BaseController {
@GetMapping("/pay/{orderNumber}")
public AjaxResult pay(@PathVariable String orderNumber) throws Exception {
PayOrder aliPay = payOrderService.selectPayOrderByOrderNumber(orderNumber);
- String amountStr = aliPay.getTotalAmount();
+ String amountStr = aliPay.getActualAmount();
double amountDouble = Double.parseDouble(amountStr);
int totalAmountInt = (int) (amountDouble * 100);
PrepayRequest request = new PrepayRequest();
diff --git a/sql/pay.sql b/sql/pay.sql
index 7b30ae0..62aab66 100644
--- a/sql/pay.sql
+++ b/sql/pay.sql
@@ -8,6 +8,7 @@ CREATE TABLE `pay_order` (
`order_number` varchar(255) NULL DEFAULT NULL COMMENT '订单号',
`order_status` varchar(255) NULL DEFAULT NULL COMMENT '订单状态',
`total_amount` varchar(255) NULL DEFAULT NULL COMMENT '订单总金额',
+ `actual_amount` varchar(255) NULL DEFAULT NULL COMMENT '实际支付金额',
`order_content` varchar(255) NULL DEFAULT NULL COMMENT '订单内容',
`order_remark` varchar(255) NULL DEFAULT NULL COMMENT '订单备注',
`order_message` varchar(255) NULL DEFAULT NULL COMMENT '负载信息',