Commit Graph

5 Commits

Author SHA1 Message Date
wangjia ff65a06bf2 fix(v2): settleRenewal 重投补入队(通知不再永久丢)+ 无业务方首过返回 Processed(+同型路径核修)
settleRenewal 先 CreateRenewalPaid(建单已 paid)后 Enqueue,首次入队失败后重投走
created=false 的 duplicate 分支旧实现直接 return、不再入队,subscription.renewed
永久丢失(SyncPendingAttempts 救不了)。改为 duplicate 分支也无条件尝试入队,outbox
唯一键 ON CONFLICT DO NOTHING 幂等自愈;顺带对齐无业务方首过应返回 Processed。核查
发现 finalizeCanceled/markSubscriptionPastDue 有同型反纪律,同修。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
2026-07-10 18:30:11 +08:00
wangjia 62abdc1d65 feat(pay-v2): P8 Task5 订阅取消(API+入站)+ past_due 状态 2026-07-10 18:18:55 +08:00
wangjia b8bdb2c193 fix(v2): 订阅激活门改按结算结果(unpaid session 不再无付款激活)
HandleCallback 原门 serr==nil && SubscriptionRef!="" 挡不住 Settle() 对非
PaidSucceeded 事件返回 (SettleIgnored, nil) 的情况(如 Stripe
checkout.session.completed 异步支付 payment_status=unpaid),导致
onSubscriptionActivated 无确认付款先激活订阅。改为按结算结果开门
(SettleProcessed/SettleDuplicate),并在 onSubscriptionActivated 内加
o.Status.Settled() 纵深防御。
2026-07-10 18:09:56 +08:00
wangjia c677d64529 feat(pay-v2): P8 Task4 续费入账 invoice.paid→renewal order + subscription.renewed 2026-07-10 18:06:38 +08:00
wangjia 4c242607a7 feat(pay-v2): P8 Task3 订阅创建 + 首期激活(subscription.created)+ 端点 2026-07-10 17:59:35 +08:00