Reagieren-native open link in browser und kehren Sie zu der app

Habe ich eine app zu entwickeln, die in reagieren,-Muttersprachler, die sollten kommunizieren mit einem gateway für Zahlungen, die nach Abschluss der Zahlungsabwicklung (Erfolg oder Fehler), die ich brauche, um zu zeigen, eine Warnung an Benutzer. Zu diesem Zweck öffne ich einen link in WebView und nach, dass ich den Rückgabe-url mit onNavigationStateChange und zeigen Erfolgs-oder Fehlermeldung.

Aber dieser Fluss für Sicherheit Probleme getan werden muß, eine Standard-browser des Geräts.

Aktuelle Code:

const BASEURL = 'https://gatewayURL/?ID=';
let Token = null;
let paymentAccepted = null;
let paymentFactorId = null;

class Gateway extends PureComponent {
  static propTypes = {
    dispatch: PropTypes.func,
    navigation: PropTypes.any,
  }

  componentWillMount() {
    this.props.dispatch(getPaymentStatus());
  }


  _onLoad(webViewState) {
    let url = webViewState.url.toString();
    let isResponseValid = url.includes('backFromGateway');
    if(isResponseValid){
      if(this.props.checkedPaymentStatus != 'checked' ){
        setTimeout(() => {
          this.props.dispatch(setPaymentStatus('checked'));

          let splitedURL = url.split("/");
          paymentFactorId = splitedURL[splitedURL.length -2];
          if(splitedURL[splitedURL.length - 1] === '0'){
            paymentAccepted = true;
            this.props.dispatch(setGatewayResponse('done', paymentFactorId));
          }
          else {
            paymentAccepted = false;
            this.props.dispatch(setGatewayResponse('rejected', paymentFactorId));
          }


          this.props.navigation.navigate('BackFromGateway', { title: '' })
        }, 1000);
      }
    }
  }


  render() {
    const { addNewOrderGatewayToken, checkedPaymentStatus } = this.props;
    token = addNewOrderGatewayToken;
    let view = null;
    if(checkedPaymentStatus !== 'checked'){
      view =  <WebView onNavigationStateChange={this._onLoad.bind(this)} style={styles.container} source={{ uri: `${BASEURL}${token}`  }}/>
    }
    else{
      view = <View></View>
    }

    return (
      <View style={styles.container}>
        {view}
      </View>      
    );
  }
}

Irgendeine Idee?

Dank

  • Ich ganz nicht verstehen, was ist Ihre Argumentation und die Bedeutung hinter webviews Sicherheitsfragen? Gibt es einige Artikel zu diesem Zusammenhang? Webview verwendet die gleiche engine wie Chrome auf dem Handy und ich würde nicht sehen, wie Webview würde sich betroffen in Bezug auf die Sicherheit.
  • Unser local store akzeptiert nur diesen Weg für apps, die online-Zahlung.
InformationsquelleAutor Morteza | 2018-07-10
Schreibe einen Kommentar