feat: add Stripe pricing IDs to configuration and update plan price retrieval

This commit is contained in:
Arthur Belleville 2026-03-16 08:32:31 +01:00
parent c481f2c577
commit e73268ab31
No known key found for this signature in database
2 changed files with 12 additions and 6 deletions

View file

@ -12,6 +12,9 @@ export interface AppConfig {
STREAM_CHAT_API_SECRET: string;
STRIPE_SECRET_KEY: string;
STRIPE_WEBHOOK_SECRET: string;
STRIPE_SOLO_PRICE_ID: string;
STRIPE_TEAM_MONTHLY_PRICE_ID: string;
STRIPE_FOUNDER_PRICE_ID: string;
EMAIL_USER: string;
EMAIL_CLIENT_ID: string;
EMAIL_CLIENT_SECRET: string;
@ -88,6 +91,9 @@ export function createConfig(secrets?: Secrets): AppConfig {
STRIPE_WEBHOOK_SECRET: isTestMode
? validateEnvVar("STRIPE_WEBHOOK_SECRET", process.env.STRIPE_WEBHOOK_SECRET)
: getStripeWebhookSecret(isStagingMode),
STRIPE_SOLO_PRICE_ID: validateEnvVar("STRIPE_SOLO_PRICE_ID", process.env.STRIPE_SOLO_PRICE_ID),
STRIPE_TEAM_MONTHLY_PRICE_ID: validateEnvVar("STRIPE_TEAM_MONTHLY_PRICE_ID", process.env.STRIPE_TEAM_MONTHLY_PRICE_ID),
STRIPE_FOUNDER_PRICE_ID: validateEnvVar("STRIPE_FOUNDER_PRICE_ID", process.env.STRIPE_FOUNDER_PRICE_ID),
EMAIL_USER: validateEnvVar("EMAIL_USER", process.env.EMAIL_USER),
EMAIL_CLIENT_ID: validateEnvVar("EMAIL_CLIENT_ID", process.env.EMAIL_CLIENT_ID),
EMAIL_CLIENT_SECRET: isTestMode

View file

@ -77,16 +77,16 @@ const isInfinitePrice = (price: StripePriceRow): boolean => {
);
};
const getPlanPriceId = (plan: CheckoutPlan): string | null => {
const getPlanPriceId = (config: AppConfig, plan: CheckoutPlan): string | null => {
if (plan === "solo") {
return process.env.STRIPE_SOLO_PRICE_ID ?? null;
return config.STRIPE_SOLO_PRICE_ID ?? null;
}
if (plan === "team") {
return process.env.STRIPE_TEAM_MONTHLY_PRICE_ID ?? null;
return config.STRIPE_TEAM_MONTHLY_PRICE_ID ?? null;
}
return process.env.STRIPE_FOUNDER_PRICE_ID ?? null;
return config.STRIPE_FOUNDER_PRICE_ID ?? null;
};
const findStripeCustomerByUserId = async (
@ -244,7 +244,7 @@ const createCheckoutSession = (
let quantity = 1;
if (plan) {
priceId = getPlanPriceId(plan);
priceId = getPlanPriceId(config, plan);
if (!priceId) {
return c.json({ error: `Missing Stripe price configuration for plan: ${plan}` }, 500);
}
@ -253,7 +253,7 @@ const createCheckoutSession = (
quantity = Math.max(1, ownerContext.billingState.member_count);
}
}
if (!priceId) {
return c.json({ error: "priceId is required" }, 400);
}