本期我们回到支付系统的核心业务,即支付。 每个电商公司的支付系统都或多或少地实现了交易的核心功能,但它们一直在完善,新的需求也不断涌现。 那么本期一开始我们就来梳理一下:支付方式有哪些? 每种付款方式如何运作?
付款和交易
说到支付,就不得不提到交易。 这两个概念在不同的公司是不同的。 我们的定义是,一笔交易就是产生一个订单; 付款是为订单付款。 我们稍后将在单独的主题中讨论订单生成过程。 这次的重点是支付。 就支付行为而言,我们遇到的大部分是单笔支付,其次是转账和退款。 苹果推出订阅支付后,国内支付宝等也纷纷效仿。 一次性付款是我们使用最多的付款方式,即所有付款一次结算。 通过简化单一支付,其他支付方式也可以轻松处理。 此问题主要针对单次付款。
银行卡支付
先从大家熟悉的银行卡支付说起,银行卡支付分为线上支付和线下支付两种形式。 线下支付就是俗称的POS收款,这个内容这里就不介绍了。 网上支付,按照卡的类型分为信用卡支付,也叫ePOS,即信用卡支付; 和借记卡付款。 按支付形式分为认证支付、网银支付和快捷支付。 银行卡网银支付要求银行卡必须开通网上支付功能,而快捷支付则不需要开通网上支付功能。 主要利用支付验证要素(卡号、密码、手机号、CVN2、CVV2等),结合安全认证(如短信验证码),让持卡人完成互联网支付。
认证付款
是指用户在绑定卡时向电商公司提供卡信息。 这样,用户在支付时就不需要输入这些信息,电商公司在服务器端保留用户的账户信息,如身份证号、卡号、手机号等。 用户支付时,无需输入这些内容。 最多可以提供密码或验证码来完成支付。 这基本上不会中断用户体验,因此也是电商公司青睐的支付方式。 但认证支付最受批评的方面是安全性。 一方面,个人信息需要暴露给电商公司。 一旦被盗,资金很容易被盗。 还可以通过手机进行支付。 一旦手机丢失,窃贼就可以轻松使用或转移资金。
快捷支付
快速支付与认证支付类似。 不同的是,绑定卡后,部分银行接口会返回,作为后期支付凭证使用。 无需提供卡号信息,因此电商企业无需在本地保留卡号。 目前主要提供云闪付接口。
网上银行支付
相对而言,网上银行支付安全得多。 网银支付采用云闪付或银行提供的支付接口。 用户必须在页面上输入卡号、密码等验证信息后才能执行支付。 大多数银行还要求用户使用USB盾或其他安全硬件。 但安全性和易用性始终是一对矛盾。 使用网上银行会中断用户体验,增加用户使用难度。 对于使用硬件加密的支付来说,不可能每天随身携带U盘。另外,网上银行主要是在网页上使用。 在手机上,嵌入网上银行页面还是比较难看。
付款流程
我们来看一个具体的例子。 例如,用户在电商系统中购买了200元的商品,然后通过浦发银行卡进行结算,使用快捷支付。 其过程是:
用户在交易界面向交易系统提交订单; 交易系统确认订单无误后,请求支付系统进行结算。 这是在交易系统中完成的,后续的工作进入支付系统。
用户被引导至结账页面,用户确认交易金额、选择支付方式、调用支付系统接口。
支付系统收到支付请求,验证请求各字段是否有问题,确认无误后调用支付网关进行支付。
支付网关请求浦发银行快捷支付接口进行支付。
支付网关接收到支付结果消息后,解析该结果消息,得到结果,并将结果通知交易系统。 这可以通过 URL 或 RPC 调用来实现。
商城系统收到支付结果后,开始进行后续操作。 如果付款成功,就会开始准备发货。 该步骤在交易系统中处理,这里不再介绍。
网银支付相比快捷支付,在步骤4中插入了一个步骤,引导用户进入网银页面输入支付信息。 后续步骤相同。 资本流动也是如此。 在第五步获取返回结果时,大多数银行都会直接同步返回。 云闪付分为同步返回和异步返回。 同步通知操作成功或失败,异步通知扣款成功或失败。 同步和异步操作都需要调用者提供回调URL地址,云闪传会将参数附加到该地址上。 通过解析这些参数就可以得到执行结果。 异步操作一般会有2-3秒的延迟,具体取决于网络和事务处理的复杂程度。
现金周转
上一节讲了支付信息流,那么资金流应该怎么走呢? 第三步,触发资金流向。 资金从用户个人账户转入电商公司账户。 当然,银行也不是傻子,这笔交易会收取手续费。 资金实时到账,手续费一般按月结算。 有些是按交易次数收费,但大多数是按交易金额收费。
点对点快捷支付是一个比较简单的场景,让我们逐步增加难度。 如果支付系统未接入浦发银行,那么对于浦发银行,您必须使用其他支付方式:云闪付或第三方支付。
先说云闪付。 云闪付提供的多种接入方式,也就是常说的快捷支付,在云闪付文档中称为商户侧开放接口。 通过该接口可以实现同业和银行间的资金结算。 无论收款银行是浦发银行还是其他银行,都可以完成结算。 本地和用户的体验是相同的。 云闪付端,后台资金流向处理有所不同。 了解这种资金流向将有助于您了解异常情况下资金流向何处。
如果收款银行也是浦发银行,云闪付发送消息给浦发银行,浦发银行利用内部系统即时完成两个账户之间的转账。
如果收款银行是其他银行,比如工商银行。 银联闪付向浦发银行和工商银行发出指令,完成各自账户资金余额的增减。 对于个人和电商企业来说,这笔资金终于落定了。 但实际的资金流动并不会立即发生。 银联将在半夜清算付款后处理资金。 这个过程是金融机构之间的结算,一般不需要关注。
如果使用第三方支付,用户流程与云闪付相同。 但资金流向会有所不同。 第三方支付一般在浦发银行和工商银行有托管资金。 交易发生后,一般不会出现银行间资金流动。 用户在浦发银行的资金将结算至第三方支付在浦发银行的托管账户,而在工行的资金将从工行第三方支付账户转入客户账户。 这降低了银行间资金流动的成本。
目前国内各大银行均提供快速、直接的接口。 对于电商来说,与哪些银行对接是一个需要考虑的问题。 如何打通银行、渠道、第三方支付。
云闪付支付
一般来说,大多数银行都提供直连和网银接口,但没有必要直连所有银行。 云闪付和第三方支付也提供直接接口,可直接与国内各大银行对接。 并非所有银行都支持云闪付。 这个和云闪付签名的接口有关。 连接时需要查阅云闪付。 从我们的使用情况来看,不支持浦发银行借记卡和邮储银行卡。 另外,交通银行、平安(含原深发展)、微信银行、浦发银行、微信银行,上述银行卡均需通过该地址激活云闪付在线支付服务。
与银行联系
大多数银行提供的银行卡支付接口对于借记卡支付和信用卡支付是不同的。 但有一些善意的银行可以使用一组接口同时开通借记卡和信用卡。 说出并赞扬这些银行:中国工商银行和中国建设银行,它们是世界上最大的银行。 如果其他同学在连接时也发现借记卡和信用卡使用同一个接口,请及时告知。 作为国内最保守的软件团队,我们在对接银行的时候一定要做好充分的准备。 业务谈判完成,拿到银行的接口文档后,需要考虑两个问题:专线问题和加密问题。

