SuperAPI AI 工具集

polar-webhooks

编程与开发

查看项目

更新于 10-15 22:14

技能介绍

用途:帮助开发者接收并验证 Polar 发送的 Webhook,适用于搭建 Polar webhook 处理器、调试 Standard Webhooks 签名校验失败问题,以及处理订单、订阅、结账等计费事件。典型触发问题包括如何接收 Polar webhook、如何验证签名、如何处理 order.paid、subscription.created、checkout.updated 事件,以及在组织设置中配置 Polar webhook 端点。

主要能力:Polar 遵循 Standard Webhooks 规范,每个请求携带 webhook-id、webhook-timestamp、webhook-signature 三个头部,签名为对 {webhook-id}.{webhook-timestamp}.{body} 计算的 HMAC-SHA256 并进行 base64 编码。必须基于原始请求体校验,不能先做 JSON.parse。官方 SDK 提供一次性解析与校验:Node 使用 @polar-sh/sdk 的 validateEvent 与 WebhookVerificationError;Python 使用 polar_sdk.webhooks 的 validate_event 与 WebhookVerificationError。仓库示例覆盖 express、nextjs、fastapi,含路由接入、事件分发与测试。常见事件包括 checkout.updated、order.created、order.paid、order.refunded、subscription.created、subscription.canceled、subscription.revoked、customer.state_changed,完整事件超过 30 种。

使用方式:配置环境变量 POLAR_WEBHOOK_SECRET 为 Polar 端点设置中的签名密钥。注意 Standard Webhooks 规范要求密钥先经 base64 编码再签名,官方 SDK 会自动对仪表盘密钥做 base64 编码,因此原样传入即可;手写校验器需先对密钥做 base64 编码。Polar 密钥由用户设置或随机生成,不带 whsec_ 前缀。本地开发可用 npx hookdeck-cli listen 3000 polar --path /webhooks/polar 建立隧道,也可使用 Polar 自带的 polar listen http://localhost:3000/,并可用沙盒环境 sandbox.polar.sh 做测试购买。校验失败应返回 400 或 403。

适用场景与限制:适合计费相关的 webhook 接入与排障。生成文件时建议标注来源注释。资料建议搭配 webhook-handler-patterns 技能,处理处理器顺序、幂等、错误处理与重试逻辑。未提供的内容暂未说明。