refactor(server): payment service (#8906)

This commit is contained in:
forehalo
2024-12-05 08:31:00 +00:00
parent 4fe1b5ba93
commit 4055e3aa67
26 changed files with 1934 additions and 1537 deletions

View File

@@ -0,0 +1,56 @@
import { UserStripeCustomer } from '@prisma/client';
import {
KnownStripePrice,
KnownStripeSubscription,
SubscriptionPlan,
SubscriptionRecurring,
} from '../types';
export interface Subscription {
status: string;
plan: string;
recurring: string;
variant: string | null;
start: Date;
end: Date | null;
trialStart: Date | null;
trialEnd: Date | null;
nextBillAt: Date | null;
canceledAt: Date | null;
}
export interface Invoice {
currency: string;
amount: number;
status: string;
createdAt: Date;
lastPaymentError: string | null;
link: string | null;
}
export interface SubscriptionManager {
filterPrices(
prices: KnownStripePrice[],
customer?: UserStripeCustomer
): Promise<KnownStripePrice[]>;
saveSubscription(
subscription: KnownStripeSubscription
): Promise<Subscription>;
deleteSubscription(subscription: KnownStripeSubscription): Promise<void>;
getSubscription(
id: string,
plan: SubscriptionPlan
): Promise<Subscription | null>;
cancelSubscription(subscription: Subscription): Promise<Subscription>;
resumeSubscription(subscription: Subscription): Promise<Subscription>;
updateSubscriptionRecurring(
subscription: Subscription,
recurring: SubscriptionRecurring
): Promise<Subscription>;
}