Skip to content

Commit 9adfff3

Browse files
author
Your Name
committed
Stripe In Practice Course
1 parent 671a2d2 commit 9adfff3

File tree

3 files changed

+20
-5
lines changed

3 files changed

+20
-5
lines changed

server/checkout.route.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,10 @@ export async function createCheckoutSession(req: Request, res: Response) {
3131

3232
console.log(session);
3333

34-
res.status(200).send();
34+
res.status(200).json({
35+
stripeCheckoutSessionId: session.id,
36+
stripePublicKey: process.env.STRIPE_PUBLIC_KEY
37+
});
3538

3639
}
3740
catch(error) {

src/app/courses-card-list/courses-card-list.component.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ export class CoursesCardListComponent implements OnInit {
5151

5252
this.checkout.startCourseCheckoutSession(course.id)
5353
.subscribe(
54-
() => {
55-
console.log("Stripe checkout session initialized ...");
54+
session => {
55+
this.checkout.redirectToCheckout(session);
5656
},
5757
err => {
5858
console.log('Error creating checkout session', err);

src/app/services/checkout.service.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
import {Injectable} from '@angular/core';
22
import {HttpClient} from '@angular/common/http';
3+
import {Observable} from 'rxjs';
4+
import {CheckoutSession} from '../model/checkout-session.model';
5+
6+
declare const Stripe;
37

48

59
@Injectable({
@@ -11,8 +15,8 @@ export class CheckoutService {
1115

1216
}
1317

14-
startCourseCheckoutSession(courseId:string) {
15-
return this.http.post("/api/checkout", {
18+
startCourseCheckoutSession(courseId:string): Observable<CheckoutSession> {
19+
return this.http.post<CheckoutSession>("/api/checkout", {
1620
courseId,
1721
callbackUrl: this.buildCallbackUrl()
1822
})
@@ -35,5 +39,13 @@ export class CheckoutService {
3539
return callBackUrl;
3640
}
3741

42+
redirectToCheckout(session: CheckoutSession) {
43+
44+
const stripe = Stripe(session.stripePublicKey);
45+
46+
stripe.redirectToCheckout({
47+
sessionId: session.stripeCheckoutSessionId
48+
});
49+
}
3850
}
3951

0 commit comments

Comments
 (0)