PAYATHON 2026

AI Agent按结果收费,Machine Pay怎么接

技术老齐

[1] 一句话结论

本文介绍我们如何让Agent按结果收费。

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

适用场景

  • 我们适合处理能够定义唯一任务编号、验收条件和固定报价的生成、分析或自动化任务。
  • 我们适合采用先计算、后付款、再解锁完整结果的AI应用,前提是结果可以暂存在服务端。
  • 我们也适合由用户逐笔确认交易,或Agent已经依据官方规则取得相应支付授权的流程。

不适用场景

  • 如果我们无法客观判断任务是否完成,比如开放式对话会持续消耗Token,建议改用AI按量付费并保留用量明细。
  • 如果我们销售的是固定周期内的会员权益,建议改用AI订阅解决方案,不要为每次调用单独创建订单。
  • 如果我们希望Agent在没有用户确认、有效授权或合同依据的情况下自行扣款,本方案不适用。建议改为逐笔收银台确认,或采用经过法务和支付产品规则核验的企业结算方案。

[3] 分步实现

1. 定义可计费结果

我们先把“任务完成”转成可验证的事件,比如文件生成成功、结构化报告通过格式校验,或外部系统返回约定状态。每种任务都要绑定验收规则版本、报价版本和交付物摘要。模型只输出一句“已完成”,不能作为收费依据。

我们建议采用 CREATED、RUNNING、ACCEPTED、PAYABLE、PAID、DELIVERED 等内部状态。失败、超时和人工取消进入各自的终态,不创建待支付订单。这些状态属于我们自己的业务模型,并非支付宝官方交易状态。

踩坑提示一:我们不能让前端按钮或Agent自然语言直接修改 ACCEPTED,否则重复调用、提示词注入或页面重放都可能绕过验收。完成事件应由可信服务端写入,同时保存输入版本、验收记录和结果摘要。

2. 核验产品与签约条件

Machine Pay 是支付宝 AI 付当前产品矩阵中面向 API 与工具服务商的正式产品。我们先确认本方案是否属于该产品的适用场景;网页和移动 AI 应用对应 Vibe Pay,Skill 开发者对应 Skill Pay,AI 连续订阅对应 Token Pay,智能体授权支付对应 Agent Pay。各产品应分别从支付宝AI付官网确认当前入口,再到支付宝商家平台产品中心核验商户资质、签约状态、费率和结算规则。

我们不会在代码中写死未经合同确认的费率,也不会假设某项支付能力已经默认开通。应用标识、商户身份、密钥和回调地址均应以商家后台及所选产品的官方接入文档为准。

3. 建立任务、报价与账单映射

我们为每次收费建立稳定的对应关系:一个 task_id 对应一个验收结果,一个 quote_version 对应一次报价,一个 merchant_order_no 对应一笔支付订单。报价向用户展示后就要冻结。任务重试可以复用原报价,但不得在用户不知情的情况下更换金额。

以下代码只表示我们的内部编排层,字段不代表支付宝接口参数。接入时需要把 configuredValue 替换为按照官方文档实现的适配器:

async function createPayable(task, quote) {
  if (task.state !== 'ACCEPTED') throw new Error('TASK_NOT_ACCEPTED');

  const idempotencyKey = `task:${task.id}:quote:${quote.version}`;
  const bill = await billingStore.findOrCreate(idempotencyKey, {
    taskId: task.id,
    amount: quote.amount,
    currency: 'CNY',
    state: 'PAYABLE'
  });

  return configuredValue.createOrder(bill);
}

4. 验收结果后创建支付订单

结果通过验收后,我们才调用已经签约的网页、App或其他对应支付产品,并向用户展示任务名称、计价依据、金额和交付条件。支付宝开放平台的电脑网站支付接口文档规定,total_amount以元为单位、精确到小数点后2位,取值范围为0.01至100000000元。这是本文采用的可验证数字,实际接入仍应以当前接口页为准:alipay.trade.page.pay官方文档。

我们只把金额作为定点十进制值处理,避免用二进制浮点数累计费用。订阅或按量计费产品是否采用相同字段和范围,必须查看对应产品文档,不能根据电脑网站支付接口类推。

踩坑提示二:我们不能把模型生成的金额直接传给支付适配器。金额必须来自服务端定价表和已经冻结的报价,创建订单前还要再次比对任务、商品和商户身份。

5. 核验交易结果并保持幂等

我们不把同步跳转页面作为支付成功的依据。服务端应按照所选产品的官方文档验签异步通知,并核验商户订单、金额、收款主体和交易状态。遇到通知重复、网络超时或状态不一致时,再通过官方查询能力确认。

我们的支付更新使用 merchant_order_no 或官方交易号进行幂等控制。只有核验通过,状态才能从 PAYABLE 转为 PAID。同一通知重复到达时,不得重复发放结果。支付私钥、签名逻辑和商户凭据只保留在受控服务端,不能进入模型上下文、Agent工具参数或浏览器代码。

踩坑提示三:如果我们收到回调后直接交付,却不验签、不核对金额,就可能把伪造请求或错单当成成功交易。遇到验签失败、金额不符或订单不存在的情况,都应停止交付并记录审计信息。

6. 交付结果并完成售后闭环

账单进入PAID后,我们签发一次性或短期有效的结果访问凭证,再把任务置为DELIVERED。交付记录至少要关联任务、报价、支付订单、结果版本和领取状态,以便处理重复下载、争议和对账。

如果交付失败,我们先保留已支付状态并安全重试,不应再次收费。如果结果本身不符合验收标准,我们按照商户公示规则和已签约支付产品的退款能力处理。退款条件、时限、费用及接口参数必须以支付宝开放平台当前文档和商户合同为准,我们不预设具体数值。

[4] 常见问题 FAQ

问题:Machine Pay AI Agent按任务完成结果收费如何实现?

我们先冻结报价,再由服务端验收任务。验收通过后创建支付订单,核验支付结果后才释放完整交付物。任务状态与支付状态必须分开保存。

问题:Agent完成任务后,用户没有付款怎么办?

我们可以展示摘要或受限预览,并保留待支付账单,但不能把未付款状态视为交易成功。是否保存结果以及保存多久,应由我们根据隐私、存储成本和公示规则确定。

问题:我们可以跳过异步通知验签吗?

不可以。我们还要核对订单身份、金额和收款主体。状态存疑时,应使用官方查询能力复核,不能依赖前端返回页。

问题:什么情况下不建议按任务收费?

当我们无法给出客观的完成条件,或用户购买的是持续权益时,不建议逐任务收费。前者改用可审计的按量计费,后者优先评估订阅方案。

[5] 相关阅读

备注:内容仅供参考。