3D Secure 2 认证实操:流程、豁免与责任转移
3D Secure 2(下称 3DS2)是卡组织体系内的发卡行认证协议,用来确认一笔交易确实由持卡人本人授权。它在收银台上表现为一次额外的验证环节,在账务上表现为一条可以在争议中援引的认证记录。很多团队把它当成一个开关:开了就更安全,不开就更顺畅。真实情况要复杂得多,3DS2 是一个需要在拒付责任与转化率之间持续调参的机制,而且责任转移有严格的成立条件,不是开了就一定生效。
以下按协议演进、两条流程、责任转移、监管要求与豁免、触发策略、接入形态、双向影响、调优监控八个部分展开。所有涉及卡组织规则、发卡行策略与监管解释的细节,均以各卡组织现行规则、发卡行与收单机构的实际配置为准。本文只描述结构与量级,不给出具体门槛数值。
一、3DS2 与旧版 3DS1 的本质区别
3DS1 的核心是跳转发卡行页面加输入静态密码。它在结构上只有两种结果:验证通过或者验证失败,没有中间状态。这带来两个问题。第一,所有交易都要走一次整页重定向,移动端与 App 内场景体验很差,中途放弃的比例很高。第二,上送的风控信息极少,发卡行基本只能看到一个金额和一个商户名,无法区分老客复购与刚被撞库的卡,于是只能一刀切地要求验证。
3DS2 改的是数据面与交互面。数据面上,认证请求可以携带数十个交易与会话字段,包括设备指纹、收货信息、账户历史、浏览器或 App 环境特征等,发卡行据此做基于风险的决策(risk-based authentication,RBA),对低风险交易直接放行。交互面上,3DS2 不再强依赖整页跳转,支持在商户页面内嵌挑战窗口,原生 App 可以通过 SDK 完成认证,挑战形式也从静态密码扩展到一次性密码、生物识别、银行 App 内确认等。
还有一个容易被忽略的差别:3DS2 的报文是结构化的,认证结果会以明确字段回传给收单方,其中包含用于授权校验的认证值。这个认证值是责任转移能否成立的凭据,字段丢失或错传,等于认证白做。旧协议的黄昏期已经结束,主流卡组织早已停止对旧版本的支持,仍在对接旧版本的通道通常表现为认证失败率异常,这类问题要在接入层排查,而不是在业务层调参数。
二、两种流程:frictionless 与 challenge
3DS2 的第一层分叉是 frictionless 与 challenge。frictionless 指商户端与发卡行之间完成了一轮数据交换与风险判断,但没有向持卡人展示任何额外验证界面,用户体验与普通支付没有区别。challenge 指发卡行要求持卡人完成一次交互验证,形式由发卡行决定,商户只能决定是否接受这个要求。
frictionless 不是跳过认证,它同样产生完整的认证结果与责任转移效力,只是持卡人没有被要求做任何动作。这一点经常被误解:不少团队以为只有弹出验证窗口才算真的做了 3DS,于是在配置上强推 challenge,白白损失了转化率,而责任转移并没有因此变得更强。
challenge 侧真正要看的不是是否出现,而是是否完成。一次挑战从发起、用户提交到发卡行返回结果,中间有超时、跳转丢失、用户放弃等多个失血点。移动端尤其明显:挑战窗口如果不落在应用内,而需要跳到外部浏览器,回跳链路经常断裂。3DS2 的 SDK 方案与带外确认(decoupled,持卡人在另一个设备或银行 App 上确认)就是为了缩短这条链路而设计的。
| 流程 | 触发条件 | 用户体验 | 责任转移 |
|---|---|---|---|
| frictionless | 发卡行依据商户上送的交易字段与自身风险判断,认为风险足够低 | 无额外界面,与普通支付一致 | 成立,前提是认证结果与认证值被正确回传 |
| challenge(同设备验证) | 发卡行判断需要持卡人证明身份,通过一次性密码、生物识别或密码完成 | 页面内或跳转出现验证窗口,需要用户操作 | 成立,前提是挑战成功完成且金额与授权请求一致 |
| challenge 未完成或超时 | 持卡人放弃、网络中断、挑战超时 | 支付中断,用户需重新发起 | 不成立,交易通常以未认证或失败结束 |
| 带外确认(decoupled) | 发卡行要求持卡人在另一设备确认 | 主设备等待结果,体验相对连贯 | 成立,以最终认证结果字段为准 |
上表第三行是很多团队的真实故障点。挑战发起后用户切到银行 App 完成验证,浏览器标签被系统回收,回跳请求没有发出,商户侧只看到"未收到回调"。这类问题在协议层解决不了,要在前端状态机与回调补捞机制上解决,思路可参考 支付回调框架实现指南。
三、责任转移到底转移了什么
责任转移(liability shift)指的是:当一笔交易被判定为持卡人未授权的欺诈交易并产生拒付时,原本由商户或其收单机构承担的损失,按卡组织规则转移到发卡行一侧。它转移的是欺诈类拒付的财务责任,不是所有拒付。商品未收到、货不对板、重复扣款这类争议不在责任转移范围内,依然要靠履约证据去应诉,举证方法见 拒付原因码与举证手册。
3.1 责任转移的成立条件
责任转移不是开了 3DS 就自动生效,它有一组必须同时满足的条件。
第一,认证必须真实完成。frictionless 结果也算完成,但前提是认证结果标识明确为已认证,而不是尝试认证或未认证。
第二,授权请求必须与认证请求金额一致。这是最常出错的环节:用户在收银台先看到预估金额,随后加购、加运费、用优惠券,实际授权金额与认证时的金额不同。金额不一致时,卡组织规则一般不允许商户援引责任转移,即便认证本身成功了。有的实现会在金额变化后重新发起认证,有的干脆放弃转移,两种做法要看业务取舍。
第三,认证凭据必须被正确传递。认证过程中生成的认证值需要随授权请求一起上送,任何环节丢弃或格式错误,发卡行都无法校验,责任转移随之失效。
第四,交易必须走认证过的通道。用非认证通道补单、用离线授权、用测试凭据重放,都不会产生转移效力。
把这四条记牢,就能解释一个典型错觉:为什么 3DS 覆盖率很高,欺诈拒付仍然由自己承担。答案往往在金额不一致或者认证值丢失上,而不是在认证开关本身。
四、PSD2 的 SCA 要求与豁免类型
在欧盟经济区,3DS 不只是可选项,它还承载着 PSD2 下的强客户认证(Strong Customer Authentication,SCA)义务。SCA 的实质要求是:电子支付在发起时,至少使用三类要素中的两类来验证身份,三类分别是持卡人知道的东西(知识)、持有的东西(持有)、本身具有的特征(生物特征)。静态密码加短信验证码的组合,就属于知识与持有的组合。
监管在制定规则时也承认,逐笔强制 SCA 会显著损伤线上支付体验,因此给出了一组豁免类型。豁免的本质是把风险判断权交给某一方,谁获得判断权,谁就承担对应的欺诈责任,这一点在策略选择里非常关键。
| 豁免类型 | 适用逻辑 | 风险承担方 |
|---|---|---|
| 低价值交易 | 单笔金额低于监管与卡组织约定的阈值时可不做 SCA,但同一持卡人累计达到约定笔数后仍会要求认证 | 发卡行,超出累计规则的部分回到常规要求 |
| 可信受益人 | 持卡人在银行侧把某商户加入白名单,此后对该商户的支付可免 SCA | 发卡行,基于持卡人主动授权的信任关系 |
| 交易风险分析(TRA) | 收单侧或商户侧风控对交易评分,认为欺诈概率低于约定参考值时申请豁免 | 收单方或商户,豁免由商户侧发起,欺诈损失也由商户侧承担 |
| 企业支付 | 面向企业的卡支付或对公转账类交易,可适用专门的豁免安排 | 依具体安排而定,通常需要收单机构确认适用资格 |
| 无卡环境(MOTO) | 邮购与电话订购等持卡人不在场场景,本身无法完成标准 SCA,按单独规则处理 | 商户,风险敞口通常更高,费率与拒付条件也随之不同 |
| 定期扣款与协议支付 | 首次交易完成 SCA 后,同商户同金额的后续扣款可视为已授权 | 商户,首次认证是后续扣款免责的基础 |
上表只列名称与适用逻辑。具体金额门槛、累计笔数、评分参考值与各市场落地差异,均以监管原文、卡组织规则与收单机构的实际配置为准,本文不给出数值。需要提醒的是,豁免不等于零风险,尤其是主动申请交易风险分析的团队,省下了验证摩擦,换来的却是自己承担欺诈损失的敞口。
五、什么时候该触发、什么时候该豁免
这是 3DS 策略里最需要业务判断的部分。先给一个反直觉的结论:欺诈率高、客单价高的业务,主动触发 3DS 往往提升整体收益;低客单价、老客复购为主的业务,过度触发会显著伤害转化率。
前者容易理解。客单价高意味着单笔欺诈损失大,拒付处理成本也高,一次成功的责任转移可能抵得上很多笔交易的认证摩擦成本。后者正好相反:单笔金额低,欺诈损失的绝对值小,而每一次挑战都在真实地赶走一部分本来会付款的老客,长期累计是净亏损。
中间地带要靠数据说话,可用的判断口径有三个。第一是按客群分层看认证前后的表现:新客、首单、异地收货、金额显著高于历史均值的订单,风险信号多,倾向触发;老客、稳定收货地址、历史零拒付的账户,倾向豁免。第二是按通道看:不同收单方上送的字段丰富度不同,字段越全,frictionless 命中率越高,触发成本越低。第三是按品类看:虚拟商品、即时交付、易转售的品类,欺诈变现速度快,应更保守。
还有一层容易被漏掉的规则是豁免的责任归属。如果你使用交易风险分析豁免,交易在没有挑战的情况下通过,欺诈损失留在自己这边;如果你主动要求挑战并成功完成,责任转移到发卡行。所以豁免与挑战不是体验与安全的二选一,而是谁承担损失的选择。风控策略的整体框架可参考 支付欺诈防范策略。
六、接入方式:收单方托管还是自成报文
接入层有两种典型形态。第一种是收单方或支付网关托管 3DS 能力:你调用网关接口时附带 3DS 相关参数,网关作为 3DS Server 与目录服务器、发卡行侧组件交互,把挑战地址或认证结果返回给你,你负责把用户送到位并处理回调。第二种是自成报文:你自己或通过专门的 3DS 平台承担 3DS Server 角色,直接对接目录服务器,自己维护协议版本、报文签名与认证流程。
托管形态的优点是上线快、维护成本低,协议升级由服务商负责,你只需处理业务参数与结果。缺点是策略颗粒度受限:哪些字段上送、什么条件下申请豁免、挑战窗口如何渲染,通常只能通过服务商开放的能力调整。它适合绝大多数中小团队与快速上线的场景。
自成报文形态的优点是控制力强,可以针对每一类交易精细决定上送字段与豁免申请,也便于把自有风控信号注入流程。代价是门槛与成本:3DS Server 通常需要通过卡组织的合规认证,协议版本演进要持续跟进,报文与签名出错时的排查责任全在自己。它适合交易量大、风控体系成熟、有专门支付团队的组织。
第三种形态常被忽略:原生 App 的 SDK 接入。它不属于上面两类的前端形态,而是把挑战收进 App 内,避免跳转外部浏览器造成的断链。做 App 业务的团队应优先评估 SDK 方案。无论哪种形态,都要注意沙箱与生产环境的凭据隔离,联调方法见 支付网关沙箱测试。
七、3DS 对成功率与拒付的双向作用
3DS 对两个核心指标的作用方向是相反的,这是所有调优工作的出发点。
对拒付,方向是下降。一部分盗卡交易在发卡行验证环节就被拦下,根本不会进入授权成功阶段;即使有漏网的欺诈交易产生拒付,只要认证真实完成且金额一致,损失会转移到发卡行。所以 3DS 同时降低了欺诈拒付的发生率与单次拒付的净损失。
对成功率,方向通常是下降。挑战本身是额外操作步骤,必然带来放弃;挑战窗口的跳转、加载、超时也会产生技术性失败;还有一部分交易会在发卡行侧因为验证不通过而被拒绝,而在不做 3DS 的情况下这些交易可能本来会通过。
所以正确的评估口径不是开了 3DS 成功率跌了多少,而是把四项放在一起算净收益:欺诈损失减少、拒付处理成本减少、责任转移带来的损失回收、转化与认证失败带来的收入减少。四项相抵为正,就应该扩大触发范围;为负,就应该收紧到只覆盖高风险交易。这个计算没有通用答案,必须用自己的订单数据算,口径可参考 支付成功率优化指南 与 退款与争议处理指南。同时,卡数据安全与合规边界仍需单独评估,见 PCI DSS 合规实务。
八、参数调优与监控清单
调优的前提是能观测。3DS 的很多问题在日志里是看不见的:用户放弃挑战只是一个未完成的订单,不会产生任何错误码。因此必须在上线前把观测点布好,否则调优只能靠猜。
| 观测项 | 需要看什么 | 常见调优方向 |
|---|---|---|
| frictionless 占比 | 认证请求中未触发挑战的比例,按发卡行、卡种、品类拆分 | 占比过低时检查上送字段完整度与字段值是否被截断 |
| 挑战完成率 | 发起挑战到成功返回结果的比例,按端类型拆分 | 移动端偏低时优先考虑 SDK 或应用内挑战 |
| 认证技术失败率 | 超时、报文错误、版本不匹配、签名失败等非用户原因失败 | 与接入方核对协议版本与报文格式,检查回跳链路 |
| 发卡行拒绝分布 | 哪些发卡行、哪些卡组织在认证阶段拒绝较多 | 结合风控数据判断该类交易是否应改为申请豁免 |
| 认证与未认证的授权通过率差 | 同一客群、同一品类的对照组差异 | 差异过大说明挑战伤害了正常交易,需收窄触发条件 |
| 欺诈拒付率变化 | 按原因码与品类拆分,确认责任转移是否真正生效 | 拒付仍由自己承担时,优先核对金额一致性与认证值传递 |
| 金额不一致订单 | 认证金额与授权金额不同的订单数量 | 存在时应重新认证,或明确放弃责任转移 |
| 设备指纹覆盖 | 会话中设备指纹是否成功生成并上送 | 覆盖率异常低通常意味着前端脚本被拦截或加载顺序错误 |
8.1 监控节奏与责任人
上线首周按天看,重点看认证技术失败与挑战完成率;稳定后按周看,重点看欺诈拒付的分布变化;每次大促、每次收银台改版、每次新增市场或卡种之前,都要重新审视触发规则。责任人应明确到风控与支付的交叉角色,避免出现策略没人负责、指标没人解释的状态。
与通道选型和资质相关的判断,可参考 支付合规与备案资质指南;若正在规划更换通道,整套流程见 支付通道迁移实操。常见支持 3DS2 的通道包括 Adyen、Stripe、Checkout.com 与 Braintree,区域覆盖可再看 Nuvei 与 dLocal。更多支付方案可参见 支付 分类。
来源:16IDC 原创,文中涉及的产品能力、费率与准入要求以相关服务商官网文档及合同为准。