為什麼支付在等待審批,應該如何恢復?
瞭解 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 分鐘。如果執行授權已經簽發,則由執行授權自身的短時有效期和隨機數狀態決定後續結果;審批到期不會取消一筆可能已經提交的付款。
相關內容
這篇文件怎麼樣?
最後更新