#android #react-native #google-pay #paytm #upi
#Android #react-native #google-pay #paytm #upi
Вопрос:
Я пытаюсь вызвать несколько распространенных приложений UPI ( Google Pay
, Phone Pay
, PayTM
) с помощью deep 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@upiamp;pn=DK Boseamp;mc=0000amp;tr=123456789ABCDEFGamp;tn=HelloWorldamp;am=11amp;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, Name, Amount, Note и т. Д.
Но на Android у меня следующие проблемы :
GPay
: Приложение не открывается.Paytm
: Приложение открывается, но не переходит на страницу платежей UPIPhonePe
: Приложение открывается, но не переходит на страницу платежей UPI
Когда я попытался использовать upi deeplink по умолчанию, на Android он выдает всплывающее окно для выбора приложения UPI. Но там перечислены только Google Pay и iMobile (от ICICI), Paytm и Phonepe не указаны в этом всплывающем окне.
upi://pay?pa=7024293076@upiamp;pn=DK...
Отличаются ли Deeplinks
приложения для оплаты UPI для iOS и Android?
Что еще нужно сделать, чтобы открыть приложение и перейти на страницу оплаты UPI с предварительно заполненными полями?
Комментарии:
1. в моем случае gpay app opend не смог произвести платеж, столкнувшись с проблемой «ваши деньги не были списаны»
Ответ №1:
Рабочие глубокие ссылки для этих приложений Android:
Paytm:
paytmmp://pay?pa=your@vpaamp;pn=YourNameamp;tn=Noteamp;am=1amp;cu=INR
Phonepe:
phonepe://pay?pa=your@vpaamp;pn=YourNameamp;tn=Noteamp;am=1amp;cu=INR
GPay
tez://upi/pay?pa=your@vpaamp;pn=YourNameamp;tn=Noteamp;am=1amp;cu=INR
Комментарии:
1. в моем случае «Ваши деньги не были списаны»
2. Я предполагаю (не знаю, только предполагаю), что UPI каким-то образом блокирует эти ссылки, если они не генерируются каким-либо авторизованным торговым приложением (я думаю, они думают, что они могут быть использованы мошенниками не по назначению).
3. вы нашли решение @Ajith?
Ответ №2:
Я решаю одним способом, но это не лучшее решение, которое я знаю. Пока я решаю проблему, перенаправляя ее в браузер в параметрах, и из браузера я открываю ссылку intent.
Пример-
www.website.com?paymentinfo=intent://pay?pa=payu@axisbankamp;pn=company LIMITEDamp;tr=12703860471amp;tid=COBya9xXv2VWZ7Zcamp;am=4.00amp;cu=INRamp;tn=OrderId-COBya9xXv2VWZ7Zc#Intent;scheme=upi;package=com.phonepe.app;S.browser_fallback_url=https://play.google.com/store/apps/details?id=com.phonepe.appamp;hl=en_IN;end
после получения информации об оплате я открываюсь в браузере с помощью window.open (paymentinfo)
Ответ №3:
Это решение, которое вы ищете. Код должен выглядеть примерно так:
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@upiamp;pn=DK Boseamp;mc=0000amp;tr=123456789ABCDEFGamp;tn=HelloWorldamp;am=11amp;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>
);
}
Надеюсь, это поможет. Приветствия!