【转】快捷⽀付详解--⽐较详细
现代⽀付系统设计相关的博客地址
快捷⽀付指⽤户在电商⽹站上执⾏⽀付时,不需要输⼊卡信息,仅根据短信或者其他的验证⽅式确认⾝份后,就可以执⾏扣款的⽀付⽅式。这是⽬前电商⽹站采⽤的主要⽀付⽅式。快捷⽀付分为⾸次⽀付和⾮⾸次⽀付,他们的流程是不⼀样的,区别就在于⾸次⽀付的时候,⽤户需要绑卡。⽽⾮⾸次⽀付则是直接使⽤已经绑定的卡来执⾏扣款,仅需做⾝份验证就⾏。注意,这⾥介绍的是电商⽹站为业务提供的快捷⽀付接⼝,⽽不是银⾏或者其他渠道提供给电商的快捷⽀付接⼝。
⼀、⽀付场景
快捷⽀付第⼀步是要求⽤户做绑卡操作。绑卡是将⽤户的银⾏卡信息提供给电商,以后电商就⽤这个信息去银⾏完成⽀付。绑卡实际上是⼀个授权,让⽤户允许商家⾃动从他的账户上扣除资⾦。所以绑卡也叫签约,⽤户和银⾏,商家的三⽅签订的⽀付合约。但我们知道,绑卡对⽤户和商户来说都存在巨⼤风险。如果说⽤户绑卡是图省事,那商户为什么要做这个事?快捷⽀付在⽀付场景上的优势在如下⼏个⽅⾯:
1. 提升⽀付成功率
⽹银⽀付需要⽤户去银⾏开通⽹银,⽽对快捷⽀付来说,这并不是必须的。这样使得可以使⽤快捷⽀付的⽤户体得到扩展。使⽤⽹银⽀付成功率在20%左右,银联直联成功率⼀般在50%左右,银⾏卡直联可以提升到70%左右。这是相当可观的数据。所以,当你看到绑卡送洗⾐粉之类做法时,不需要担⼼商家会不会赔本。
2. 提升⽀付安全性
⽹银是需要⽤户⾃⼰来保证⽀付环境的安全。在⽀付宝推出快捷⽀付和卡通⽀付之前,⽹银还是主要的⽀付⽅式,这导致各种的⽊马,钓鱼病毒肆虐,⽬标之⼀就为窃取⽤户的银⾏卡信息。银⾏发放U盘U盾,各种的证书,都是为了保证⽹银⽀付的安全,这也带来了各种⽀付的不便。哪天忘了带了,就⽆法完成⽀付。⽽快捷⽀付是由商家来保证⽀付信息的安全,可靠性得到保障。当然,⾄于商家如何保证这些信息安全,还有待商榷。总的来说,这也⽐个⼈⾃⼰抵御⿊客⿊产要靠谱多了。
3. 提升⽤户体验
想想⽹银⽀付的流程,⽤户在跳转到银⾏页⾯后,还得插⼊U盾,各种的核对。产品经理应该知道,每增加⼀个操作,都会带来⼀定的掉单率。⽽快捷⽀付仅需在第⼀步完成绑卡后,以后的扣款,最多⼀个短信就搞定了,败家更⽅便。在快捷⽀付中,绑卡和⽀付都不需要和渠道打交道,都是通过服务器来中转。⽽且在绑卡成功后,操作都在服务器上进⾏。这使得这种⽀付⽅式可以跨平台使⽤。⼿机,
PC都可以。甚⾄在其他终端完成绑卡后,可以在电视,嵌⼊式设备上做⽀付。
4. 获取可靠⽀付数据
快捷⽀付还有⼀个很好的副作⽤,那就是得到真实⽤户信息,特别是⾝份证信息、银⾏卡号、⼿机号、验证⽅式、真实姓名等。再结合⽤户的订单信息,⼤家就可以知道为什么淘宝、京东等这些电商⽹站现在的商品推荐会这么精准了。
⼆、绑卡流程
怎么绑卡?我们知道对接银⾏有两种途径,直接对接银⾏接⼝和通过银联来间接对接。这两种情况下绑卡处理也不同。直观的,电商⽹站会在⽤户后台提供⼀个绑卡的⼊⼝,让⽤户直接绑卡。以⽀付宝绑卡流程为例,我们可以体验下:
这⾥有如下要点:
只能绑⾃⼰的卡,这主要从安全⾓度考虑。作为⾃⼰的卡,指银⾏卡在银⾏预留的姓名和⾝份证与⽹站预留的⼀致。
需要⽤户在银⾏侧预留的⼿机号进⾏短信验证。但不是所有银⾏都需要。这个时候,为了统⼀处理,可以考虑⾃⼰发验证短信。
对这个⼊⼝不要指望太多,更多的⽤户是在⽀付中绑卡。也就是提交订单后,发现没有银⾏卡了,就开始绑卡。和纯绑卡流程不同的是,最后⼀步,绑卡成功后,⼀般都同时完成⽀付。有些渠道会提供绑卡并⽀付的接⼝,减少交互次数。
为了保证卡的安全,绑卡有这些前置需求:
1. ⽤户必须已经绑定了⼿机号。该⼿机号⽤于修改⽀付密码。
2. ⽤户需设置了⽀付密码。⽀付密码不同于登录密码。
针对⽤户不同状态,绑卡流程上有区别。当然,绑卡是安全操作,要求⽤户必须登录到系统中。为了避免和服务器端的交互被劫持,所有操作必须在安全协议中进⾏,即使⽤https。
1. 输⼊卡号
⽤户输⼊卡号,系统对卡号执⾏初步验证。验证的依据是卡bin和LUHN算法。参见。当然,还有些系统会提供扫卡识码的功能,⽐如⽀付。扫码识别的准确率可以达到99%,有些卡的卡号颜⾊和背景⾊⼀致的,就会识别出错。如果⽤户没细看,进⼊下⼀步,就会报告错误了,这种错误还⽐较难发现。⾃动识别卡号,还需要考虑在识别错误时如何圆过去的问题。
2. 获取卡信息
⾸次绑卡需要提供卡信息。借记卡需要卡号,⽤户真实姓名和⾝份证,这个所有银⾏都⼀样。(有不⼀样的,留⾔告知,谢谢) 信⽤卡就复杂
点。⼤部分信⽤卡还需提供CV码和有效期。但是如果和银⾏关系好,拿到合适的接⼝,把这两个因素都免了,也是有可能的。
3. 要素验证
⾸先在服务器端做验证。主要是验证卡是否已经被绑过。如果⼀个⽤户有多个账户,系统还需要考虑是否⽀持这些账户都绑到⼀个卡上。接着调⽤银⾏绑卡验证接⼝进⾏绑卡。这⾥有⼀个四要素验证的概念。由于国内要求实名制,所有银⾏卡都是实名办理的,所以银⾏可以验证姓名,⾝份证号,银⾏卡号和⼿机号是不是⼀致的。如果没问题,则会发短信到⼿机上。
这⾥还有⼏个注意点:
1.关于⼿机号。⼤家都知道,银⾏预留的⼿机号⼀般都是办卡的时候留的,过了⼏年,换⼿机了,很多⼈就忘了同步到银⾏。所以很多银⾏就不验证⼿机号。
2.关于验证短信,⼿机号都不是必须的,那短信就可能都不发了。这在流程设计时需要统⼀处理。银⾏不发短信就的⾃⼰发。
3.重复绑卡问题。如果系统⽀持多账户,那不可避免的出现⼀个⼈绑卡到多个账号上。渠道侧绑卡,有接⼝⽀持重复绑卡,有些是不⽀持的。所以如果需要重复绑卡,还得在服务器端处理。
4. 执⾏绑卡
⽤户输⼊短信验证码并确认绑卡,服务器端将⽤户实名信息以及短信验证码组合形成报⽂,发送给银⾏,执⾏签约操作。银⾏侧签约成功后,返回签约号给商户。这⼀个处理逻辑放在⽀付渠道侧介绍。银⾏会返回如下结果:
1. 签约成功:这意味着可以建⽴签约关系。⽽签约关系在⽀付系统中则通过虚拟账户来表⽰。具体的账户设计参见。
2. 重复签约:按照业务考虑是否⽀持重复签约。⼀般针对⼀个银⾏卡仅保留⼀个签约关系,建⽴⼀个虚拟账户。滴答滴答歌词
3. 签约失败:需要提⽰具体失败原因。
三、扣款流程
在完成签约后,⽀付处理就相对简单不少。扣款流程如下:
流程要点:
1. 订单系统⽣成订单后,请求⽀付系统执⾏⽀付;
2. ⽀付服务器⽣成⽀付记录,请求渠道执⾏⽀付。如果该渠道需要短信⽀持,请求渠道。
3. 服务器端在⽣成⽀付记录后,请求渠道执⾏⽀付。对于需要短信验证或者其他⾝份验证⽅式的⽀付⾏为,还需要⾸先请求渠道发送短
信,之后让⽤户输⼊短信验证码。之后将订单、短信验证码、⽀付⾦额送到渠道侧,执⾏⽀付。
这⾥需要关注如下问题:
1. 订单有效期
⽤户必须在订单有效期内完成⽀付。⽀付时,必须为每个订单设置有效期。这个有效期不能太长,⼀般不会超过⼀天。有效期可以从下单开始算,避免使⽤相对⽇期。在执⾏⽀付时,需要验证下订单是否还在有效期内。
2. 同步和异步处理
银联提供的商户侧开通快捷⽀付接⼝,不同步返回最终扣款结果,⽽是通过异步通知的⽅式来返回。异步通知会多次调⽤回调接⼝,直到调⽤成功。所以,⼀个订单⽀付成功的通知,有可能会收到多次回调。
四、解约流程
解约流程⼀般是由⽤户⾃⼰发起。当然,存储在本地的签约信息只是被设置为⽆效,⽽不是实际删除。解约时,还需要注意相关的订单是否都已经完成。
五、退款流程
没有平⽩⽆故的退款。⽀付都是由交易调起的,那退款就都对应的由退货发起的。针对已经扣款成功的交易执⾏退款。如果交易还在进⾏中,⽐如渠道侧还没有返回结果,则执⾏退款会导致状态不可预知。
注意,退款的钱并不⼀定⽴即到账。不同银⾏、不同渠道到账时间不⼀样。
六、接⼝概述
⼀般来说,快捷⽀付需要提供如下接⼝:
1. 签约,也叫“绑卡签约”、“开通交易”等,指⽤户在商户⽹站上开通快捷⽀付的功能,他需要将银⾏卡相关信息提供给电商。
哈尔滨大列巴2. 解约,也叫“解绑卡”,指⽤户取消在该⽹站上的快捷⽀付功能。⼀般也会删除该⽤户在该⽹站上的相关的银⾏卡信息。
3. 扣款,也叫“⽀付”,指⽤户使⽤签约的卡来执⾏⼀笔扣款。
4. 退款,针对已经扣款成功的交易执⾏退款操作,⼀般同时也会把⽤户权益或者对应的订单撤销。并不是所有订单都可以执⾏退款。
5. 查单, 查询某次交易的处理状态。
6. 签约查询,即检查某个⽤户是否已经开通了签约功能。
七、备份通道
由于快捷⽀付是常⽤的⼀个通道,其带来的问题是,如果这个通道出问题了,应该怎么办?回顾之前的⽂章,我们提到过,银⾏卡快捷⽀付
不仅仅只有发卡⾏的通道,银联、第三⽅⽀付也都可以提供银⾏卡快捷⽀付接⼝。就发卡⾏来说,也不仅仅总⾏通道,很多发卡⾏的各省分⾏,由于历史因素,⼿头也有通道资源。这也为我们实现通道切换提供了可能。切换⽀付通道最⼤的问题是如何解决签约。⽐如⽤户原来使⽤⼯⾏快捷⽀付接⼝来完成⼯⾏借记卡⽀付。某⼀天,⼯⾏通知接⼝要维护,不可⽤了,这就需要提前把⼯⾏接⼝切到其他备⽤通道,⽐如银联接⼝。当然,直接切换是不⾏的,和银联还没签约呢。那如何处理备⽤通道?关于备⽤通道的签约时间。可以在⽤户签约到主通道时,同时签约到备⽤通道,这种情况要求备⽤通道必须是⽆短信验证的,否则⼀次签约发两条短信,⽤户必须会怀疑的。还可以在第⼀次⽀付的时候签约,这时候将签约⽀付短信⼀并发出,避免影响⽤户体验。关于通道选择,参考⼀⽂。
⼋、接⼝实现
⼀般来说,快捷⽀付接⼝可以通过封装如下通道接⼝来实现:
1. 当然,⾸先是银⾏⾃⼰提供的快捷⽀付接⼝;
2. 银⾏的代扣接⼝;
3. 银联的客户侧开通Token接⼝。
4. 第三⽅⽀付的代扣接⼝。
九、安全与合规
和银⾏卡对接,特别是快捷⽀付接⼝,有三个重要的合规⽂档,必须通读。
1. 《⾮银⾏⽀付机构⽹络⽀付业务管理办法》(中国⼈民银⾏公告〔2015〕第43号公布)
2. 中国⼈民银⾏关于进⼀步加强银⾏卡风险管理的通知, 银发〔2016〕170号
严禁留存⾮本机构的⽀付敏感信息(包括银⾏卡磁道或芯⽚信息、卡⽚验证码、卡⽚有效期、银⾏卡密码、⽹络⽀付交易
好听的女名字2021国庆节祝福祖国密码等),确有必要留存的应取得客户本⼈及账户管理机构的授权。
各商业银⾏、⽀付机构应在客户端软件与服务器、服务器与服务器之间进⾏通道加密和双向认证,对重要信息关键字段进⾏散列或加密存储,保障信息传输、存储、使⽤安全。
圈内人评价郑爽⾃2016年12⽉1⽇起,各商业银⾏、⽀付机构应使⽤⽀付标记化技术( Tokenization),对银⾏卡卡号、卡⽚验证码、⽀付机构⽀付账户等信息进⾏脱敏处理,并通过设置⽀付标记的交易次数、交易⾦额、有效期、⽀付渠道等域控属性,从源头控制信息泄露和欺诈交易风险。于谦回应微博围观
严格限制使⽤初始交易密码并提⽰客户及时修改,建⽴交易密码复杂度系统校验机制,避免交易密码过于简单(如“111111”、“123456”等)或与客户个⼈信息(如出⽣⽇期、证件号码、⼿机号码等)相似度过⾼。
1. ⽹络⽀付报⽂结构及要素技术规范(V1.0版), 银办发[2016]222号