У меня есть код для оплаты с помощью Stripe checkout
Вот код
async pay(price: number, name: string, description: string) {
const stripe = await loadStripe('***************');
this._subscriptionService.createStripeSession(price, name, description, this.document.location.origin)
.subscribe(async result => {
this.sessionId = result;
const { error } = await stripe.redirectToCheckout({
sessionId: this.sessionId
});
});
}
Теперь он работает хорошо, и после успешного выполнения I go для SuccesUrl, определенного в сеансе, который создан на бэк-энде.
Но мне также нужно отловить результат функции и запустить другую функцию. Как я могу это сделать?
ОБНОВЛЕНИЕ
Здесь createStripeSession
createStripeSession(price: number | null | undefined, name: string | null | undefined, description: string | null | undefined, locationUrl: string | null | undefined): Observable<string> {
let url_ = this.baseUrl + "/api/services/app/Subscription/CreateStripeSession?";
if (price !== undefined)
url_ += "price=" + encodeURIComponent("" + price) + "&";
if (name !== undefined)
url_ += "name=" + encodeURIComponent("" + name) + "&";
if (description !== undefined)
url_ += "description=" + encodeURIComponent("" + description) + "&";
if (locationUrl !== undefined)
url_ += "locationUrl=" + encodeURIComponent("" + locationUrl) + "&";
url_ = url_.replace(/[?&]$/, "");
let options_ : any = {
observe: "response",
responseType: "blob",
headers: new HttpHeaders({
"Accept": "application/json"
})
};
return this.http.request("post", url_, options_).pipe(_observableMergeMap((response_ : any) => {
return this.processCreateStripeSession(response_);
})).pipe(_observableCatch((response_: any) => {
if (response_ instanceof HttpResponseBase) {
try {
return this.processCreateStripeSession(<any>response_);
} catch (e) {
return <Observable<string>><any>_observableThrow(e);
}
} else
return <Observable<string>><any>_observableThrow(response_);
}));
}