feat(pay-v2): P8 Task5 订阅取消(API+入站)+ past_due 状态

This commit is contained in:
wangjia
2026-07-10 18:18:55 +08:00
parent b8bdb2c193
commit 62abdc1d65
8 changed files with 669 additions and 13 deletions
+16
View File
@@ -214,6 +214,22 @@ func (p *Provider) VerifyCallback(_ context.Context, in provider.CallbackInput)
ev.PaidAt = &t
}
return ev, nil
case "customer.subscription.deleted":
var sub gostripe.Subscription
if err := json.Unmarshal(event.Data.Raw, &sub); err != nil {
return nil, fmt.Errorf("stripe: 解析 subscription 失败: %w", err)
}
return &provider.PaidEvent{Kind: provider.EventSubscriptionCanceled, SubscriptionRef: sub.ID, Raw: string(in.Raw)}, nil
case "invoice.payment_failed":
var inv gostripe.Invoice
if err := json.Unmarshal(event.Data.Raw, &inv); err != nil {
return nil, fmt.Errorf("stripe: 解析 invoice 失败: %w", err)
}
ev := &provider.PaidEvent{Kind: provider.EventSubscriptionPastDue, InvoiceRef: inv.ID, Raw: string(in.Raw)}
if inv.Subscription != nil {
ev.SubscriptionRef = inv.Subscription.ID
}
return ev, nil
default:
// 其它事件此阶段不处理:归一化 pending(管线 Settle 视为 ignored)。
return &provider.PaidEvent{Status: provider.PaidPending, Raw: string(in.Raw)}, nil