2026 年 7 月,HN 上一条「UPI: Anatomy of a Payment Transaction」把一笔印度支付的内部链路摊开来讲。它的开场白很抓人:「你几秒内付完款。有七个参与方把它办成,而你只看见其中一个。」
一天好几次,大多数人用同一种方式付钱:手机对着二维码、确认跳出来的名字、输金额、按 PIN,绿勾出现,钱付好了。对面那个人手机一震,说钱到了。从头到尾两到三秒。这五幕——扫码、名字加金额、PIN、绿勾、对面的震动——就是作为用户你能看到的全部。其余都藏起来了。
而正是这些藏起来的部分值得看一眼。2026 年 6 月,UPI 单月处理了超过 227 亿笔支付,是全球任何实时支付系统里最高的。这篇文章跟着一笔钱,从扫码走到绿勾,逐方拆开:谁交给谁、每一方查什么、哪里会断。
第一方:App,它碰不到你的钱
你最熟悉的第一环就是 App——PhonePe、Google Pay、Paytm,或者几十个里的某一个。很容易把 App 当成支付系统本身,但它实际干的活很窄。在系统的语言里,它是 TPAP(Third-Party Application Provider,第三方应用提供方):它收集你的意图——付这个人、这个金额——把你要付的对象的名字显示给你看,通过一个它读不到的安全键盘收你的 PIN,然后把指令转交出去。它永远看不到你的 PIN,不持有你的钱,也没有银行牌照。
激烈的竞争几乎全挤在这一层薄薄的壳上,而且格局是倾斜的。PhonePe 和 Google Pay 两家合起来占了约五分之四的 UPI 支付量,其余所有人分剩下的。这个双寡头格局稳了很多年。真正在动的是它底下的排位:比如 Flipkart 2024 年推出的 super.money,靠保底返现,大约一年里从五十名开外爬进前五。顶上两个几乎不动,下面的地板却一直在重排。
但不管竞争多热闹,这些 App 有一件事自己做不到:接入支付网络。为此,它们每一个都得站在一类银行背后。
第二方:赞助银行(PSP)
因为 App 没有牌照、也连不上支付网络,它得向一家叫 PSP(Payment Service Provider,支付服务提供方)的合作伙伴银行「借」这两样东西。赞助行干 App 干不了的事:连中央系统、给你签发代表你的 UPI 地址、以及在最初绑定 UPI 时把你的手机和你的银行账户绑在一起。
UPI 地址里 @ 后面的后缀,暴露的比看起来多:它指的是赞助银行,你用的 App 反而不在其中。以 @ybl 结尾的挂在 Yes Bank,以 @okaxis 结尾的挂在 Axis。PhonePe 的账号跑在 Yes Bank、Axis、ICICI 上;Google Pay 的跑在 Axis、HDFC、ICICI 和 State Bank 上。
现在大 App 普遍同时挂在好几家赞助行上,主要是为了韧性:分散到多家银行,单家银行 outage 不会让整个 App 下线,也没有哪家赞助行要独自扛下 App 的全部量。赞助行自己也有个安静的好处:当付款方和收款方恰好都挂在同一家赞助行时,这家行在自己的账本内就把两个地址都解析了,跳过网络的中央目录——更快,还能省下大约一个派萨的解析费。
所以真正离开你手机的,是 App 组装、由你的赞助行签名的一个请求,不是钱。你看到的五幕里,有三幕发生在这里:扫码、名字加金额、PIN。名字这一幕是网络在确认你扫的地址背后是谁——这是钱动之前你唯一一次能抓出付错人的机会。PIN 由你手机上一个通过认证的组件捕获并加密,传递它的 App 永远学不到它。
第三方:NPCI 交换机,唯一的枢纽
从这一刻起,请求彻底离开你的手。之后发生的一切都在银行和交换机之间,而它从唯一的一个点开始:由 NPCI 运营的中心交换机。NPCI 是运营 UPI 的非营利机构,交换机只有一个。
它的第一个任务是翻译。你付的地址属于收款方自己的赞助行,于是交换机把请求路由过去,那家银行在实际动钱之前把 handle 解析成真实账户。然后它按固定顺序移钱:交换机先让你的银行扣你的款。你的银行是唯一能拆开手机上那个密封 PIN 的一方,所以只有在这里、只有这一刻你的 PIN 被校验——你的银行验证它、确认余额、把钱扣下、回复。只有在扣款被确认后,交换机才去请求收款行给你贷记,并同样等它的确认。钱永远先离场、后到达,顺序不会反过来。
结果由 NPCI 返回给两家赞助行,每家赞助行再传给各自的 App,而不是交换机直接交还给你。你的赞助行告诉你的 App 支付成功了,你看到绿勾;收款方的赞助行告诉收款方的 App,对方手机显示钱到了。
交换机本身几乎不公开自己的内部工作情况,因为没什么可对照的——它只有一个。它的体量体现在它承载的总量上:2026 年 6 月 227 亿笔,而 2016 年刚上线时一个月才几百万笔。
第四、五方:两家银行,真正动钱的地方
真正搬钱的动作,发生在两端:扣付款人款的银行,和给收款人贷记的银行。你大概以为付款端和收款端最忙的银行是同一批。其实不然。
把付款端最忙的银行和收款端最忙的银行各自排名、再一一对应,顺序对不上。付款端是你猜得到的:State Bank of India 大幅领先,后面跟着其他大零售银行,基本和它的客户数一致。收款端就散架了:一家私人银行 Yes Bank 远远甩在前面,拿到的入账份额没有任何一家银行在付款端能接近,而且两年里大约翻了一倍。同一个 Yes Bank 在付款端是个陪跑——它几乎不发起支付,却收到得比谁都多。
原因要回到赞助行那一层,也始于 UPI 变成了什么。大多数 UPI 支付已经不再是人对人,而是人付给商店。两条线在 2022 年 8 月交叉,之后越分越远。一家店的 UPI 码,和你的 handle 一样,由一家赞助行签发;对最大的商户 App 来说,这个赞助行压倒性地是 Yes Bank。所以当你在店里扫一个 PhonePe 的码,贷记先落到 Yes Bank——也就是码背后的那家银行——之后店家再从商户 App 的池子账户里被付出来。「受益行」在这里指签发那个码的银行,而不是店家自己的银行。
哪里会断
没有任何一个跑这种体量的系统能每次都成,而 UPI 特别的地方在于,它把「没成」的时刻也记录得极其精确。每一笔被拒的支付,都被归到两个标题之一。
第一类是业务拒绝:PIN 错、余额不足、触到每日限额。你当时就知道为什么——App 会告诉你原因,而且原因在你这一侧。第二类是技术拒绝:链条里某家银行的系统或交换机本身,有一步没完成。这种失败的表现是「银行服务器挂了」「你银行服务器没响应,请重试」之类的话,你这一侧没有任何东西能解释它。
把两类逐年摆在一起,分化很明显。最近大约每 11 笔有 1 笔被拒,但不到 1/400 是因为轨道本身。而且缺口在拉大:技术拒绝连年下降,从一百笔里超过一笔降到不到四百分之一,因为银行和交换机被不断加固;业务拒绝没降,反而升了。
所以轨道越跑越可靠,而失败的支付越来越多地败在跟轨道无关的原因上。日常的崩,是机器在强制执行它自己的某条规则,撑不住的从来不是机器本身。
这跟 outage 给人的印象相反。UPI 确实全国范围黑过好几个小时,那些日子是真的、也被人记住。但它们罕见。普通一天里,一笔支付几乎从不会因为系统坏了而失败;它失败,是因为限额到了、余额太低、或者输错了一位数字。
第三类:系统自己也叫不出结果的那种
还有第三种情况,既不算干净成功,也不算干净拒绝:系统自己一时没法给出结论的那笔支付。
记得钱永远先离场、后到达。几乎总是到达也在同一瞬间被确认,你根本不知道中间有过缝隙。但偶尔,确认没回来——扣款已经发生,贷记还在路上。这种悬而未决的支付,要靠一套对账和安全网接住:超时未确认的交易进入待查,资金在两端不一致时由 NPCI 的清算和对账流程拉平。这也是为什么有时候你会遇到「钱扣了但对方没收到」——绝大多数情况下它会在对账循环里被纠正,真丢的情况极少。
这件事为什么值得一个工程师读
UPI 的架构没有任何一处是「炫技」。它把职责切得很碎:App 只收集意图,赞助行借出牌照和连接,交换机只做翻译和顺序担保,银行才是真正动钱的地方。PIN 永远只在付款人的银行被拆开,钱永远先扣后贷——这两条规定把「信任」这件事压到了最小的暴露面上。
对一个系统工程师来说,UPI 最值得看的是它的失败数据:它把所有拒绝都打标、归类、公开趋势。技术拒绝逐年下降这条曲线,比任何「我们很可靠」的宣言都有力。系统大到这种体量,真正的成熟度在于「出错时说得清是哪一类错、错在谁那一侧」。
本文的素材来自公开信息和社区讨论。如果你对这个话题有更深入的一手经验,欢迎指出文中的不足。
参考链接:
- UPI: Anatomy of a Payment Transaction(timeseriesofindia.com):https://timeseriesofindia.com/economy/reads/upi-architecture/
- HN 讨论:https://news.ycombinator.com/item?id=48875414
- NPCI 官方 UPI 页面:https://www.npci.org.in/what-we-do/upi/product-overview