Add Lemon Squeezy Billing System

This commit is contained in:
giancarlo
2024-04-01 21:43:18 +08:00
parent 84a4b45bcd
commit 8784a40a69
59 changed files with 424 additions and 74 deletions

View File

@@ -0,0 +1,6 @@
import { z } from 'zod';
export const CancelSubscriptionParamsSchema = z.object({
subscriptionId: z.string(),
invoiceNow: z.boolean().optional(),
});

View File

@@ -0,0 +1,6 @@
import { z } from 'zod';
export const CreateBillingPortalSessionSchema = z.object({
returnUrl: z.string().url(),
customerId: z.string().min(1),
});

View File

@@ -0,0 +1,12 @@
import { z } from 'zod';
import { PlanSchema } from '../create-billing-schema';
export const CreateBillingCheckoutSchema = z.object({
returnUrl: z.string().url(),
accountId: z.string().uuid(),
plan: PlanSchema,
trialDays: z.number().optional(),
customerId: z.string().optional(),
customerEmail: z.string().email().optional(),
});

View File

@@ -0,0 +1,5 @@
export * from './create-billing-checkout.schema';
export * from './create-biling-portal-session.schema';
export * from './retrieve-checkout-session.schema';
export * from './cancel-subscription-params.schema';
export * from './report-billing-usage.schema';

View File

@@ -0,0 +1,8 @@
import { z } from 'zod';
export const ReportBillingUsageSchema = z.object({
subscriptionId: z.string(),
usage: z.object({
quantity: z.number(),
}),
});

View File

@@ -0,0 +1,5 @@
import { z } from 'zod';
export const RetrieveCheckoutSessionSchema = z.object({
sessionId: z.string(),
});