我正在我的离子应用程序中集成支付网关,我在服务器端使用节点js。点击按钮,我使用离子本机inAppBrowser将用户重定向到支付网关页面,之后我正在收听网址事件。付款成功后,浏览器将重定向到成功URL,否则它将重定向到失败的URL。基于此,我正在处理应用程序中的UI。我的问题是,当我听到成功/失败的网址并调用关闭浏览器事件时,我收到此错误。
未捕获的TypeError:this.browser.close不是函数
我也尝试过hide()方法但是我得到了同样的错误。 以下是我的代码。
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { Http } from '@angular/http';
import { InAppBrowser, InAppBrowserEvent } from '@ionic-native/in-app-browser';
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
event : any;
browser:any;
failed : boolean = false;
success : boolean = false;
constructor(public navCtrl: NavController, private http: Http,private iab: InAppBrowser) {
}
payment(){
this.browser = this.iab.create('http://192.168.0.59:3000/post').on("loadstop")
.subscribe((ev: InAppBrowserEvent) => {
if(ev.url == "http://192.168.0.59:3000/failure"){
console.log("payment failed");
this.failed = true;
this.closeBrowser();
}else if(ev.url == "http://192.168.0.59:3000/success"){
console.log("payment success");
this.success = true;
}
});
}
closeBrowser(){
this.browser.close();
}
}
我也在真实设备上测试应用程序,因此没有任何cordova或平台问题......请告诉我我犯的是什么错误。 对答案的正确描述对我将来的参考文献非常有帮助。
答案 0 :(得分:3)
尝试在构造函数中添加以下行:
this.browser = this.iab.create('http://192.168.0.59:3000/post');
您也可以将const用于此目的,如:
const browser = this.iab.create('http://192.168.0.59:3000/post');
然后,在付款方式中只做
this.browser.on("loadstop")
.subscribe((ev: InAppBrowserEvent) => {
// check conditions according to logic
});
如果在构造函数中使用const browser
,则可以使用browser.on()。然后在closeBrowser()方法中,this.browser.close();
将起作用。