实战
给 AI Agent 装上「能花钱」的能力:中国银联智能体支付开放协议实战
智能体现在能写报告、订酒店、买机票,但有个关键问题一直没人解决:它怎么「付钱」?过去 Agent 只能给你一个付款链接让你自己点,一旦要它自主完成「下单→支付→拿到凭证」的闭环,就卡在信任与合规上。2026 年 7 月,中国银联发布《智能体支付开放协议框架》,联合数十家伙伴用统一信任机制和交互范式,让不同厂商的智能体以「即插即用」的方式安全参与支付流程——境外酒店预订、车载智能体消费、AI 机票预订、云闪付生活缴费、线下智能点单等真实场景已经跑通验证交易。本教程手把手教你给自己的 Agent 设计一套「能确认、能花钱、可追溯」的支付能力。
💳 本教程适合:正在做电商、出行、生活服务类 Agent 的开发者,以及想把「AI 帮你买东西」做成产品的团队。你不需要是支付专家,跟着做就能搭出一套可演示的支付闭环。
先搞懂:为什么 Agent 支付是个难题?
人付钱很简单:看金额、点头、输密码。但 Agent 付钱有三道坎:
| 难点 | 通俗解释 | 协议怎么解 |
|---|---|---|
| 信任 | 凭什么信这个 Agent 有权花你的钱 | 统一身份与授权范式 |
| 互通 | 不同厂商的 Agent 互相听不懂 | 即插即用交互标准 |
| 溯源 | 出错了谁付的、为什么付 | 全流程上链/留痕 |
银联框架的核心贡献:不绑定某一家模型或平台,而是定义一套「信任握手 + 交互范式」,让任意 Agent 都能以标准化方式接入支付生态,打破厂商之间的互通壁垒。
Step 1:明确你的 Agent 的「支付边界」
1 先写清:哪些能自动付、哪些必须人确认
千万别让 Agent 默认拥有「无限支付权」。先用一张表划清边界:
支付策略示例:
- 单笔 ≤ ¥50 且属于「已知商户白名单」 → 可自动支付
- 单笔 > ¥50 或陌生商户 → 必须人工确认
- 涉及订阅/周期扣款 → 必须人工确认 + 二次授权
- 任何退款/转账类操作 → 一律人工确认
把这张表写进 Agent 的系统提示与安全策略,
作为「支付护栏」的第一道闸。
💡 这是防止「失控 Agent 半夜乱花钱」的关键。参考本中心《给智能体装预算护栏》教程,把金额上限和告警一起配上。
Step 2:设计「信任握手」流程
2 让支付方先认出「你是谁、被授权了没」
按协议思路,Agent 发起支付前要先做一次授权校验,而不是上来就扣款:
// 伪代码:支付前的信任握手
async function authorizePayment(agent, intent) {
// 1. 校验 Agent 身份与用户授权令牌
const token = await getUserConsent(agent.id, intent.amount);
if (!token.valid) throw new Error('未授权');
// 2. 命中支付策略(Step 1 的边界表)
if (intent.amount > 50 && !intent.merchantInWhitelist) {
return await requestHumanConfirmation(intent); // 暂停,等人
}
return { approved: true, token };
}
「暂停等待人工确认」是必须的:协议的价值就在于 Agent 能安全地「停下来问一句」。任何超出边界的支付,都必须把意图、金额、商户清晰地呈现给用户,确认后才继续。
Step 3:封装一个标准「支付工具」给 Agent 调用
3 把付款做成 Agent 能调的一个工具
像给其他工具一样,把支付包装成 Agent 可调用的函数,内部走协议的标准交互:
const payTool = defineTool(
{ name: 'agentPay',
description: '在用户授权范围内完成一笔支付',
inputSchema: { amount: number, merchant: string, reason: string } },
async ({ amount, merchant, reason }) => {
const auth = await authorizePayment(agent, { amount, merchant });
if (auth.needHuman) return { status: 'pending', confirmUrl: auth.url };
// 调银联开放协议的标准支付接口(示意)
const result = await unionpayAgentPay({
amount, merchant,
authToken: auth.token,
traceId: generateTraceId() // 用于溯源
});
return { status: 'paid', orderId: result.orderId, traceId: result.traceId };
}
);
🔑 关键:工具返回里带上
traceId(溯源 ID)。每一笔支付都可被独立查询「谁、为什么、付了多少、结果如何」——这正是协议「可信协同」的落地点。Step 4:接真实场景验证(酒店 / 机票 / 缴费)
4 从「演示级」走向「真实交易」
银联框架已验证的真实场景,正好给你当样板:
| 场景 | Agent 自主程度 | 你的可借鉴点 |
|---|---|---|
| 境外酒店预订 | 比价→下单→支付 | 大额走人工确认 |
| AI 机票预订 | 选舱→锁价→支付 | 价格时效性强,需回写状态 |
| 云闪付生活缴费 | 查账单→代扣 | 白名单商户可自动 |
| 线下智能点单 | 选品→下单→支付 | 小额免确认体验最佳 |
🚀 新手建议:先做「生活缴费」这类小额、白名单、结果可逆的场景,跑通闭环后再扩展到机票酒店。
Step 5:把每一笔支付「留痕溯源」
5 决策、协作、资金流转全程可查
协议的信任来自可追溯。无论是否上链,你至少要本地落地一份结构化流水:
// 每笔支付写一条不可变记录
paymentLedger.append({
traceId, orderId, agentId, userId,
amount, merchant, reason,
status, timestamp,
humanConfirmed: boolean // 是否经人工确认
});
// 提供查询接口:用户随时问「我的 Agent 昨天付了什么」
// 也方便对账与争议处理
没有溯源就没有信任:一旦 Agent 付错钱,能秒级定位「哪一步、谁授权、为什么」才算合格。这也是金融、政企合规的硬性要求。
Step 6:做一套「支付安全自检清单」
6 上线前逐项打勾
□ 支付边界表已写入系统提示与安全策略
□ 所有超阈值/陌生商户支付都暂停等人确认
□ 支付工具返回带 traceId 且写入流水
□ 用户能随时查询 Agent 的历史支付
□ 设有单日/单笔金额硬上限与告警
□ 退款/转账类操作一律禁用或强确认
□ 授权令牌有过期与吊销机制
🎉 恭喜!你给 Agent 装上了一套「能确认、能花钱、可追溯」的支付能力。记住:Agent 支付的第一原则是「最小授权 + 人工兜底」,能力越强,护栏越要早装。
常见问题速查
| 你遇到的现象 | 大概率原因 & 解决 |
|---|---|
| Agent 直接大额扣款 | 支付边界表没生效或策略写反了,立即加人工确认 |
| 对账发现缺记录 | 支付工具没回写 traceId 到流水 |
| 用户不信任自动付 | 默认阈值太高,把白名单和小额门槛调低 |
| 跨厂商 Agent 调不通 | 没遵循标准交互范式,按协议对齐字段 |