为什么支付在等待审批,应该如何恢复?
了解 Agent 支付为什么进入人工审批、多人审批如何形成最终决定,以及审批后怎样使用原请求方法、准确网址、请求体和内容类型安全恢复同一个付款 Intent,避免因新建替代付款或变更已锁定请求而造成重复支付。
awaiting_approval 表示这笔支付符合人工审批条件,但尚未达到策略要求的批准人数。保存返回的 Intent ID 和原准确资源网址,由所需数量的组织管理员核对锁定的付款详情。审批状态变为 approved 后,调用 resumeX402Purchase 恢复同一个 Intent。
等待审批时不要创建替代 Intent。
为什么需要审批
新建付款 Agent 默认采用保守配置:自动付款阈值为零。在运营者创建并激活明确的策略版本前,每笔支付都需要审批。
激活策略后会出现三种结果:
| 策略结果 | 支付结果 |
|---|---|
| 来源和收款方均在允许列表中,金额不超过自动付款阈值,并满足其它限制 | 自动批准 |
| 来源未知、收款方未知,或金额高于自动付款阈值但没有超过单笔限额 | 等待匹配 approvalTiers 层级要求的批准人数 |
| 金额超过策略或平台硬上限、付款信息不受支持、预算不足或风险门禁失败 | 直接拒绝,审批无法覆盖 |
对未知来源或收款方的审批只适用于当前 Intent,不会把它加入策略允许列表。以后再次向同一个未知目标购买时,仍可能需要审批。
管理员批准的内容
审批会锁定组织、环境、Agent、钱包、HTTP 请求方法、脱敏资源网址、完整网址哈希、请求体摘要、内容类型、来源、收款方、网络、资产合约、最高金额、x402 付款要求、策略版本和过期时间的快照。StableOps 不保存请求体本身。
管理员只能批准或拒绝该快照,不能修改收款方、资产、网络或金额后再批准。管理 API Key 可以读取审批队列,但每次决定都必须使用当前组织管理员的短时会话。建议直接使用 Agent Payments 审批页。
当前策略会在 approvalTiers 中选择金额满足条件的最高 minimumAmountAtomic 层级,并可要求 1 至 5 名不同管理员批准。审批响应通过 requiredApprovals、approvedCount 和 rejectedCount 展示进度。同一管理员不能重复投票。在不同管理员的批准数达到要求前,审批和 Intent 会继续保持等待状态。任意管理员拒绝都会立即拒绝该审批和 Intent,即使此前已有管理员批准。
安全恢复流程
保存首次请求的结果:
const result = await agent.x402Fetch(resourceUrl, {
method: 'POST',
body: requestBody,
contentType: 'application/json',
idempotencyKey: 'research-task-284:market-report:v1',
})
if (result.status === 'awaiting_approval') {
await savePendingPayment({
intentId: result.intentId,
approvalId: result.approvalId,
approvalExpiresAt: result.approvalExpiresAt,
})
}确认审批状态确实为 approved 后,读取先前保存的 Intent ID 并恢复:
const pending = await loadPendingPayment()
const resumed = await agent.resumeX402Purchase(pending.intentId, resourceUrl, {
method: 'POST',
body: requestBody,
contentType: 'application/json',
})恢复操作不会复用之前的远端 402 响应。SDK 会使用原请求方法、准确网址、请求体和内容类型重新发送请求,再把最新付款要求与已审批 Intent 比较。Control API 还会校验请求方法、网址哈希、请求体摘要和内容类型。全部符合后才申请执行授权。
x402 付款要求发生变化时
旧审批不能授权一笔实质不同的付款:
- HTTP 请求方法、完整网址、请求体、内容类型、来源、收款方、网络或资产变化会使旧审批失效。
- 金额超过已批准的最高值会使旧审批失效;
- 金额不变或降低时,也只有其它锁定字段全部一致才能继续。
这样可以防止卖方在人工决定和实际签名之间更换收费内容。不要通过直接调用签名器或修改 Intent 载荷绕过不一致检查。
审批过期或被拒绝时
过期或被拒绝的审批不能恢复,StableOps 会释放其尚未提交的预算预留。如果业务仍要购买,应先重新检查当前资源报价和策略,再把它作为一笔新的、明确决定的购买处理;不要尝试恢复已经终止的 Intent。
审批默认有效 30 分钟。如果执行授权已经签发,则由执行授权自身的短时有效期和随机数状态决定后续结果;审批到期不会取消一笔可能已经提交的付款。
相关内容
这篇文档怎么样?
最后更新