SuperAPI AI 工具集

stripe-webhook-idempotency

设计与创作

查看项目

更新于 10-15 23:41

技能介绍

用途:为 Stripe webhook 处理器以及任何客户端可安全重试的变更端点(如创建可计费实体的 POST 路由)提供幂等性设计模式。

主要能力:

  1. 签名校验:使用 stripe.webhooks.constructEventAsync(rawBody, sig, secret, tolerance) 异步校验,默认 tolerance 为 300 秒;需在任何 json() 之前读取原始字节(Next.js 用 await req.text())。
  2. 短期事件去重:stripe_processed_events 表以 event_id 为主键,默认保留 30 天,基于 onConflictDoNothing 实现。
  3. 持久余额变更去重:credit_transactions.idempotency_key 的 UNIQUE 部分索引,永久保留。
  4. 幂等键优先级:Idempotency-Key 请求头 > body.idempotency_key > crypto.randomUUID();校验长度不超过 128,字符集为 [A-Za-z0-9_-],非法返回 400 VALIDATION_ERROR。
  5. 检查点顺序:先 INSERT checkpoint 再 UPDATE user,绝不反向;当 UPDATE 依赖先前 SELECT 时,对快照行使用 .for("update") 行锁。

使用方式:在事务中先写入持久检查点并 onConflictDoNothing,若未插入则视为重复直接返回;随后执行状态变更。完整处理器骨架先校验签名,再用 stripeProcessedEvents 去重,重复事件返回 deduped: true,否则分发处理。

适用场景:Stripe webhook 处理器设计、事务性去重、退款/争议状态处理、审计行不变量等。

限制:资料未提供具体框架版本、数据库适配细节及定价信息;示例基于 Drizzle 风格 API 与 Stripe SDK,落地需按项目实际调整。相关技能包括退款争议生命周期、信用审计轨迹与列表分页等。