专线问题
首先是专线问题。 大多数银行连接都需要专用线路。 与银行沟通时,注意收集以下信息:
前端机IP,这个需要在银行侧和电商侧配置。 专线实际上是银行和电商公司之间建立的局域网,需要双方分配通信IP。 事实上,这两组IP都是经过NAT之后的IP。 银行分配给我们的是电商真实前端机IP经过最外层网络防火墙转换后的IP段。 后者也是转换后的对方真实前端机IP。 之后的IP段。 出于安全考虑,双方都不会暴露真实IP,所以需要NAT。
访问地址:电商侧机房地址。
这些专业术语你可以自行搜索。 他们太专业了,我实际上听不懂。 从可靠性角度考虑,一般建议联通和电信各一条线路。 一旦某一条线路出现问题,并不会导致所有交易终止。 不需要专线的银行接口有:浦发银行、工商银行、交通银行信用卡等。需要专线的有中国银行、农业银行、建设银行等。一般都是专线线路需要1个月左右,包括银行端的申请和建设时间。
加密问题
其次是加密问题。 有些银行,比如中国银行,要求提前使用加密机。 这里加密机的常用功能有3个:
对于开发者来说,加密机的主要作用是防止黑客看到内存中的密码。这不是为了做广告。 国内银行普遍使用江南天安的加密机。
连接云闪付
云闪付连接比银行连接更简单。 无需专线或加密机。 但是,您需要获得 ADSS 认证。 云闪付最近一直在推广接口。 有两套接口,一套在云闪付侧激活,一套在商户侧激活。 前者类似于网银支付,后者类似于快捷支付。 请务必请求访问后一个界面。 基本上看完接口文档就知道怎么写代码了。
接下来,我们将介绍如何连接第三方支付、应用内支付等内容。 敬请关注。