- Build complete Next.js CRM for commercial real estate - Add authentication with JWT sessions and role-based access - Add GoHighLevel API integration for contacts, conversations, opportunities - Add AI-powered Control Center with tool calling - Add Setup page with onboarding checklist (/setup) - Add sidebar navigation with Setup menu item - Fix type errors in onboarding API, GHL services, and control center tools - Add Prisma schema with SQLite for local development - Add UI components with clay morphism design system Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
25 lines
616 B
TypeScript
25 lines
616 B
TypeScript
import Stripe from 'stripe';
|
|
import { settingsService } from '@/lib/settings/settings-service';
|
|
|
|
let stripeInstance: Stripe | null = null;
|
|
|
|
export async function getStripeClient(): Promise<Stripe> {
|
|
if (stripeInstance) return stripeInstance;
|
|
|
|
const settings = await settingsService.getAll();
|
|
if (!settings.stripeSecretKey) {
|
|
throw new Error('Stripe secret key not configured');
|
|
}
|
|
|
|
stripeInstance = new Stripe(settings.stripeSecretKey, {
|
|
apiVersion: '2025-12-15.clover',
|
|
typescript: true,
|
|
});
|
|
|
|
return stripeInstance;
|
|
}
|
|
|
|
export function resetStripeClient(): void {
|
|
stripeInstance = null;
|
|
}
|