mirror of
https://github.com/yusufipk/OpenFrame.git
synced 2026-09-11 09:36:08 +00:00
feat(billing): integrate Stripe for subscription management and billing access
- Added billing-related fields to the User model in the database. - Implemented functions for managing billing access, including trial periods and subscription statuses. - Created new billing utility functions for Stripe integration. - Updated onboarding page to include billing overview and workspace creation eligibility. - Enhanced route access checks to require billing access for certain actions. - Implemented cleanup scripts for expired billing workspaces and associated media. - Updated header component to conditionally show app navigation based on billing access. - Added new migrations for billing-related database changes.
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
import Stripe from 'stripe';
|
||||
|
||||
let stripeClient: Stripe | null = null;
|
||||
|
||||
export function isStripeConfigured() {
|
||||
return Boolean(process.env.STRIPE_SECRET_KEY && process.env.STRIPE_PRICE_ID);
|
||||
}
|
||||
|
||||
export function getStripe() {
|
||||
const secretKey = process.env.STRIPE_SECRET_KEY;
|
||||
if (!secretKey) {
|
||||
throw new Error('STRIPE_SECRET_KEY is not configured');
|
||||
}
|
||||
|
||||
if (!stripeClient) {
|
||||
stripeClient = new Stripe(secretKey);
|
||||
}
|
||||
|
||||
return stripeClient;
|
||||
}
|
||||
|
||||
export function getStripePriceId() {
|
||||
const priceId = process.env.STRIPE_PRICE_ID;
|
||||
if (!priceId) {
|
||||
throw new Error('STRIPE_PRICE_ID is not configured');
|
||||
}
|
||||
|
||||
return priceId;
|
||||
}
|
||||
|
||||
export function getStripeWebhookSecret() {
|
||||
const webhookSecret = process.env.STRIPE_WEBHOOK_SECRET;
|
||||
if (!webhookSecret) {
|
||||
throw new Error('STRIPE_WEBHOOK_SECRET is not configured');
|
||||
}
|
||||
|
||||
return webhookSecret;
|
||||
}
|
||||
Reference in New Issue
Block a user