SuperAPI AI 工具集

tokenio-webhooks

测试与质量

查看项目

更新于 10-15 22:14

技能介绍

用途:帮助开发者搭建 Token.io webhook 接收端点,验证 Ed25519 签名,并订阅与处理支付、退款、VRP、虚拟账户入账等事件。

主要能力:Token.io 是开放银行/账户到账户(A2A)支付提供商,其 webhook 不使用 HMAC 或 Standard Webhooks。每次投递由 token-signature 头携带对原始 POST body 的 Ed25519 签名(base64url 编码),token-event 头携带事件类型(如 PAYMENT_STATUS_CHANGED)。验签使用 Token Dashboard(Settings → Member Information)中成员的 Ed25519 公钥(base64url、无填充),无共享密钥。

使用方式:验签核心是用 Node 内置 crypto 将 base64url 公钥导入为 Ed25519 JWK,再对原始 body 验签,无需外部 SDK(官方 token-io npm 包是 API 客户端,非 webhook 验证器)。关键点:签名针对 POST body 的精确原始字节,必须在 JSON 解析前捕获原始 body,任何重新序列化都会导致验签失败。环境变量 TOKEN_WEBHOOK_PUBLIC_KEY 存放公钥。订阅通过 PUT /webhook/config 完成。本地开发可用 npx hookdeck-cli listen 3000 tokenio --path /webhooks/tokenio 建立隧道。

适用场景:处理 PAYMENT_STATUS_CHANGED、TRANSFER_STATUS_CHANGED、REFUND_STATUS_CHANGED、VRP_STATUS_CHANGED、VRP_CONSENT_STATUS_CHANGED、VIRTUAL_ACCOUNT_CREDIT_RECEIVED、PAYOUT_STATUS_CHANGED 等事件;支付状态含 INITIATION_PROCESSING、INITIATION_COMPLETED、INITIATION_REJECTED,原始 ISO 20022 状态在 bankPaymentStatus 中。

限制:端点须返回 200,非 200 会以指数退避重试(约 10、30、70、150 分钟),最长 72 小时(约 10 次),因此需处理幂等。示例代码见 examples/express、examples/nextjs、examples/fastapi;更多细节见 references/overview.md、setup.md、verification.md。建议配合 webhook-handler-patterns 技能使用。