@@ -41,11 +41,14 @@ export async function createCheckoutSession(req: Request, res: Response) {
41
41
42
42
await purchaseSession . set ( checkoutSessionData ) ;
43
43
44
+ const user = await getDocData ( `users/${ info . userId } ` ) ;
45
+
44
46
let sessionConfig ;
45
47
46
48
if ( info . courseId ) {
47
49
const course = await getDocData ( `courses/${ info . courseId } ` ) ;
48
- sessionConfig = setupPurchaseCourseSession ( info , course , purchaseSession . id ) ;
50
+ sessionConfig = setupPurchaseCourseSession ( info , course ,
51
+ purchaseSession . id , user ? user . stripeCustomerId : undefined ) ;
49
52
}
50
53
51
54
console . log ( sessionConfig ) ;
@@ -64,8 +67,9 @@ export async function createCheckoutSession(req: Request, res: Response) {
64
67
65
68
}
66
69
67
- function setupPurchaseCourseSession ( info : RequestInfo , course , sessionId : string ) {
68
- const config = setupBaseSessionConfig ( info , sessionId ) ;
70
+ function setupPurchaseCourseSession ( info : RequestInfo , course , sessionId : string ,
71
+ stripeCustomerId :string ) {
72
+ const config = setupBaseSessionConfig ( info , sessionId , stripeCustomerId ) ;
69
73
config . line_items = [
70
74
{
71
75
name : course . titles . description ,
@@ -79,14 +83,19 @@ function setupPurchaseCourseSession(info: RequestInfo, course, sessionId: string
79
83
}
80
84
81
85
82
- function setupBaseSessionConfig ( info : RequestInfo , sessionId : string ) {
86
+ function setupBaseSessionConfig ( info : RequestInfo , sessionId : string ,
87
+ stripeCustomerId :string ) {
83
88
const config : any = {
84
89
payment_method_types : [ 'card' ] ,
85
90
success_url : `${ info . callbackUrl } /?purchaseResult=success&ongoingPurchaseSessionId=${ sessionId } ` ,
86
91
cancel_url : `${ info . callbackUrl } /?purchaseResult=failed` ,
87
92
client_reference_id : sessionId
88
93
} ;
89
94
95
+ if ( stripeCustomerId ) {
96
+ config . customer = stripeCustomerId ;
97
+ }
98
+
90
99
return config ;
91
100
}
92
101
0 commit comments