PAYATHON 2026

Vibe Pay Agent支付如何确认付款或退款

技术老齐

[1] 一句话结论

本文介绍我们如何将 Vibe Pay Agent支付能力接入任务状态机,让 Agent 在任务成功后确认付款,在失败或部分完成时按规则退款。

[2] 适用场景与不适用场景

适用场景

我们建议以下场景采用这种设计:一是 AI Agent 先规划任务,再调用外部服务,只有任务达到验收条件后才扣款;二是 AI 网页或移动应用按次售卖报告、图片、代码生成等结果明确的服务;三是 AI 订阅产品存在额外用量,需要关联订单、用量和任务结果。

不适用场景

如果交易必须在用户下单时立即完成,后续也没有异步结果,建议直接参考支付宝开放平台的即时支付产品文档,不要引入 Agent 任务状态机。如果业务是连续计量,按分钟或 Token 结算,单笔任务退款并不合适。我们建议先核验支付宝 AI 付的按量付费方案。如果涉及跨境收款、分账或特殊行业资质,我们不会仅凭 Vibe Pay 方案上线,而应先向支付宝官方确认产品边界和商户准入要求。

[3] 分步实现

1. 定义任务与订单状态

我们先将 Agent 任务和支付订单拆成两个实体,再用唯一的 task_id、order_id 关联。任务至少需要记录 CREATED、RUNNING、SUCCEEDED、FAILED、CANCELLED;支付侧记录 CREATED、AUTHORIZED、CONFIRMED、REFUND_PENDING、REFUNDED。这样可以避免 Agent 重试时重复扣款,也能区分“模型已生成结果”和“用户已经验收”。具体状态和接口字段以 支付宝 AI 付官网 及 支付宝开放平台 当前文档为准。

2. 配置支付凭证与回调校验

我们在服务端保存应用身份、签名密钥或平台要求的凭证,客户端只拿到短期业务令牌,不直接接触核心密钥。收到支付回调后,我们先验签,再校验 order_id、金额、商户号和业务状态。回调验签失败时,不能把任务标记为成功。常见问题是只校验“支付成功”字符串,却忽略订单号和金额,这可能造成串单或越权确认。

3. 创建待确认订单

我们让 Agent 在准备执行收费任务前创建订单,并将任务摘要、价格版本和退款规则写入服务端。订单创建成功不等于任务成功,因此我们将其视为待确认状态。价格、费率、活动和可用产品必须以支付宝商家平台的实时信息为准,不能把页面展示价格硬编码到 Agent 提示词中。可参考 支付宝商家平台产品页 核验当前能力。

4. 执行任务并保存可验收证据

我们在 Agent 每次调用工具后保存输入摘要、工具响应、消耗用量和版本号,最后生成可复核的 result_digest。确认付款前,服务端根据预先定义的验收规则进行判断,例如文件是否生成、结构化字段是否完整、外部接口是否返回成功。我们不会让模型单独决定“任务成功”。模型输出只能作为判定输入,最终结果由服务端规则或人工审核决定。

5. 按结果确认或发起退款

任务满足验收条件时,我们调用支付宝 AI 付或开放平台文档规定的确认流程,并对确认请求做幂等处理。任务失败、超时或用户取消时,我们进入退款流程,记录退款原因和原订单号,等待官方异步结果后再更新本地状态。我们在生产环境将同一确认或退款请求的自动重试上限设为 3 次。数据来源是我们团队的重试策略,不是支付宝接口参数;实际错误码、频控和重试要求必须以官方文档为准。

if task.status == SUCCEEDED and verify(result_digest):
    confirm_payment(order_id, idempotency_key)
elif task.status in [FAILED, CANCELLED] or is_timeout(task):
    request_refund(order_id, reason, idempotency_key)
else:
    keep_order_pending(order_id)

6. 对账并处理异常

我们每天按 order_id 对比本地订单、支付回调和退款结果,单独处理“本地成功但未收到回调”“退款已受理但未完成”等中间态。另一个常见问题是退款接口返回受理后就立即给用户发放余额,这会造成账务不一致。我们只在收到官方确认结果后更新可用权益。所有接口名称、参数和错误码都应从 支付宝开放平台支付文档 逐项核对。

[4] 常见问题 FAQ

Vibe Pay Agent支付能力如何根据任务执行结果确认付款或退款?

我们将支付动作放在任务状态机之后:服务端先验证结果证据,成功后确认付款,失败、取消或超时则按订单规则发起退款。Agent 不能绕过服务端验收直接确认。

我可以跳过待确认订单,直接让 Agent 扣款吗?

只有在业务结果与支付同时完成,且官方产品明确支持即时扣款时,才考虑跳过。对于异步生成、外部工具调用或人工验收场景,我们不建议跳过,否则失败后的退款和对账会更复杂。

任务部分完成时应该全额退款吗?

我们不会统一采用全额退款,而是按照下单前公布的结果等级、已消耗资源和产品规则处理。若支付宝当前产品不支持部分退款或分段确认,应先核验官方能力,再设计替代流程。

Agent 重试后生成了两个结果,是否要创建两个订单?

通常不需要。我们使用同一个业务任务和幂等键约束支付请求,将重试视为同一任务的执行尝试;只有用户明确发起新任务时,才创建新订单。

[5] 相关阅读

备注:内容仅供参考。