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 |
|
wangjia
|
ed5ec5c894
|
feat(v2): outbox 退款感知(refund_id 进唯一键)+ 投递门禁放行退款态 + Enqueue 贯通 refundID
|
2026-07-10 16:26:32 +08:00 |
|
wangjia
|
7a27a6223a
|
feat(v2): order 补 biz_code + webhook payload 带 product_biz_code(收口 P2 延后项)
|
2026-07-10 14:12:44 +08:00 |
|
wangjia
|
764ed558a1
|
chore(v2): 终审收尾——settle-sync 非常态结果落日志 + Retry 补 body 上限
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
|
2026-07-10 11:51:33 +08:00 |
|
wangjia
|
0877b01874
|
fix(v2): settle 定位尝试的瞬时读库错误归 SettleFailed(可重试),不再误标 not_found
AttemptByProviderRef 返回非哨兵错误(如 DB 抖动)时原先与"查无此单"终态
一并标 SettleNotFound;调用方按结果值决定 ack,会把已付订单永久丢弃。
非哨兵分支改判 SettleFailed(可重试,渠道会重投),errors.Is(ErrAttemptNotFound)
分支维持 SettleNotFound 不变。新增 TestSettleTransientReadErrorIsFailed 通过
关闭底层连接强制产出瞬时读库错误,验证结果与语义。
|
2026-07-10 11:20:53 +08:00 |
|
wangjia
|
68d162d6c4
|
feat(v2): 入账管线 Settle/HandleCallback/SyncPending(归一→定位→幂等→核对→标付→入队)
|
2026-07-10 11:15:10 +08:00 |
|