簡體   English   中英

從我的 react-native 應用程序調用 UPI 應用程序在 iOS 中有效,但在 Android 中無效

[英]Invoking UPI apps from my react-native App works in iOS but not in Android

我正在嘗試使用deep links調用一些常見的 UPI 應用程序( Google PayPhone PayPayTM )。


openPaymentApp = async (payApp) => {
    let url = '';
    switch(payApp) {
        case 'PAYTM'   : url = 'paytmmp'; break;
        case 'GPAY'    : url = 'gpay'; break;
        case 'PHONEPE' : url = 'phonepe'; break;
    }
    url = url + '://upi/pay?pa=7024293076@upi&pn=DK Bose&mc=0000&tr=123456789ABCDEFG&tn=HelloWorld&am=11&cu=INR'
    console.log('URL : ',url);
    try {
        await Linking.openURL(url);
    }
    catch (err) {
        console.error('ERROR : ',err);
    }
}

render(){
    return (
        <View style={{alignItems:"center",justifyContent:"center",flex:1}}>
            <Button title='PAYTM'    onPress={() => this.openPaymentApp('PAYTM')}/>
            <Button title='GPAY'     onPress={() => this.openPaymentApp('GPAY')}/>
            <Button title='PHONE PE' onPress={() => this.openPaymentApp('PHONEPE')}/>
        </View>
    );
}

它在 iOS 中運行良好,即在打開相應應用程序的深層鏈接時,應用程序會自動跳轉到 UPI 支付頁面,其中預先填寫了 VPA、名稱、金額、注釋等字段。

但是在 Android 我有以下問題:

  • GPay :應用程序無法打開。
  • Paytm :應用程序打開但 go 到 UPI 付款頁面
  • PhonePe :應用程序打開但 go 到 UPI 付款頁面

當我嘗試使用默認的 upi 深層鏈接時,在 android 上它會彈出一個 UPI 應用程序 select。 但是那里只列出了 Google Pay 和 iMobile(來自 ICICI),Paytm 和 Phonepe 沒有在該彈出窗口中列出。

upi://pay?pa=7024293076@upi&pn=DK...

iOS 和Deeplinks的 UPI 支付應用程序的深層鏈接是否不同?

還需要做什么才能打開應用程序並移動到預填字段的 UPI 支付頁面?

這些 android 應用程序的工作深層鏈接是:

支付寶:

paytmmp://pay?pa=your@vpa&pn=YourName&tn=Note&am=1&cu=INR

電話:

phonepe://pay?pa=your@vpa&pn=YourName&tn=Note&am=1&cu=INR

支付寶

tez://upi/pay?pa=your@vpa&pn=YourName&tn=Note&am=1&cu=INR

我正在以一種方式解決,但這不是我所知道的最佳解決方案。 到目前為止,我正在通過將其重定向到 params 中的瀏覽器並從瀏覽器中打開意圖鏈接來解決問題。

例子-

www.website.com?paymentinfo=intent://pay?pa=payu@axisbank&pn=company LIMITED&tr=12703860471&tid=COBya9xXv2VWZ7Zc&am=4.00&cu=INR&tn=OrderId-COBya9xXv2Vupi;package=com.phonepe.cheme=VWZ7C# S.browser_fallback_url=https://play.google.com/store/apps/details?id=com.phonepe.app&hl=en_IN;end

收到付款信息后,我使用window.open(paymentinfo)在瀏覽器中打開

這是您正在尋找的解決方案。 代碼應如下所示:

 openPaymentApp = async (payApp) => {

    let url = '';
    switch(payApp) {
        case 'PAYTM'   : url = 'paytmmp://'; break;
        case 'GPAY'    : url = 'tez://upi/'; break;
        case 'PHONEPE' : url = 'phonepe://'; break;
    }
    url = url + 'pay?pa=7024293076@upi&pn=DK Bose&mc=0000&tr=123456789ABCDEFG&tn=HelloWorld&am=11&cu=INR'
    console.log('URL : ',url);
    try {
        await Linking.openURL(url);
    }
    catch (err) {
        console.error('ERROR : ',err);
    }
}

render(){
    return (
        <View style={{alignItems:"center",justifyContent:"center",flex:1}}>
            <Button title='PAYTM'    onPress={() => this.openPaymentApp('PAYTM')}/>
            <Button title='GPAY'     onPress={() => this.openPaymentApp('GPAY')}/>
            <Button title='PHONE PE' onPress={() => this.openPaymentApp('PHONEPE')}/>
        </View>
    );
}

希望這可以幫助。 干杯!

我已嘗試此鏈接,但顯示任何錯誤顯示此圖像出了點問題,請稍后再試

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM