3 银行卡支付

3.1 支付和交易

  • 支付和交易,这两个概念在不同公司不一样
  • 此处的定义
    • 交易是生成订单;支付是对订单进行付款
  • 就支付行为来说,大部分都是单次支付,其次还有转账和退款
  • 单次支付是用的最多的支付方式,即一次结清所有款项。把单次支付走通了,其他支付方式也容易处理

3.1.1 银行卡支付

  • 银行卡支付:分为线上支付和线下支付
    • 线下支付:通常说的 POS 收单,这里不介绍
    • 线上支付
    • 按照卡的类别,分为贷记卡支付,也叫motopay、ePOS,即信用卡支付;和借记卡支付
    • 按照支付形态,分为认证支付、网银支付、快捷支付
      • 银行卡网银支付要求银行卡必须开通在线支付功能
      • 快捷支付不需要开通在线支付功能
    • 主要利用支付验证要素(卡号、密码、手机号、CVN2、CVV2 等),结合安全认证(例如短信验证码),让持卡人完成互联网支付

3.1.1.1 认证支付

  • 指用户在绑卡时,将卡信息提供给电商。由电商在服务器侧保留用户的账户信息,如身份证号、卡号、手机号。在用户支付时,无需再输入这些内容,最多提供密码或者校验码,就可以完成支付
  • 认证支付基本不会打断用户的使用体验,所以也是电商喜欢的支付方式
  • 认证支付最大问题是安全性
    • 需要向电商暴露个人信息,一旦被窃取,资金就容易被盗走
    • 在手机上执行支付,一旦手机丢失,窃取者就可以轻而易举的使用或者转移资金

3.1.1.2 网银支付

  • 网银支付更安全
  • 网银支付是由银联或者银行提供支付界面,用户必须在页面上输入卡号、密码等验证信息才可以执行支付
  • 大部分银行还要求用户使用 U 盾或其它安全硬件
  • 安全和易用永远是个矛盾
    • 网银使用会打断用户体验,增加用户使用难度
    • 对使用硬件加密的支付,不可能天天带着 U 盘跑
    • 网银主要用在 web 端,在手机端嵌入网银页面,还比较难看

3.1.1.3 快捷支付

  • 快捷支付和认证支付类似,不同点在于绑卡之后,有些银行接口会返回 token,后续使用 token 作为支付凭证,无需提供卡号信息,电商也不需要本地保留卡号
  • 目前主要是银联有提供 token 接口

3.2 支付流程

  • 举例:比如用户在电商系统中买了 200 块钱的东西,然后通过浦发银行卡做结算,用的是快捷支付。这个过程是
    • 1 用户在交易界面上,提交订单到交易系统中;交易系统确认订单无误后,请求支付系统进行结算。这是在交易系统做的,后面工作就进入支付系统
    • 2 用户被引导到收银台页面,让用户确认交易金额,选择支付方式,调用支付系统接口
    • 3 支付系统接收到支付请求,验证请求的各个字段是否有问题,确认无误后,调用支付网关执行支付
    • 4 支付网关请求浦发银行的快捷支付接口执行支付
    • 5 支付网关接收到支付结果报文后,对结果报文做解析,获取结果,并将结果告知交易系统。这可以通过 URL 或 RPC 调用实现
    • 6 商城系统收到支付结果后,开始执行后续操作。如果是支付成功,则开始准备出库。这一步在交易系统中处理,这里不做介绍
  • 上述过程的差异
    • 网银支付在第 4 步插入一个步骤:将用户导航到网银页面输入支付信息,后续步骤一样
    • 在资金流上也是相同
    • 在第 5 步获取返回结果上,一般银行直接同步返回,银联是分为同步和异步返回
    • 同步告知操作成功或者失败,异步告知扣款成功或者失败
    • 同步操作和异步操作都需要调用方提供一个回调的 URL 地址,银联会将参数附加在这个地址上。通过解析这些参数可以得到执行结果
    • 异步操作一般有 2-3 秒的延迟,取决于网络以及该交易处理的复杂度

3.3 资金流

  • 上述支付流程中第 3 步,会触发资金流:资金从用户个人账户上转移到电商公司的账户
  • 当然,这一笔交易银行要收手续费。资金是实时到账的,手续费一般是按月结算。有按交易笔数计费的,但大部分按照交易金额来收费
  • 同行快捷支付比较简单。如果支付系统没有对接浦发银行,那对浦发卡,就得走其它支付方式:银联或者第三方支付
    • 银联快捷:银联提供的多种接入方式,常说的快捷支付,在银联文档中叫商户侧开通 token 接口。通过这个接口,可以实现同行和跨行资金结算。不管收款行是浦发还是其它行,都可以完成结算。对本地和用户来说体验是一样的。而在银联侧,后台资金流处理不一样。了解这个资金流,有助于在异常情况下,了解资金去向
    • 收款行也是浦发银行,银联发报文给浦发,浦发使用内部系统完成两个账户间的转帐,即时完成
    • 收款行是他行,比如工行。银联发指令给浦发和工行,分别完成各自账户上资金余额的增减,对个人和电商来说,这笔资金算是落地了。但实际资金流并不是立即发生。银联会在半夜做清结算后处理这笔资金。这个过程是金融机构之间的清结算,一般不需要关注
    • 第三方支付:对用户来说,处理的流程和银联一样。但资金流会不一样
    • 第三方支付在浦发和工行一般都会有落地的托管资金。发生交易后,一般来说不会产生跨行资金流动。用户在浦发行的钱会被结算到第三方支付在浦发行的托管账户,而在工行的钱,会由第三方支付在工行的账户打到客户账户上。这就降低了跨行资金流动成本
  • 目前国内主要银行都提供快捷和直联的接口。对电商来说,需要考虑对接哪些银行、怎么对接银行、渠道和第三方支付

3.4 银行 Token 支付

  • 一般来说,大部分银行提供直联和网银接口,但不需要直接对接所有银行
  • 银联和第三方支付也提供直联接口,可以直接对接国内主要银行
  • 不是所有银行都被银联支持,这和银联签约的接口有关,需要在对接时咨询银联。如浦发借记卡、邮储银行卡不支持。另外交行、平安(含原深发)、上海银行、浦发、北京银行,上述银行卡需开通银联在线支付业务

3.4.1 对接银行

  • 大部分银行提供的银行卡支付接口,借记卡支付和贷记卡支付是不一样的。但也有银行(工行和建行)可以用一套接口同时开通借记卡和贷记卡。
  • 作为国内最保守的软件团队,和银行对接时务必做好足够的准备。在商务谈判完成、拿到银行的接口文档后,需要考虑两个问题:专线问题、加密问题

3.4.1.1 专线问题

  • 大部分银行对接需要专线。与银行沟通的时候,注意收集如下信息
    • 专线类型:MSTP 类型或 SDH 类型
    • 专线接入点:目前国内主要是联通、电信
    • 封装类型:HDLC 或 PPP
    • 专线代宽:默认是 2M
  • 前置机 IP,需要在银行侧和电商侧进行配置。专线其实是在银行和电商之间建立一个局域网,需要双方分配通讯 IP
    • 这两组 IP 都是 NAT 后的 IP
    • 银行分配给我们的是电商真实的前置机 IP 经过最外端的网络防火墙转换后的 IP 段
    • 后者也是对方的真实前置机 IP 经过转换后的 IP 段
    • 出于安全考虑,双方都不会将真实 IP 暴露出去,所以要 NAT
  • 接入地址:即电商这边机房的地址
  • 从可靠性角度考虑,一般建议从联通、电信各拉一条线路出来。一旦有一个线路出问题了,也不会导致所有交易被终止
  • 不需要专线的银行接口有:浦发、工行、交行信用卡等
  • 需要专线的有中行、农行、建行等
  • 一般专线需要 1 个月左右的时间,包括银行侧的申请、施工时间

3.4.1.2 加密问题

  • 部分银行(如中行)前置要求使用加密机。此处加密机的常用功能有三方面
    • MAC加密(完整性)
    • 支付会话/密码加密(安全性)
    • 密钥交换加密(防截取)
  • 对开发来说,加密机的主要作用,是让黑客都无法从内存中看到密码
  • 国内对接银行一般就用江南天安的加密机

3.4.2 对接银联

  • 对接银联比对接银行简单,不需要专线,不需要加密机
  • 需要获取 ADSS 认证。银联最近在推 Token 接口,有两套接口
    • 一套是银联侧开通,一套是商户侧开通
    • 前者类似网银支付,后者类似快捷支付
    • 务必要求接入后者接口

相关