StableOps

Webhook

接收 Agent Payments 的支付、资源、审批和熔断状态事件。

Agent Payments 的状态变化会与业务事务一起写入事务发件箱,再通过 StableOps 的签名 Webhook 管道投递。投递支持自动重试、端点并发限制、人工重放和死信处理。

配置端点

前往 Agent Payments Webhook 管理创建端点、轮换签名密钥、查看投递记录,以及重放失败或进入死信的投递。

在这里创建的端点会接收 agent_payment.* 事件。沙盒与正式环境需要分别配置。

两条状态轴

一笔 Agent 支付同时维护两类状态:

  • payment_status:策略、审批、授权和链上结算状态。
  • resource_status:付费 HTTP 请求是否收到可靠响应。
资源请求成功不等于链上已经结算。链上结算成功也不保证 Agent 收到了资源响应。履约、重试和人工对账必须同时查看 payment_statusresource_status

事件类型

类别事件
Intentagent_payment.intent.createdagent_payment.intent.awaiting_approval
审批agent_payment.approval.approvedagent_payment.approval.rejectedagent_payment.approval.expired
授权agent_payment.authorization.issuedagent_payment.authorization.expired
结算agent_payment.settlement.unknownagent_payment.settlement.settledagent_payment.settlement.reverted
资源agent_payment.resource.succeededagent_payment.resource.failedagent_payment.resource.unknown
熔断agent_payment.agent.pausedagent_payment.organization.paused

settlement.unknown 表示付款请求可能已经送达结算服务,但当前证据不足以确认结果。此时只能查询和对账原 Intent,不能创建新 Intent 或新授权重付。

载荷结构

普通支付事件使用版本化信封:

{
  "id": "7b91729e-41d0-4f9f-8dd1-6eea06a5764d",
  "type": "agent_payment.settlement.settled",
  "version": "1",
  "occurred_at": "2026-08-05T08:00:00.000Z",
  "data": {
    "organization_id": "org_...",
    "environment": "sandbox",
    "agent_id": "agent_...",
    "intent_id": "pint_...",
    "payment_status": "settled",
    "resource_status": "response_received",
    "amount_atomic": "1000",
    "asset": "USDC",
    "asset_contract": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
    "asset_decimals": 6,
    "network": "eip155:84532",
    "origin": "https://resource.example.com",
    "pay_to": "0x...",
    "approval_id": null,
    "authorization_id": "pauth_...",
    "receipt_id": "receipt_..."
  }
}

暂停事件只包含其适用的组织、环境、Agent 或暂停原因。任何载荷都不会包含 Agent Key、执行授权原文、完整支付签名、私钥或收费资源响应正文。

完整的版本化信封、全部事件名、字段类型、必填与可空字段,以及三类载荷变体,见 Agent Payments Webhook API 参考

安全处理规则

  1. 使用原始请求体校验 Webhook 签名,验签成功后再解析 JSON。
  2. 以顶层 id 建唯一索引去重。自动重试和人工重放都可能重复投递同一事件。
  3. 先把事件持久化,再尽快返回 2xx。耗时业务处理放到自己的队列中。
  4. 不假设跨事件严格有序。需要执行不可逆操作前,用 management.payments.get(intentId) 查询当前状态。
  5. 收到 settlement.unknownsettlement.reverted 或任一暂停事件时触发告警和人工核对,不要自动重付。

端点创建、原始请求体验签、密钥轮换、重试时序和死信重放见 Webhook 通用文档

这篇文档怎么样?

最后更新

本页内容