做出海或者接海外支付的开发者,迟早会遇到一个问题:为什么国内那套扫码支付(支付宝/微信)在海外 SaaS、API 的结账页里根本不出现,最后还是绕回了 Visa/Mastercard?
这篇不聊产品,聊支付链路本身——一笔国际线上支付从点击到扣款,中间经过哪些角色,为什么卡组织网络是绕不开的,而扫码方案在这套链路里接不进去。理解了这层,很多"支付报错"和"付不了款"的现象就能解释清楚。
一、一笔卡支付的清算链路
线上刷一张国际卡,背后大致是这么一条链路:
持卡人 → 商户 → 收单行(Acquirer) → 卡组织网络(Visa/MC) → 发卡行(Issuer)
↓
授权/拒绝
关键角色:
- 收单行(Acquiring Bank):商户侧的银行,负责把交易请求送进卡组织网络。Stripe、Adyen 这类支付服务商本质是收单环节的聚合方。
- 卡组织网络(Card Scheme):Visa/Mastercard 的清算网络,负责路由和清结算规则。
- 发卡行(Issuing Bank):持卡人这张卡的发行方,最终决定授权还是拒绝。
一笔支付的"成功/失败",决策权在发卡行,而路由和风控规则由卡组织网络定义。这就是为什么同一张卡在不同商户表现不一样——链路上每个角色都可能拒。
二、为什么扫码方案接不进这条链路
支付宝/微信的扫码支付走的是另一套清结算体系,不在 Visa/Mastercard 网络里。海外互联网商户的结账页,集成的是 Stripe/Adyen 这类卡收单通道,收银台能调起的支付方式取决于商户接了哪些通道。
支付宝海外(Alipay+)主要接的是东南亚、日本的线下实体零售收单,和"海外互联网商户的线上卡收单"是两条完全不同的路。所以你在 OpenAI、Shopify 这类平台的结账页看不到支付宝选项——不是它不想支持,是两套清算网络压根没打通。
这也解释了几个常见现象:
- 海外网页结账只能填卡号 → 因为商户只接了卡收单通道。
- 海外消费汇率差异 → 卡支付走卡组织的中间价,扫码方案走自家牌价,本就是两套定价。
- 不能做 P2P 转账 → 扫码消费是"商户收单"模型,不是账户间转账模型。
三、链路视角下,海外卡支付为什么会被拒
理解了链路,card_declined 这类报错就不玄学了,常见拒付点对应链路上的不同角色:
| 报错现象 | 决策角色 | 根因 |
|---|---|---|
| card_declined / not supported | 卡组织/发卡行 | 卡 BIN 国家被风控路由拦截 |
| 3D Secure failed | 发卡行 | 二次验证(OTP)未通过/超时 |
| region not available | 商户/收单 | IP 与卡 BIN 国家不一致 |
| do_not_honor | 发卡行 | 发卡行侧风控/额度问题 |
其中 BIN(卡号前 6 位) 是整条链路最先被读取的字段——卡组织和商户都靠它识别卡的发行国家并决定路由和风控策略。这是国内 BIN 的卡在海外平台高频被拒的根本原因,和卡里有没有钱无关。
四、几个工程视角的术语
- BIN(Bank Identification Number):卡号前 6 位,标识发卡机构和国家,是路由和风控的第一判据。
- 3DS / 3D Secure:卡组织定义的持卡人二次验证协议,目的是把欺诈责任从商户转移回发卡行。
- MCC(Merchant Category Code):商户类目码,卡组织据此对不同行业施加差异化风控,比如 7311(广告)属高风险类。
小结
一笔国际线上支付的本质,是"商户收单 → 卡组织路由 → 发卡行授权"这条链路在跑。扫码支付走的是另一套不互通的清算体系,所以接不进海外互联网商户的收银台。看懂这条链路,你就能从角色和字段的角度去定位支付失败,而不是靠不停重试碰运气。
延伸阅读:跨境支付不同场景的链路差异和对照梳理,可参考这份整理:跨境支付场景方案