Chargebee Webhooks 技能用于接收并验证来自 Chargebee 的 Webhook 请求,主要面向订阅计费场景的开发者。
用途 当需要设置 Chargebee Webhook 处理器、调试 Basic Auth 验证失败、理解 Chargebee 事件类型与负载,或处理订阅计费事件时,可使用本技能。
验证机制 Chargebee 使用 Basic Authentication 进行 Webhook 验证(而非 HMAC 签名),因此不需要访问原始请求体,可使用 express.json() 等自动 JSON 解析。验证流程为:从 Authorization 请求头提取 Basic 凭据,Base64 解码后按冒号分隔用户名与密码,再与预期的 CHARGEBEE_WEBHOOK_USERNAME 和 CHARGEBEE_WEBHOOK_PASSWORD 进行比较;不匹配则返回 401。
使用方式 技能提供了三种框架的实现示例:
- Express.js:使用 app.post 路由配合 express.json(),解码并验证 Basic Auth 凭据,通过 switch 处理事件类型,最后返回 200 OK。注意若后续需要原始请求体(如其他提供商的 HMAC 验证),可改用 express.raw()。
- Next.js(App Router):在 app/webhooks/chargebee/route.ts 中定义 POST 处理函数,从 req.headers 获取 authorization,解码验证后通过 req.json() 读取事件。
- FastAPI:定义依赖 verify_chargebee_auth 验证 Basic Auth(注意使用 index(':') 处理密码中的冒号),在处理函数中根据 event_type 分支处理,返回 {"status": "OK"}。
环境变量 需要配置 CHARGEBEE_WEBHOOK_USERNAME 与 CHARGEBEE_WEBHOOK_PASSWORD 两项 Basic Auth 凭据。
常见事件类型 文档列出了示例事件类型及其触发时机与常见用例,包括 subscription_created、subscription_changed、subscription_cancelled、subscription_reactivated、payment_succeeded、payment_failed、invoice_generated、customer_created。文档特别警告:这些事件名称仅为示例,必须对照 Chargebee API 文档验证,事件名称可能因 API 版本与配置而显著不同,尤其是支付事件、发票事件以及任何自定义事件,应始终检查 Chargebee Webhook 设置以确认账户实际使用的事件名称。
本地开发 可使用 Hookdeck CLI 进行本地 Webhook 测试:npx hookdeck-cli listen 3000 chargebee --path /webhooks/chargebee,无需账户,提供本地隧道和用于检查请求的 Web UI。
参考材料与相关技能 参考材料涵盖概述、设置、验证与示例(Express、Next.js、FastAPI 示例均含测试)。建议同时安装 webhook-handler-patterns 技能以处理处理顺序、幂等性、错误处理与重试逻辑。相关技能包括 stripe-webhooks、shopify-webhooks、github-webhooks、resend-webhooks、clerk-webhooks、elevenlabs-webhooks、openai-webhooks、paddle-webhooks、webhook-handler-patterns、hookdeck-event-gateway。
限制 资料未提供具体的收费、价格或平台限制信息。事件名称必须根据实际 Chargebee 配置验证,本技能不保证示例事件名称在所有环境中可用。