* Add subscription start, trial end, and end dates to db * Add subscription start, trial end, and end date to db * Write subscription start date on new team subscriptions * Write subscription start date for new orgs * Fix typo in stripe billing service file (billling -> billing) * Use `StripeBillingService.extractSubscriptionDates` * Remove comments * Address comment * Fix typo in file import * Fix typo in file import * Add missing SubscriptionStatus enum values - Add INCOMPLETE, INCOMPLETE_EXPIRED, UNPAID, PAUSED enum values - These values are referenced in stripe-billing-service.ts status mapping - Fixes type errors in billing-related code Co-Authored-By: joe@cal.com <j.auyeung419@gmail.com> --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
26 lines
939 B
TypeScript
26 lines
939 B
TypeScript
import { StripeBillingService } from "@calcom/features/ee/billing/stripe-billing-service";
|
|
|
|
export async function getCustomerAndCheckoutSession(checkoutSessionId: string) {
|
|
const billingService = new StripeBillingService();
|
|
const checkoutSession = await billingService.getCheckoutSession(checkoutSessionId);
|
|
const customerOrCustomerId = checkoutSession.customer;
|
|
let customerId = null;
|
|
|
|
if (!customerOrCustomerId) {
|
|
return { checkoutSession, stripeCustomer: null };
|
|
}
|
|
|
|
if (typeof customerOrCustomerId === "string") {
|
|
customerId = customerOrCustomerId;
|
|
} else if (customerOrCustomerId.deleted) {
|
|
return { checkoutSession, stripeCustomer: null };
|
|
} else {
|
|
customerId = customerOrCustomerId.id;
|
|
}
|
|
const stripeCustomer = await billingService.getCustomer(customerId);
|
|
if (stripeCustomer.deleted) {
|
|
return { checkoutSession, stripeCustomer: null };
|
|
}
|
|
return { stripeCustomer, checkoutSession };
|
|
}
|