UPI
UPI(统一支付接口)是印度的即时支付通道,由 National Payments Corporation of India(NPCI)运营。两种 QR 格式并存:简单的 upi://pay URI 方案(简洁,适用于所有 UPI 应用)和 NPCI BR Code, 一个 EMVCo MPM 子集,标签 26 中包含承载 VPA 的 Merchant Account Information。到 2024 年,UPI 每月处理超过 110 亿笔交易;每个印度银行和支付应用程序都支持它。
标准规范:NPCI UPI Product Overview 和 NPCI OC 97, Standardization of UPI QR Code Format。
URI 方案:
上级规范:EMVCo MPM v1.1。UPI 在 BR Code 格式中保留商户账户标签
监管机构:印度储备银行(RBI), 发布 UPI 通知;NPCI 是运营商。
URI 方案:
upi://pay?pa=VPA&pn=NAME&am=AMT&cu=INR, 最简单的 UPI QR 格式,适用于所有 UPI 应用。 上级规范:EMVCo MPM v1.1。UPI 在 BR Code 格式中保留商户账户标签
26。 监管机构:印度储备银行(RBI), 发布 UPI 通知;NPCI 是运营商。
两种 QR 格式
- upi:// URI 方案。简单的 URL 编码支付意图,被每个面向消费者的 UPI QR(小商家的 Paytm/Google Pay/PhonePe 贴纸)使用,可被任何 UPI 应用读取。
- NPCI BR Code(EMVCo MPM)。带有 UPI Merchant Account Information 标签
26的 TLV 编码格式,用于统一/可互操作的 QR(Bharat QR)和更大的企业部署,QR 可同时携带 UPI + RuPay + 银行卡。
upi:// URI 方案, 参数
| 参数 | 名称 | 必填 | 说明 |
|---|---|---|---|
pa | 收款人地址(VPA) | 是 | 格式:user@handle。例:alice@oksbi、merchant@paytm。 |
pn | 收款人姓名 | 是 | URL 编码,显示给付款人用于确认。 |
am | 金额 | 否 | 十进制字符串:10.00。静态"输入金额"QR 可省略。 |
cu | 货币 | 否 | 始终为 INR,按规定 UPI 仅支持 INR。 |
tn | 交易备注 | 否 | 显示给付款人的自由文本备注,最多 50 个字符。 |
tr | 交易参考号 | 否 | 商户提供的对账 ID。 |
mc | 商户类别代码 | 否 | 4 位 ISO 18245 MCC,商户账户必填,P2P 可选。 |
tid | 终端 ID | 否 | POS 终端标识符。 |
url | 发票/产品 URL | 否 | 付款人支付后可打开以获取收据的深度链接。 |
NPCI BR Code, 标签 26 结构
当统一 QR 使用 BR Code 格式而非普通 upi:// 时,UPI 专用载荷以嵌套 TLV 形式存储在标签 26 中:
| 子标签 | 名称 | 长度 | 说明 |
|---|---|---|---|
00 | GUI, 全球唯一标识符 | 可变 | 固定值 upi.npci.org,将方案标识为 UPI。 |
01 | VPA | 可变 | 虚拟支付地址。例:merchant@oksbi。 |
02 | 商户代码 | 可变 | NPCI 分配的商户标识符,用于收单行对账。 |
VPA 格式规则
- 格式:
user@handle, 用户名后跟@和标识支付服务提供商的 PSP 句柄。 - 用户名部分。 3–63 个字符,字母数字加
.、-、_。按规范不区分大小写, 但部分应用将其视为区分大小写(见注意事项)。 - 句柄部分。 由 PSP 分配。常见句柄:
@oksbi(SBI)、@okicici(ICICI)、@okhdfcbank(HDFC)、@paytm(Paytm)、@ybl(PhonePe → Yes Bank)、@ibl(PhonePe → IDFC FIRST)、@apl(Amazon Pay via Axis)。 - 总长度。 含
@最多约 50 个字符。 - 解析。 扫描时,付款人应用通过 NPCI 将 VPA 解析为银行账户。解析结果返回已注册账户持有人姓名,付款人应用显示以供确认。
标准测试向量, upi:// URI 方案
VPA merchant@oksbi,姓名 TEST MERCHANT,固定金额 ₹10.00,参考号 INV-2026-0001:
upi://pay?pa=merchant@oksbi&pn=TEST%20MERCHANT&am=10.00&cu=INR&tn=Invoice%20INV-2026-0001&tr=INV-2026-0001最小"输入金额"静态贴纸:
upi://pay?pa=merchant@oksbi&pn=TEST%20MERCHANT&cu=INR常见注意事项
- VPA 大小写敏感性的实际情况。 NPCI 规范声明 VPA 不区分大小写。但实际上部分应用(旧版 PhonePe、Paytm)会在大小写混合的 VPA 上失败。始终使用小写:
alice@oksbi,而非Alice@OKSBI。 - 收款人姓名的 URL 编码。
pn参数接受需要百分号编码的空格和带重音字符。TEST MERCHANT→TEST%20MERCHANT。未正确解码的应用会在确认界面显示乱码名称。 - 货币必须是 INR。 UPI 依照 RBI 法规仅限 INR。其他
cu值会被静默丢弃或拒绝。国际收款人需遵守 RBI Liberalised Remittance Scheme,不使用 UPI。 - 金额必须为正数。
am=0或am=-5将被拒绝。"输入金额"QR 应完全省略am参数。 - 金额中的 ₹ 符号。 不要在
am值中包含卢比符号或"Rs."。用am=10.00,不用am=₹10.00。 - POS 贴纸覆盖诈骗。 实体 UPI 贴纸是印度有据可查的欺诈手段。攻击者将含自己 VPA 的贴纸覆盖在商家贴纸上。RBI 反欺诈通知要求商家在 QR 旁以印刷文字显示预期 VPA,以便付款人核实。
- GST 与 1099-K 类比。 UPI 商业收据计入 GST 申报。年累计收入超过 ₹20 万卢比的商家须注册 GST;超过 ₹1000 万卢比须在 GST 发票注册门户生成电子发票。UPI 交易数据与 GST 网络(GSTN)共享以进行对账。
- 投资招揽受限。 SEBI 禁止通过 UPI 进行未注册证券招揽。宣传"保证回报"、代币预售或 MLM 方案的 UPI QR 将触发 SEBI 执法。
- 消费者保护(电子商务)规则。 接受付款的印刷 UPI QR 是 2020 年电子商务规则下的商业要约。商家须在 QR 旁展示退款政策。UPI 付款立即终局;退款须作为商家返还付款人的独立 UPI 推送发起。
UPI 应用兼容性
| 应用 | upi:// URI | NPCI BR Code | 说明 |
|---|---|---|---|
| Google Pay (Tez) | 是 | 是 | 按交易量排名第一的 UPI 应用。 |
| PhonePe | 是 | 是 | 完整 UPI + BR Code 支持。 |
| Paytm | 是 | 是 | 完整 UPI + 自有 Paytm 钱包备用方案。 |
| Amazon Pay | 是 | 是 | 通过 Axis Bank(@apl 句柄)。 |
| BHIM | 是 | 是 | NPCI 参考实现,测试的安全基准。 |
| 所有主要银行应用(SBI YONO、ICICI iMobile、HDFC PayZapp、Axis Mobile) | 是 | 是 | 所有已注册 UPI 的银行均在其消费者应用中提供 UPI 支持。 |
| 通用 iOS/Android 相机 | 部分 | 否 | 原生相机解析 upi:// 方案,在较新设备上提供"在 UPI 应用中打开",但不直接渲染 BR Code TLV。 |
参见
- /upi-qr-code/, 带 VPA 验证和实时
upi://编码的 UPI 生成器。 - /standards/emvco/, EMVCo MPM 上级规范。
- /standards/pix/, PIX 巴西,同样使用 EMVCo 标签 26 的姊妹方案。
- /standards/, 返回标准索引。