Skip to content

Commit cbfd465

Browse files
chore: wip
1 parent bc2323d commit cbfd465

File tree

3 files changed

+62
-6
lines changed

3 files changed

+62
-6
lines changed

storage/framework/core/orm/src/utils.ts

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1058,11 +1058,6 @@ export async function generateModelString(
10581058
hasStripeId(): boolean {
10591059
return manageCustomer.hasStripeId(this)
10601060
}
1061-
1062-
async createOrUpdateStripeUser(options: Stripe.CustomerCreateParams | Stripe.CustomerUpdateParams): Promise<Stripe.Response<Stripe.Customer>> {
1063-
const customer = await manageCustomer.createOrUpdateStripeUser(this, options)
1064-
return customer
1065-
}
10661061
10671062
async addPaymentMethod(paymentMethodId: string): Promise<Stripe.Response<Stripe.PaymentMethod>> {
10681063
const paymentMethod = await managePaymentMethod.addPaymentMethod(this, paymentMethodId)
@@ -1086,6 +1081,20 @@ export async function generateModelString(
10861081
10871082
return defaultPaymentMethod
10881083
}
1084+
1085+
async checkout(items: Array<Stripe.Checkout.SessionCreateParams.LineItem>, sessionOptions: Partial<Stripe.Checkout.SessionCreateParams> = {}, customerOptions: Stripe.CustomerCreateParams = {}): Promise<Stripe.Response<Stripe.Checkout.Session>> {
1086+
const defaultOptions: Partial<Stripe.Checkout.SessionCreateParams> = {
1087+
mode: 'payment',
1088+
customer: await this.createOrGetStripeUser(customerOptions).then(customer => customer.id),
1089+
line_items: items,
1090+
success_url: sessionOptions.success_url,
1091+
cancel_url: sessionOptions.cancel_url,
1092+
};
1093+
1094+
const mergedOptions = { ...defaultOptions, ...sessionOptions };
1095+
1096+
return await stripe.checkout.create(mergedOptions);
1097+
}
10891098
`
10901099

10911100
declareFields += `public stripe_id: string | undefined\n`

storage/framework/core/payments/src/drivers/stripe.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,39 @@ export const balanceTransactions: BalanceTransactions = (() => {
195195
return { retrieve, list }
196196
})()
197197

198+
export interface Checkout {
199+
create: (params: Stripe.Checkout.SessionCreateParams) => Promise<Stripe.Response<Stripe.Checkout.Session>>
200+
retrieve: (sessionId: string) => Promise<Stripe.Response<Stripe.Checkout.Session>>
201+
expire: (sessionId: string) => Promise<Stripe.Response<Stripe.Checkout.Session>>
202+
list: (params: Stripe.Checkout.SessionListParams) => Promise<Stripe.Response<Stripe.ApiList<Stripe.Checkout.Session>>>
203+
listLineItems: (sessionId: string, params?: Stripe.Checkout.SessionListLineItemsParams) => Promise<Stripe.Response<Stripe.ApiList<Stripe.LineItem>>>
204+
}
205+
206+
export const checkout: Checkout = (() => {
207+
async function create(params: Stripe.Checkout.SessionCreateParams): Promise<Stripe.Response<Stripe.Checkout.Session>> {
208+
return await client.checkout.sessions.create(params)
209+
}
210+
211+
async function retrieve(sessionId: string): Promise<Stripe.Response<Stripe.Checkout.Session>> {
212+
return await client.checkout.sessions.retrieve(sessionId)
213+
}
214+
215+
async function expire(sessionId: string): Promise<Stripe.Response<Stripe.Checkout.Session>> {
216+
return await client.checkout.sessions.expire(sessionId)
217+
}
218+
219+
async function list(params: Stripe.Checkout.SessionListParams): Promise<Stripe.Response<Stripe.ApiList<Stripe.Checkout.Session>>> {
220+
return await client.checkout.sessions.list(params)
221+
}
222+
223+
async function listLineItems(sessionId: string, params?: Stripe.Checkout.SessionListLineItemsParams): Promise<Stripe.Response<Stripe.ApiList<Stripe.LineItem>>> {
224+
return await client.checkout.sessions.listLineItems(sessionId, params)
225+
}
226+
227+
return { create, retrieve, expire, list, listLineItems }
228+
})()
229+
230+
198231
export interface Dispute {
199232
retrieve: (stripeId: string) => Promise<Stripe.Response<Stripe.Dispute>>
200233
update: (stripeId: string, params: Stripe.DisputeUpdateParams) => Promise<Stripe.Response<Stripe.Dispute>>

storage/framework/orm/src/models/User.ts

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -701,10 +701,24 @@ export class UserModel {
701701

702702
async retrievePaymentMethod(paymentMethod: string): Promise<Stripe.Response<Stripe.PaymentMethod> | null> {
703703
const defaultPaymentMethod = await managePaymentMethod.retrievePaymentMethod(this, paymentMethod)
704-
704+
705705
return defaultPaymentMethod
706706
}
707707

708+
async checkout(items: Array<Stripe.Checkout.SessionCreateParams.LineItem>, sessionOptions: Partial<Stripe.Checkout.SessionCreateParams> = {}, customerOptions: Stripe.CustomerCreateParams = {}): Promise<Stripe.Response<Stripe.Checkout.Session>> {
709+
const defaultOptions: Partial<Stripe.Checkout.SessionCreateParams> = {
710+
mode: 'payment',
711+
customer: await this.createOrGetStripeUser(customerOptions).then(customer => customer.id),
712+
line_items: items,
713+
success_url: sessionOptions.success_url || `${process.env.APP_URL}/checkout/success`,
714+
cancel_url: sessionOptions.cancel_url || `${process.env.APP_URL}/checkout/cancel`,
715+
};
716+
717+
const mergedOptions = { ...defaultOptions, ...sessionOptions };
718+
719+
return await stripe.checkout.create(mergedOptions);
720+
}
721+
708722
stripeId(): string {
709723
return manageCustomer.stripeId(this)
710724
}

0 commit comments

Comments
 (0)