2016-07-13 10 views

Antwort

6

können Sie dies mit InAppBrowser in ionic 2 tun;

  1. Installiere Inappbrowser cordova Plugin

    Cordova Plugin hinzufügen Cordova-Plugin-inappbrowser

  2. import die Inappbrowser Komponente

    import {InAppBrowser} von 'ionischer-native';

  3. Erstellen Sie eine JavaScript-Skript-Zeichenfolge, die wir im inappbrowser ausführen werden. Dabei erstellen wir dynamisch ein dynamisches Formular und posten Daten in die URL. für die brauchen wir eine HTML-Seite wie redirect.html erstellen und sie im www-Ordnern ablegen, und wir werden diese Datei in dem in App-Browser öffnen und ein Formular an die externen URL aus dieser HTML-Datei

schreiben

eine hTML-Datei erstellen und im www-Ordner der App platzieren redirect.html

<!DOCTYPE html> 
<html> 
<head> 
    <title>Redirecting to the payment page</title> 
</head> 
<body> 
    <b> 
    please wait we are redirecting to the payment page.... 
</b> 
    <form id="ts-app-payment-form-redirect"></form> 
</body> 
</html> 

im compnent tun wie diese

let options = { 
     name: 'tanveer ahmad dar', 
     email: '[email protected]', 
     item_id: 1234, 
     reference: 1234, 
     item_descr: 'description', 
     item_quant: 1, 
     item_valor: 50 * 100 
    }; 

let formHtml:string = ''; 
for(let key in Options){ 
    if (result.hasOwnProperty(key)) { 
     let value = result[key]; 
     formHtml+='<input type="hidden" value="'+value+'" id="'+key+'" name="'+key+'"/>'; 
    } 
} 

let url = "some payment gateway url" 
let payScript = "var form = document.getElementById('ts-app-payment-form-redirect'); "; 
payScript += "form.innerHTML = '" + formHtml + "';"; 
payScript += "form.action = '" + url + "';"; 
payScript += "form.method = 'POST';" ; 
payScript += "form.submit();" ; 
  1. öffnen Sie das inappbrowser und das Skript ausführen, indem ExecuteScript Methode von inappbrowser auf loadstop Ereignis

    if (this.platform.is('cordova')) { 
        let browser = new InAppBrowser('redirect.html', '_blank', 'location=no'); 
        browser.show(); 
        browser.on("loadstart") 
        .subscribe(
         event => { 
         console.log("loadstop -->",event); 
         if(event.url.indexOf("some error url") > -1){ 
         browser.close(); 
         this.navCtrl.setRoot(BookingDetailPage,{ 
          success:false 
          }); 
         } 
         }, 
         err => { 
         console.log("InAppBrowser loadstart Event Error: " + err); 
        }); 
        //on url load stop 
        browser.on("loadstop") 
        .subscribe(
         event => { 
          //here we call executeScript method of inappbrowser and pass object 
          //with attribute code and value script string which will be executed in the inappbrowser 
          browser.executeScript({ 
           code:payScript 
          }); 
         console.log("loadstart -->",event); 
         }, 
        err => { 
         console.log("InAppBrowser loadstop Event Error: " + err); 
        }); 
        //on closing the browser 
        browser.on("exit") 
        .subscribe(
        console.log("exit -->",event); 
        }, 
        err => { 
        console.log("InAppBrowser loadstart Event Error: " + err); 
        }); 
    } 
    

ich getan habe, es so mit gepostet ich die versteckte Form mit Zahlungsdaten an das Zahlungs url mit dieser Methode . es funktioniert reibungslos. ich kann auch die inappbrowser url Änderungen in loadstart und loadstop Ereignisse prüfe ich den inappbrowser auf Erfolg oder Misserfolg Urls Sie

hoffe, das hilft clse kann .. :)

+0

gut .. nicht funktioniert. App stürzt ab, wenn diese Seite geladen wird. –

+0

seine Arbeit in meiner App, können Sie mir Ihren Code zeigen –

+0

großen Dank, es rettete mich eine Menge Zeit –