diff --git a/pom.xml b/pom.xml
index 50a9243..4e51373 100644
--- a/pom.xml
+++ b/pom.xml
@@ -32,7 +32,7 @@
6.4.11
2.11.0
3.2.2
- 4.1.2
+ 5.2.3
4.5.2
2.3
0.9.1
diff --git a/ruoyi-admin/src/main/resources/application-pay.yml b/ruoyi-admin/src/main/resources/application-pay.yml
index fb96613..b7fef48 100644
--- a/ruoyi-admin/src/main/resources/application-pay.yml
+++ b/ruoyi-admin/src/main/resources/application-pay.yml
@@ -5,4 +5,9 @@ pay:
terminalKey: "terminalKey"
appId: "appId"
vendorSn: "vendorSn"
- vendorKey: "vendorKey"
\ No newline at end of file
+ vendorKey: "vendorKey"
+ alipay:
+ appId: "appId"
+ privateKey: "privateKey"
+ publicKey: "publicKey"
+ notifyUrl: "notifyUrl"
\ No newline at end of file
diff --git a/ruoyi-pay/ruoyi-pay-alipay/pom.xml b/ruoyi-pay/ruoyi-pay-alipay/pom.xml
index df1cbdf..7929522 100644
--- a/ruoyi-pay/ruoyi-pay-alipay/pom.xml
+++ b/ruoyi-pay/ruoyi-pay-alipay/pom.xml
@@ -22,6 +22,16 @@
ruoyi-pay-common
+
+ com.alipay.sdk
+ alipay-easysdk
+ 2.2.0
+
+
+ com.alipay.sdk
+ alipay-sdk-java
+ 4.22.110.ALL
+
\ No newline at end of file
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
new file mode 100644
index 0000000..d599f3a
--- /dev/null
+++ b/ruoyi-pay/ruoyi-pay-alipay/src/main/java/com/ruoyi/pay/alipay/config/AliPayConfig.java
@@ -0,0 +1,66 @@
+package com.ruoyi.pay.alipay.config;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import com.alipay.easysdk.factory.Factory;
+import com.alipay.easysdk.kernel.Config;
+
+import jakarta.annotation.PostConstruct;
+
+@Component
+public class AliPayConfig {
+ @Value("${pay.alipay.appId}")
+ private String appId;
+ @Value("${pay.alipay.privateKey}")
+ private String privateKey;
+ @Value("${pay.alipay.publicKey}")
+ private String publicKey;
+ @Value("${pay.alipay.notifyUrl}")
+ private String notifyUrl;
+
+ @PostConstruct
+ public void init() {
+ Config config = new Config();
+ config.protocol = "https";
+ config.gatewayHost = "openapi-sandbox.dl.alipaydev.com";
+ config.signType = "RSA2";
+ config.appId = this.appId;
+ config.merchantPrivateKey = this.privateKey;
+ config.alipayPublicKey = this.publicKey;
+ config.notifyUrl = this.notifyUrl;
+ Factory.setOptions(config);
+ }
+
+ public String getAppId() {
+ return appId;
+ }
+
+ public void setAppId(String appId) {
+ this.appId = appId;
+ }
+
+ public String getPrivateKey() {
+ return privateKey;
+ }
+
+ public void setPrivateKey(String privateKey) {
+ this.privateKey = privateKey;
+ }
+
+ public String getPublicKey() {
+ return publicKey;
+ }
+
+ public void setPublicKey(String publicKey) {
+ this.publicKey = publicKey;
+ }
+
+ public String getNotifyUrl() {
+ return notifyUrl;
+ }
+
+ public void setNotifyUrl(String notifyUrl) {
+ this.notifyUrl = notifyUrl;
+ }
+}
\ No newline at end of file
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
new file mode 100644
index 0000000..1c48f82
--- /dev/null
+++ b/ruoyi-pay/ruoyi-pay-alipay/src/main/java/com/ruoyi/pay/alipay/controller/AliPayController.java
@@ -0,0 +1,84 @@
+package com.ruoyi.pay.alipay.controller;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.alipay.easysdk.factory.Factory;
+import com.alipay.easysdk.payment.page.models.AlipayTradePagePayResponse;
+import com.ruoyi.common.annotation.Anonymous;
+import com.ruoyi.pay.alipay.config.AliPayConfig;
+import com.ruoyi.pay.domain.PayOrder;
+import com.ruoyi.pay.mapper.PayOrderMapper;
+
+import jakarta.servlet.http.HttpServletRequest;
+
+@RestController
+@RequestMapping("/alipay")
+public class AliPayController {
+
+ @Autowired
+ private PayOrderMapper payOrderMapper;
+
+ @Autowired
+ private AliPayConfig aliPayConfig;
+
+ @GetMapping("/init")
+ public String init() {
+ aliPayConfig.init();
+ return "success";
+ }
+
+ @Anonymous
+ @GetMapping("/pay")
+ public String pay(PayOrder payOrder) {
+ AlipayTradePagePayResponse response;
+ try {
+ // 发起API调用(以创建当面付收款二维码为例)
+ response = Factory.Payment.Page()
+ .pay(payOrder.getOrderContent(), payOrder.getOrderNumber(), payOrder.getTotalAmount(), "");
+ } catch (Exception e) {
+ System.err.println("调用遭遇异常,原因:" + e.getMessage());
+ throw new RuntimeException(e.getMessage(), e);
+ }
+ return response.getBody();
+ }
+
+ @PostMapping("/notify") // 注意这里必须是POST接口
+ public String payNotify(HttpServletRequest request) throws Exception {
+ if (request.getParameter("trade_status").equals("TRADE_SUCCESS")) {
+ System.out.println("=========支付宝异步回调========");
+
+ Map params = new HashMap<>();
+ Map requestParams = request.getParameterMap();
+ for (String name : requestParams.keySet()) {
+ params.put(name, request.getParameter(name));
+ // System.out.println(name + " = " + request.getParameter(name));
+ }
+
+ String orderNumber = params.get("out_trade_no");
+ // 支付宝验签
+ if (Factory.Payment.Common().verifyNotify(params)) {
+ // 验签通过
+ System.out.println("交易名称: " + params.get("subject"));
+ System.out.println("交易状态: " + params.get("trade_status"));
+ System.out.println("支付宝交易凭证号: " + params.get("trade_no"));
+ System.out.println("商户订单号: " + params.get("out_trade_no"));
+ System.out.println("交易金额: " + params.get("total_amount"));
+ System.out.println("买家在支付宝唯一id: " + params.get("buyer_id"));
+ System.out.println("买家付款时间: " + params.get("gmt_payment"));
+ System.out.println("买家付款金额: " + params.get("buyer_pay_amount"));
+
+ PayOrder payOrder = payOrderMapper.selectPayOrderByOrderNumber(orderNumber);
+ payOrder.setOrderStatus("已支付");
+ payOrderMapper.updatePayOrder(payOrder);
+ }
+ }
+ return "success";
+ }
+}