You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让自研UPI应用成为UPI支付选项?已配置Intent Filter

让你的UPI应用出现在支付可选列表的完整配置方案

你的现有Intent Filter配置不够完整,系统无法识别它为UPI支付的处理应用,需要补充必要的配置项:

1. 完善Manifest中的Intent Filter配置

修改你的Activity声明,补充category和更具体的data属性:

<activity android:name=".YourPaymentActivity">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <!-- 必须添加这两个类别,否则系统不会将应用列入可选列表 -->
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <!-- UPI标准scheme -->
        <data android:scheme="upi" />
        <!-- UPI支付请求的标准host -->
        <data android:host="pay" />
        <!-- 匹配所有UPI支付相关路径 -->
        <data android:pathPattern="/*" />
    </intent-filter>
</activity>
  • DEFAULT类别:让应用能被隐式Intent唤起;
  • BROWSABLE类别:允许应用通过浏览器或其他应用的链接唤起;
  • host="pay":这是UPI支付请求的标准目标主机,缺少它系统不会识别你的应用为UPI支付处理方。

2. 正确处理接收的UPI Intent

除了获取Intent,还需要解析其中的支付参数并处理请求,示例代码:

val intent = intent
if (Intent.ACTION_VIEW == intent.action) {
    intent.data?.let { uri ->
        // 解析UPI核心支付参数
        val paymentAddress = uri.getQueryParameter("pa") // 付款方UPI地址
        val payeeName = uri.getQueryParameter("pn") // 收款人名称
        val amount = uri.getQueryParameter("am") // 支付金额
        val currency = uri.getQueryParameter("cu") // 币种,默认INR

        // 这里添加你的支付逻辑,比如跳转至付款确认页面
    }
}

3. 测试验证

用adb命令模拟UPI支付请求,检查你的应用是否出现在可选列表:

adb shell am start -a android.intent.action.VIEW -d "upi://pay?pa=test@upi&pn=TestMerchant&am=10.00&cu=INR"

内容的提问来源于stack exchange,提问作者AndroidWithD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 03:05:11