我在《金融支付架构实战指南》一书主要讲解的是理论和实现。未涉及到AI结合部分。本文结合AI来做支付实践,给支付带来新的想象力。
Spring AI 真正强大的地方: 同时支持 N 个本地 @Tool + N 个远程 MCP Server,AI 自动路由、自动串行 / 并行调用。
你可以实现:
-
一句话:支付宝付款 50 → 调用支付宝 MCP
-
一句话:查微信订单 → 调用微信 MCP
-
一句话:先支付宝支付,再查订单,再开发票 → AI 自动调用 3 个 MCP/Tool
本文提供完整可运行工程:
-
本地多 @Tool(支付、查单、退款)
-
多个独立 MCP Server(支付宝 MCP、微信 MCP、订单 MCP)
-
Spring AI 客户端自动发现 + 自动调用
-
全套代码,无删减、可直接启动
一、整体架构(最清晰)
用户对话
↓
Spring AI ChatClient(自动调度)
↓ ↓
本地@Tool 远程 MCP Server(独立微服务)
支付/查单 支付宝MCP | 微信MCP | 订单MCP
二、场景 1:本地多 @Tool(最常用)
1. 工具类(支付 + 查询 + 退款)
@Component
@RequiredArgsConstructor
public class PaymentTools {
private final AlipayUtil alipayUtil;
// 工具1:支付
@Tool(description = "用户需要支付、下单、购买时调用,传入商品名和金额")
public String pay(
@ToolParam(description = "商品名称") String subject,
@ToolParam(description = "金额元") String totalAmount) {
String orderNo = "LOCAL_" + UUID.randomUUID().toString().replace("-", "");
return alipayUtil.createPagePay(orderNo, subject, totalAmount);
}
// 工具2:查订单
@Tool(description = "查询订单支付状态,传入订单号")
public String queryOrder(String orderNo) {
return "订单:" + orderNo + " → 状态:已支付";
}
// 工具3:退款
@Tool(description = "对订单发起退款,传入订单号和退款金额")
public String refund(String orderNo, String refundAmount) {
return "订单:" + orderNo + " → 退款:" + refundAmount + "元 处理中";
}
}
2. 控制器(一次性绑定所有工具)
@RestController
@RequiredArgsConstructor
public class AiController {
private final ChatClient chatClient;
private final PaymentTools paymentTools;
@GetMapping("/ai/chat")
public String chat(@RequestParam String msg) {
return chatClient.prompt()
.user(msg)
.tools(paymentTools) // 自动加载类里所有@Tool
.call()
.content();
}
}
3. 测试(AI 自动识别)
-
帮我付30元开通会员→ 调用 pay () -
查询订单LOCAL_XXX→ 调用 queryOrder () -
把订单XXX退15元→ 调用 refund () -
先付20再查订单→ AI 自动连续调用两个工具
三、场景 2:多 MCP Server(企业级微服务)
重点:
MCP = 把工具独立部署为远程服务,Spring AI 自动调用。
你可以启动 3 个独立 MCP 服务:
-
AlipayMCPServer(8091)
-
WechatMCPServer(8092)
-
OrderMCPServer(8093)
Spring AI 客户端会自动发现所有工具。
第一步:给 AI 客户端添加 MCP 依赖
<!-- MCP 客户端 -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-mcp-client-spring-boot-starter</artifactId>
</dependency>
第二步:application.yml 配置多个 MCP
spring:
ai:
mcp:
client:
servers:
# 支付宝 MCP
alipay:
url: http://127.0.0.1:8091/mcp
# 微信支付 MCP
wechat:
url: http://127.0.0.1:8092/mcp
# 订单查询 MCP
order:
url: http://127.0.0.1:8093/mcp
三、真正可运行:MCP Server 完整代码(补全缺失!)
1)支付宝 MCP Server(独立项目)
pom.xml
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-mcp-server-spring-boot-starter</artifactId>
</dependency>
application.yml
server:
port: 8091
spring:
ai:
mcp:
server:
path: /mcp
支付宝 MCP 工具(暴露给 AI 调用)
@Component
public class AlipayMcpTools {
private final AlipayUtil alipayUtil = new AlipayUtil(); // 可注入
@Tool(description = "【支付宝】发起支付,传入商品名与金额")
public String alipayPay(String subject, String totalAmount) {
String orderNo = "ALI_MCP_" + UUID.randomUUID();
return alipayUtil.createPagePay(orderNo, subject, totalAmount);
}
}
启动类
@SpringBootApplication
public class AlipayMcpServer {
public static void main(String[] args) {
SpringApplication.run(AlipayMcpServer.class, args);
}
}
2)微信支付 MCP Server(8092)
一模一样结构,只改端口和工具:
@Tool(description = "【微信支付】发起支付,传入商品名与金额")
public String wechatPay(String subject, String totalAmount) {
return "微信支付订单创建:" + totalAmount + "元 → " + subject;
}
3)订单查询 MCP Server(8093)
@Tool(description = "【订单服务】查询任意订单状态")
public String queryOrder(String orderNo) {
return "MCP 查询结果:订单" + orderNo + " 已支付";
}
四、AI 客户端调用(零代码!)
控制器完全不用改!
@GetMapping("/ai/chat")
public String chat(@RequestParam String msg) {
return chatClient.prompt()
.user(msg)
.tools() // ← 不填,自动加载:本地Tool + 所有MCP工具
.call()
.content();
}
五、超级震撼测试效果
测试 1:支付宝支付
帮我用支付宝付50元开通会员
→ AI 自动调用 Alipay MCP 的 alipayPay
测试 2:微信支付
帮我用微信付30元买课程
→ AI 自动调用 Wechat MCP 的 wechatPay
测试 3:跨 MCP 串行调用(AI 自动多步执行)
用支付宝付20元,然后帮我查一下订单状态
→ 调用 Alipay MCP → 再调用 Order MCP → 自动返回最终结果
测试 4:本地 Tool + MCP 混合调用
先本地支付,再用MCP查订单
→ 全部自动调度
六、关键原理(必须懂)
1. Spring AI 自动做了什么?
-
启动时拉取所有 MCP Server 的工具列表
-
合并本地 @Tool
-
交给大模型做Function Calling 路由
2. 工具冲突?完全不会
描述里写清楚归属即可
3. 调用模式
-
单选:单意图 → 调一个工具
-
串行:多意图 → 自动连续调用
-
并行:模型支持 → 同时调多个
七、生产级最佳实践
-
MCP 单独部署,解耦 AI 服务
-
MCP 内部做鉴权、验签、限流、熔断
-
工具 description 越精准,AI 越不会错
-
本地 Tool 适合轻逻辑,MCP 适合微服务 / 第三方支付
-
本地 Tool + MCP 可混合使用,Spring AI 原生支持
487

被折叠的 条评论
为什么被折叠?



