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 分鐘。如果執行授權已經簽發,則由執行授權自身的短時有效期和隨機數狀態決定後續結果;審批到期不會取消一筆可能已經提交的付款。

相關內容

這篇文件怎麼樣?

最後更新

本頁內容