Skip to content

Integrate Stripe subscriptions for user billing - #3452

Draft
jreinstra wants to merge 3 commits into
GeneralTask:masterfrom
Johnglomerate:devin/1773632227-stripe-subscription-integration
Draft

jreinstra wants to merge 3 commits into
GeneralTask:masterfrom
Johnglomerate:devin/1773632227-stripe-subscription-integration

Conversation

@jreinstra

Copy link
Copy Markdown
Contributor
  • Add stripe-go v76 dependency
  • Add Stripe config values (STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET, STRIPE_PRICE_ID) to .env
  • Extend User model with subscription fields (StripeCustomerID, SubscriptionID, SubscriptionStatus, etc.)
  • Create subscription API endpoints: checkout session, portal session, status, webhook
  • Modify LoginCallback to redirect unsubscribed users to Stripe Checkout after auth
  • Replace BusinessMiddleware with SubscriptionMiddleware (checks subscription_status)
  • Update UserInfo API to return subscription_status and is_subscribed instead of business_mode_enabled
  • Update frontend TUserInfo type and views to use is_subscribed
  • Clean up all dead BusinessMode code from backend and frontend
  • Update tests to reflect new subscription-based gating

jreinstra and others added 3 commits March 16, 2026 03:40
- Add stripe-go v76 dependency
- Add Stripe config values (STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET, STRIPE_PRICE_ID) to .env
- Extend User model with subscription fields (StripeCustomerID, SubscriptionID, SubscriptionStatus, etc.)
- Create subscription API endpoints: checkout session, portal session, status, webhook
- Modify LoginCallback to redirect unsubscribed users to Stripe Checkout after auth
- Replace BusinessMiddleware with SubscriptionMiddleware (checks subscription_status)
- Update UserInfo API to return subscription_status and is_subscribed instead of business_mode_enabled
- Update frontend TUserInfo type and views to use is_subscribed
- Clean up all dead BusinessMode code from backend and frontend
- Update tests to reflect new subscription-based gating

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…ents

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Tests cover:
- isUserSubscribed with all status variants (active, trialing, canceled, past_due, empty, unknown)
- SubscriptionStatus endpoint (no subscription, active, trialing, canceled)
- CreateCheckoutSession unauthorized access
- CreatePortalSession unauthorized access and no-stripe-customer error case
- StripeWebhook with empty body and invalid signature
- updateUserSubscription (active, canceled, past_due transitions)
- updateUserSubscriptionFull (all fields updated, field transitions)
- getOrCreateStripeCustomer with existing customer ID
- SubscriptionStatus constants

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants