如何让自研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
相关产品推荐
相关产品推荐

