StableOps
常见问题

为什么支付在等待审批,应该如何恢复?

了解 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 名不同管理员批准。审批响应通过 requiredApprovalsapprovedCountrejectedCount 展示进度。同一管理员不能重复投票。在不同管理员的批准数达到要求前,审批和 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 分钟。如果执行授权已经签发,则由执行授权自身的短时有效期和随机数状态决定后续结果;审批到期不会取消一笔可能已经提交的付款。

相关内容

这篇文档怎么样?

最后更新

本页内容