agentwallets.si
← 返回博客

独立解读

让 Agent 为一次 API 请求付款:先用本地模拟看完整流程

文章图解 · 概念示意
01本地模拟02权限检查03交付与记录

类型:动手体验|运行日期:2026-10-28|本地模拟,无网络、无钱包、无真实资金

Agent 买一次数据,除了能付钱,还需要知道有没有权限、是否发生重复付款、数据是否真正交付。为了先看清这些状态,我们做了一个只运行在本机内存中的小实验。

实验的假设规则是:预算 10 美元;单笔超过 3 美元需审批;只允许示例商家 data.example。金额以美分保存。它是教学模拟,不实现 x402、链上交易或任何厂商 API。

sequenceDiagram participant A as 模拟 Agent participant L as 本地策略与支付模拟器 participant D as 交付记录 A->>L: 购买 order-1,金额 1 美元 L->>L: 检查预算、商家及审批门槛 L-->>A: 模拟支付成功 A->>D: 模拟记录数据交付 D-->>A: 已交付或交付失败

如何复现

使用本系列附带的 payment_lab.py 和 test_payment_lab.py,在两文件所在目录运行:

python3 -m unittest -v test_payment_lab

2026-10-28 的本机运行结果是 5 项测试通过。测试使用 Python 标准库,无账户、无外部网络,也不会创建真实钱包。

检查场景 本次模拟结果
模拟付款成功后,交付失败 支付仍显示成功,交付单独标记失败
超出总预算 返回“预算不足”
单笔超过门槛 未批准时返回“需要审批”,批准后可继续
授权失效或商家不允许 分别拒绝
模拟超时后使用同一订单重试 返回“状态未知”,不新建第二笔模拟支付

代码中的商家、审批和支付结果都是人为设定的模拟条件。这次运行验证的是示例代码在这些条件下的行为,并不证明真实产品能提供相同的保护。

为什么把支付与交付分开?

模拟里付款成功、交付失败会同时存在。真实系统也可能出现类似情况,因此需要有可关联的订单、支付和交付记录。处理失败时,应先查清状态,再根据服务条款决定重试、退款或人工处理。

示例对同一订单返回既有状态,旨在演示避免盲目重复执行的思路;它不保证真实系统全局幂等,也没有实现真实支付查询。Stripe 对支付处理和异步事件的说明同样区分了不同状态,具体行为应看所用服务的文档。Stripe 履约与事件

距离真实 x402 还差什么?

真实 x402 会涉及服务方的支付要求、客户端构造凭证,以及验证和结算等环节;还要检查具体网络、资产、测试环境和服务商能力。x402 官方规范是了解这些交互的起点。

下一步真实体验需要单独记录工具版本、测试网络、步骤、交易状态和结果;本次模拟不能替代那份实测。