5

我正在尝试使用Google Pay.Phone PayPayTMdeep links


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:应用程序打开但未转到 UPI 付款页面
  • PhonePe:应用程序打开但未转到 UPI 付款页面

当我尝试使用默认的 upi 深层链接时,在 android 上它会弹出一个选择 UPI 应用程序的窗口。但是那里只列出了 Google Pay 和 iMobile(来自 ICICI),Paytm 和 Phonepe 没有在该弹出窗口中列出。

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

DeeplinksiOS 和 Android 的 UPI 支付应用程序是否不同?

还需要做什么才能打开应用程序并移动到预填字段的 UPI 支付页面?

4

3 回答 3

2

这些 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
于 2021-04-19T19:18:02.710 回答
0

我正在以一种方式解决,但这不是我所知道的最佳解决方案。到目前为止,我正在通过将其重定向到 params 中的浏览器并从浏览器中打开意图链接来解决问题。

例子-

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

收到付款信息后,我使用window.open(paymentinfo)在浏览器中打开

于 2021-04-09T10:30:13.100 回答
0

这是您正在寻找的解决方案。代码应如下所示:

 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>
    );
}

希望这可以帮助。干杯!

于 2021-05-02T07:46:11.960 回答