Spring Boot 集成支付寶支付,看這篇就夠了
隨著移動支付的普及,支付寶作為國內領先的第三方支付平臺,被廣泛應用于各類線上線下場景。本文將詳細介紹如何在 Spring Boot 項目中整合支付寶,實現支付功能。

一、準備工作
- 注冊支付寶開放平臺賬號 :訪問 支付寶開放平臺 官網,注冊一個開發者賬號。
- 創建應用 :登錄后,在控制臺創建一個新的應用,選擇對應的行業類目,并提交審核。
- 配置應用信息 :審核通過后,進入應用詳情頁面,配置應用的基本信息,包括應用名稱、應用域名等。
- 獲取應用憑證 :在應用詳情頁面,可以獲取到 AppId、PrivateKey 和 PublicKey,這些信息將在后續的支付流程中使用。
二、引入依賴
在 Spring Boot 項目的 pom.xml 文件中,引入支付寶 SDK 依賴:
<properties>
<java.version>21</java.version>
<alipay.easysdk.version>2.2.3</alipay.easysdk.version>
</properties>
<dependencies>
<!--支付寶支付easysdk-->
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-easysdk</artifactId>
<version>${alipay.easysdk.version}</version>
</dependency>
<!--web起步依賴-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!--單元測試-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>三、配置文件
在 Spring Boot 項目的 application.yml 文件中,添加支付寶相關配置:
alipay:
app-id: "your_app_id" # 替換為你的 AppId
private-key: "your_private_key" # 替換為你的 PrivateKey
public-key: "your_alipay_public_key" # 替換為你的 PublicKey
notify-url: "https://yourdomain.com/pay/callback" # 替換為你的異步通知地址
return-url: "https://yourdomain.com/pay/success" # 替換為你的同步跳轉地址
gateway-url: "https://openapi.alipay.com/gateway.do" # 支付寶網關地址四、創建配置類
創建一個 AlipayConfig 類,用于集中管理支付寶相關配置:
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Data
@Component
@ConfigurationProperties(prefix = "alipay")
public class AlipayConfig {
private String appId;
private String privateKey;
private String publicKey;
private String notifyUrl;
private String returnUrl;
private String gatewayUrl;
}五、支付接口開發
創建一個 PayController 控制器,用于處理支付請求:
import com.alipay.easysdk.factory.Factory;
import com.alipay.easysdk.payment.page.models.AlipayTradePagePayResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/pay")
public class PayController {
@Autowired
private AlipayConfig alipayConfig;
@GetMapping("/create")
public String createPayment(@RequestParam String orderId, @RequestParam Double amount) {
try {
Factory.setOptions(Factory.createOptions()
.setAppId(alipayConfig.getAppId())
.setPrivateKey(alipayConfig.getPrivateKey())
.setAlipayPublicKey(alipayConfig.getPublicKey())
.setNotifyUrl(alipayConfig.getNotifyUrl())
.setReturnUrl(alipayConfig.getReturnUrl()));
AlipayTradePagePayResponse response = Factory.Payment.Page().pay(
"商品標題", // 商品標題
orderId, // 商戶訂單號
String.valueOf(amount), // 金額
alipayConfig.getReturnUrl()
);
return response.getBody(); // 返回支付頁面
} catch (Exception e) {
throw new RuntimeException("支付接口調用失敗", e);
}
}
}六、異步通知處理
創建一個 AlipayCallbackController 控制器,用于處理支付寶的異步通知:
import com.alipay.easysdk.factory.Factory;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;
@RestController
public class AlipayCallbackController {
@PostMapping("/callback")
public String handleCallback(HttpServletRequest request) {
Map<String, String> params = new HashMap<>();
request.getParameterMap().forEach((key, values) -> params.put(key, values[0]));
try {
boolean verified = Factory.Payment.Common().verifyNotify(params);
if (verified) {
// 處理訂單邏輯
String orderId = params.get("out_trade_no");
String tradeStatus = params.get("trade_status");
if ("TRADE_SUCCESS".equals(tradeStatus)) {
// 更新訂單狀態為已支付
}
return "success";
} else {
return "failure";
}
} catch (Exception e) {
return "failure";
}
}
}七、同步跳轉處理
在 AlipayCallbackController 中添加一個方法,用于處理同步跳轉:
@GetMapping("/success")
public String handleReturn() {
return "支付成功";
}八、測試支付功能
- 啟動 Spring Boot 項目。
- 訪問 http://localhost:8080/pay/create?orderId=123456&amount=100,跳轉到支付寶支付頁面。
- 完成支付后,支付寶會跳轉到同步跳轉地址 http://localhost:8080/pay/success,并發送異步通知到 http://localhost:8080/pay/callback。
通過以上步驟,就可以在 Spring Boot 項目中整合支付寶,實現支付功能。



























