Skip to content

Commit a865070

Browse files
author
Your Name
committed
Stripe In Practice Course
1 parent 7eacde6 commit a865070

File tree

2 files changed

+34
-2
lines changed

2 files changed

+34
-2
lines changed

src/app/services/checkout.service.ts

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import {HttpClient, HttpHeaders} from '@angular/common/http';
33
import {Observable} from 'rxjs';
44
import {CheckoutSession} from '../model/checkout-session.model';
55
import {AngularFireAuth} from '@angular/fire/auth';
6+
import {AngularFirestore} from '@angular/fire/firestore';
7+
import {filter, first} from 'rxjs/operators';
68

79
declare const Stripe;
810

@@ -15,7 +17,8 @@ export class CheckoutService {
1517
private jwtAuth:string;
1618

1719
constructor(private http:HttpClient,
18-
private afAuth: AngularFireAuth) {
20+
private afAuth: AngularFireAuth,
21+
private afs: AngularFirestore) {
1922

2023
afAuth.idToken.subscribe(jwt => this.jwtAuth = jwt);
2124

@@ -56,5 +59,22 @@ export class CheckoutService {
5659
sessionId: session.stripeCheckoutSessionId
5760
});
5861
}
62+
63+
waitForPurchaseCompleted(ongoingPurchaseSessionId: string):Observable<any> {
64+
return this.afs.doc<any>(`purchaseSessions/${ongoingPurchaseSessionId}`)
65+
.valueChanges()
66+
.pipe(
67+
filter(purchase => purchase.status == "completed"),
68+
first()
69+
)
70+
}
5971
}
6072

73+
74+
75+
76+
77+
78+
79+
80+

src/app/stripe-checkout/stripe-checkout.component.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { Component, OnInit } from '@angular/core';
22
import {ActivatedRoute, Router} from '@angular/router';
3+
import {CheckoutService} from '../services/checkout.service';
34

45
@Component({
56
selector: 'stripe-checkout',
@@ -14,7 +15,8 @@ export class StripeCheckoutComponent implements OnInit {
1415

1516
constructor(
1617
private route: ActivatedRoute,
17-
private router: Router) {
18+
private router: Router,
19+
private checkout: CheckoutService) {
1820

1921
}
2022

@@ -24,6 +26,16 @@ export class StripeCheckoutComponent implements OnInit {
2426

2527
if (result == "success") {
2628

29+
const ongoingPurchaseSessionId = this.route.snapshot.queryParamMap.get("ongoingPurchaseSessionId");
30+
31+
this.checkout.waitForPurchaseCompleted(ongoingPurchaseSessionId)
32+
.subscribe(
33+
() => {
34+
this.waiting = false;
35+
this.message = "Purchase SUCCESSFUL, redirecting...";
36+
setTimeout(() => this.router.navigateByUrl("/courses"), 3000);
37+
})
38+
2739
}
2840
else {
2941
this.waiting = false;

0 commit comments

Comments
 (0)