用途:为支付集成(Stripe、PayPal 等)实现 webhook 安全校验与处理,避免伪造事件、重放攻击与重复处理。
主要能力:
- 签名验证:按 Stripe 算法提取时间戳与签名,构造 timestamp.raw_body,用 HMAC-SHA256 与 webhook 密钥计算并比较签名,校验时间戳容差(默认 5 分钟)。
- 防重放:时间戳校验、事件 ID 追踪、签名验证、幂等键,拒绝超过容差窗口的事件。
- 事件日志与审计:记录原始 payload、事件类型与 ID、接收时间、处理状态、错误信息、关联用户;日志保留 90 天以上用于争议处理。
- 本地测试:结合 Stripe CLI 将 webhook 转发到本地开发服务器并触发测试事件。
- 密钥管理:密钥通过环境变量注入,禁止硬编码或提交真实密钥,建议每季度轮换。
- 错误处理与重试:200 成功、400 永久失败(不重试)、401 签名无效(不重试)、500 临时失败(触发重试);处理应幂等、异步队列化、5 秒内响应。
使用方式: 运行 setup-webhook-endpoint.sh 配置端点:bash /home/gotime2022/.claude/plugins/marketplaces/ai-dev-marketplace/plugins/payments/skills/webhook-security/scripts/setup-webhook-endpoint.sh stripe 签名校验:python /home/gotime2022/.claude/plugins/marketplaces/ai-dev-marketplace/plugins/payments/skills/webhook-security/scripts/verify-signature.py 本地转发测试:bash /home/gotime2022/.claude/plugins/marketplaces/ai-dev-marketplace/plugins/payments/skills/webhook-security/scripts/test-webhook-locally.sh 生成密钥:bash /home/gotime2022/.claude/plugins/marketplaces/ai-dev-marketplace/plugins/payments/skills/webhook-security/scripts/generate-webhook-secret.sh 多供应商:for provider in stripe paypal square; do bash .../setup-webhook-endpoint.sh $provider; done
适用场景:Stripe/PayPal 订阅、一次性支付、退款、拒付等事件的安全接收与处理,生产部署前的端到端测试。
依赖与限制:需 Python(FastAPI、stripe、sqlalchemy、pydantic、python-dotenv、httpx)、Stripe CLI、ngrok/localtunnel、pytest、requests;需数据库表 webhook_events 及索引;需配置 STRIPE_API_KEY、STRIPE_WEBHOOK_SECRET、PAYPAL_CLIENT_ID、PAYPAL_CLIENT_SECRET、PAYPAL_WEBHOOK_ID、DATABASE_URL 等环境变量。生产环境须使用 HTTPS,端点不应公开暴露,需限流与监控。资料未提供具体定价与性能数据。