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

iOS Swift中使用URL Scheme调用UPI支付(PhonePe/GPay)报错排查

UPI支付URL Scheme问题排查

以下是你的URL Scheme存在的核心问题及修正方案:


问题1:无效的URL路径结构

你的两个支付URL中都存在upi://pay的错误格式,正确的UPI支付路径应为upi/pay(单斜杠分隔)。双斜杠会导致支付应用无法正确解析请求路径,直接触发错误。

问题2:缺少回调URL参数

要获取支付成功的状态返回,必须在URL中添加url参数,指定你的应用自定义Scheme作为回调地址。这样支付完成后,支付应用会跳转回你的应用并携带支付状态参数。

问题3:重复URL编码的备注参数

tn参数中的Pay%2520to%2520MOFSL是双重编码的结果(%25是%的URL编码,导致%20被二次编码),正确的编码应为Pay%20to%20MOFSL(单次URL编码)。重复编码可能导致支付应用无法正确显示付款备注,甚至解析失败。


修正后的URL示例

PhonePe修正后URL

phonepe://upi/pay?pa=Motilal2005@hdfcbank&pn=MOFSL&mc=6021&tr=uft_2288932c6345a5&tn=Pay%20to%20MOFSL&mode=03&am=100&cu=INR&url=your-app-scheme://upi-callback

GPay修正后URL

tez://upi/pay?pa=Motilal2005@hdfcbank&pn=MOFSL&mc=6021&tr=uft_2288daf8bd45a5&tn=Pay%20to%20MOFSL&mode=03&am=100&cu=INR&url=your-app-scheme://upi-callback

注:将your-app-scheme替换为你在Info.plist中注册的应用自定义URL Scheme


后续回调处理

支付完成后,支付应用会通过你指定的url参数跳转回你的应用,你需要在代码中处理这个回调:

UIKit实现

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
    guard let components = URLComponents(url: url, resolvingAgainstBaseURL: false),
          let queryItems = components.queryItems else {
        return false
    }
    
    // 获取支付状态
    if let status = queryItems.first(where: { $0.name == "status" })?.value {
        if status == "SUCCESS" {
            // 处理支付成功逻辑
        } else {
            // 处理支付失败/取消逻辑
        }
    }
    return true
}

SwiftUI实现

@main
struct YourApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
                .onOpenURL { url in
                    guard let components = URLComponents(url: url, resolvingAgainstBaseURL: false),
                          let queryItems = components.queryItems else {
                        return
                    }
                    
                    if let status = queryItems.first(where: { $0.name == "status" })?.value {
                        if status == "SUCCESS" {
                            // 处理支付成功逻辑
                        }
                    }
                }
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 23:32:52