SIGN IN SIGN UP

fix(paykit): cancel via cancel_at_period_end + handle terminal status in webhook

- cancelSubscription now uses cancel_at_period_end instead of cancel_at
  (cancel_at doesn't reliably fire subscription.deleted with test clocks)
- subscription.upsert webhook handler now detects terminal status
  (canceled/ended) and activates scheduled plans, matching the
  subscription.delete handler behavior
- Smoke tests reworked: checkout flow via fakeCheckoutCompletion,
  faked webhook events for test clock lifecycle (stripe listen doesn't
  forward test clock events), createSubscription override for
  allow_incomplete payment behavior
- 7 lifecycle steps passing: signup, checkout to Pro, upgrade to Ultra,
  downgrade to Pro, resume Ultra, cancel to Free, upgrade to Pro
M
Max Katz committed
92f79a612b67eb3cbf16709b6f20caf5b8a3cd2e
Parent: 4edcad7