Android Chrome 110版本无法打开UPI支付Intent问题排查
UPI支付链接在Chrome 110(Android 12 诺基亚设备)无法打开的排查方案
问题描述
在Chrome 110 + Android 12 + 诺基亚设备上点击UPI支付链接无任何响应,但以下环境可正常触发支付流程:
- Chrome 110 + Android 11 + 一加设备
- Safari 16 + iOS 16
- 移动端Firefox
示例UPI链接代码:
<a target="_self" href="upi://pay?tr=202101345671229366&tid=121313202101345671229366&pa=juspay@axisbank&mc=1234&pn= Merchant%20Inc&am=1.00&cu=INR&tn=Pay%20for%20merchant">Link3</a>
可能的故障原因
- Android 12的URI Scheme限制:Android 12对自定义URI协议(如
upi://)的唤起逻辑做了调整,诺基亚设备的系统定制可能进一步限制了第三方浏览器直接唤起UPI应用。 - 厂商定制版Chrome差异:诺基亚预装的Chrome是定制版本,对URI Scheme的解析或唤起逻辑做了修改,而一加设备的Chrome保留了原生行为。
- UPI应用兼容性问题:设备上安装的UPI应用(如Google Pay、Paytm)可能未适配Android 12的唤起规则,或与诺基亚系统存在兼容性冲突。
- 链接参数格式不规范:示例链接中
pn= Merchant%20Inc包含前置空格,虽然多数环境可兼容,但部分严格的解析逻辑会因此拒绝处理该链接。
排查与解决办法
1. 修正链接参数格式
先移除pn参数中的前置空格,避免因格式问题导致解析失败:
<a target="_self" href="upi://pay?tr=202101345671229366&tid=121313202101345671229366&pa=juspay@axisbank&mc=1234&pn=Merchant%20Inc&am=1.00&cu=INR&tn=Pay%20for%20merchant">Link3</a>
2. 添加唤起失败的 fallback 逻辑
通过JavaScript检测URI唤起是否成功,若失败则引导用户手动复制链接或打开UPI应用:
document.querySelector('a[href^="upi://"]').addEventListener('click', function(e) { e.preventDefault(); const upiUrl = this.href; const startTime = Date.now(); // 尝试唤起UPI应用 window.location.href = upiUrl; // 3秒后检查页面是否仍活跃,判断唤起是否失败 setTimeout(() => { if (Date.now() - startTime < 3500) { alert('无法自动唤起UPI应用,请复制链接到UPI应用中打开'); navigator.clipboard.writeText(upiUrl); } }, 3000); });
3. 检查系统与应用权限
引导用户执行以下操作:
- 确认Chrome拥有「唤起其他应用」的权限(路径:设置 > 应用 > Chrome > 权限)
- 将设备上的UPI应用更新至最新版本
4. 尝试使用Android Intent唤起
针对Android设备,可直接通过Intent指定UPI应用包名唤起,绕开浏览器的URI解析限制:
<!-- 唤起Google Pay --> <a href="intent://pay?tr=202101345671229366&tid=121313202101345671229366&pa=juspay@axisbank&mc=1234&pn=Merchant%20Inc&am=1.00&cu=INR&tn=Pay%20for%20merchant#Intent;scheme=upi;package=com.google.android.apps.nbu.paisa.user;end">打开Google Pay支付</a>
注意:不同UPI应用的包名不同,需根据目标应用调整package参数(如Paytm的包名是net.one97.paytm)。
内容的提问来源于stack exchange,提问作者Ashish Yadav
相关产品推荐
相关产品推荐

