SuperAPI AI 工具集

circle-webhooks

测试与质量

查看项目

更新于 10-15 22:14

技能介绍

用途:接收并验证 Circle Payments Network(CPN)v2 通知(Webhook),适用于搭建 Circle Webhook 处理器、排查 ECDSA 签名验证失败、处理 cpn.payment.、cpn.transaction.、cpn.rfi.* 等事件。

主要能力:Circle v2 通知使用非对称 ECDSA 签名,而非 HMAC 或 Standard Webhooks 规范。每个 POST 携带两个头:X-Circle-Signature(对原始请求体的 Base64 编码 ECDSA_SHA_256 签名)与 X-Circle-Key-Id(签名公钥的 UUID)。验证方式是先从 Circle API 获取对应公钥(GET /v2/cpn/notifications/publicKey/{keyId},返回 base64 DER/SPKI 公钥),再用 ECDSA-SHA256 对原始请求体验签。同一 keyId 的公钥是静态的,可按 keyId 缓存以避免每个事件都调用 API。另有两点特性:订阅创建/更新时 Circle 会用 HEAD 请求校验端点(无 subscribe-URL 握手),需对 HEAD 与 POST 都返回 200;本技能仅覆盖 CPN v2 通知,Circle Mint / Core API(v1)不在此范围。

使用方式:Circle 无官方 Webhook 验证 SDK,需手动验证。Node.js 中可用 crypto 的 createPublicKey/createVerify,先按 keyId 取公钥并缓存,再对原始字节(非解析后的 JSON)验签。事件类型由请求体中的 notificationType 字段标识(cpn.* 字符串),变更资源在 notification 对象中,其结构对应相应 API 响应,生命周期状态为 notification.status;可通过订阅的 notificationTypes 配置接收类型,支持 cpn.payment.、cpn.transaction.、cpn.rfi.* 及 * 通配符。环境变量包括 CIRCLE_API_KEY 与 CIRCLE_API_BASE_URL(沙箱为 https://api-sandbox.circle.com)。本地调试可运行 npx hookdeck-cli listen 3000 circle --path /webhooks/circle,再创建指向转发 URL 的订阅。

适用场景与限制:适合需要处理 CPN 支付、链上交易与 RFI 通知的开发者。常见事件包括 cpn.payment.completed/failed/delayed、cpn.transaction.broadcasted/completed/failed、cpn.rfi.approved/rejected。限制:不覆盖 Circle Mint / Core API(v1);验证必须使用原始请求体;公钥需自行获取与缓存。完整处理器示例见 examples/express/、examples/nextjs/、examples/fastapi/,参考文档见 references/overview.md、setup.md、verification.md。建议配合 webhook-handler-patterns 技能处理幂等、错误与重试。