干货丨绑卡产品设计实战指导
绑卡,即绑定银行卡,是银行卡与账户的一种关联行为。狭义上的绑卡即银行卡与账户的简单关联,广义上的绑卡有通过银行卡信息要素的验证,通过后方便进行后续的支付、提现等动作,也有通过绑卡的形式进行实名认证、找回支付密码等操作。
为了更好的理解本篇文章,建议大家先参考本人知乎专栏文章《银行卡号编码规则及其应用》
一、绑卡目的
1、为后续业务做铺垫
绑定银行卡后,进行快捷支付及提现都将非常方便。快捷支付中,大部分使用代扣通道,通过绑卡的形式进行身份鉴权与签约,银行(第三方)返回绑定号,在支付业务中凭靠绑定号发起扣款指令。
2、验证身份信息要素
包括实名认证和找回支付密码等过程。
实名认证,如借记卡卡号、姓名、身份证号、预留手机号4要素验证中,验证通过下发短信验证码,用户回填验证码,验证通过即可提取姓名、身份证号码作为实名认证信息,并且因下发短信验证码,极大的提高了信息获取门槛。
找回支付密码,同样利用信息要素验证的特性,原则上可确保为本人发起。
二、绑卡需求
- 考虑到移动设备输入易错性,需判断银行卡号输入合法性,如不合法则需进行友好提示;
- 用户输入银行卡号后,系统能智能识别出发卡行及卡种,无需用户手动选择;
- 卡号、姓名、身份证号码、预留手机号等要素验证,对于验证不通过的,应该尽量明确错误原因,并指导用户采取相应解决办法。
三、相关说明
- 本次绑卡仅限常规绑卡,以主流绑卡流程为主;
- 本次绑卡假设已完成实名认证;
- 本次绑卡以APP端为例;
- 本次主要介绍借记卡绑卡过程;
- 本次绑卡主要介绍主流程,细节部分不做过多讨论。
四、绑卡流程
1、 流程图
A、输入卡号并提交后,通过LUHN算法验证卡号输入合法性,可检查出90%以上卡号输入错误,提升用户体验。考虑到极少数银行卡号未按照LUHN算法进行生成,因此,在不符合时,进行友好提示,用户可以选择返回修改或确认无误进入下一步。关于银行卡号生成规则LUHN算法的知识,可参考本人知乎专栏文章《银行卡号编码规则及其应用》
B、银行卡号获取到后,则需根据银行卡号检索银行卡发卡行及卡种等信息,卡BIN数据库需事先准备好,检索流程如下:
我们知道,卡BIN一般是6位组成,并且一般是不会重复,但是确实存在6/7/8/9/10等几位卡BIN长度,而且多位的卡BIN可能和低位的卡BIN前几位会相同,另外也存在卡BIN相同但卡长度不同代表不同银行卡的。因此需要从卡BIN10位向6位检索,并通过卡长度辅助查询,详看上图。
另外,对于数据库检索不到的卡BIN,则可以选择不允许绑卡或用户通过手动形式进行选择银行及卡种,大家可根据实际情况选择。
C、 对于借记卡,一般验证姓名、身份证号、卡号、预留手机号4要素进行验证,因前期以进行实名认证,因此姓名、身份证号码不需再重复输入。现卡号也已获取到,只需再输入预留手机号即可。
预留手机号输入完成提交后,进行姓名、身份证号、卡号、预留手机号4要素验证。对于验证通过的,则下发短信验证码,根据合作方式的不同,此验证码可能由平台自行下发,也可能由银行或第三方支付下发。
D、 用户收到验证码后进行回填并提交,验证无误后绑卡完成,数据库需记录银行或第三方支付返回的绑定号,以便用于日后支付动作。
2、线框图
A、姓名调取实名认证信息,无需用户输入,也不可更改
B、银行卡号长度满12位后方可点击下一步,卡号每隔4位隔开
C、 卡号输入完成点击下一步时,由客户端自行完成LUHN算法对银行卡号合法性进行验证,通过时进入下一步,不通过是进行友好提示,用户可选择返回修改或确认无误
D、银行卡号符合LUHN算法后,检索卡BIN信息,返回发卡行及卡种
E、用户输入手机号,手机号需满足首位为1,长度为11的要求,且进行1XX XXXX XXXX的展示
F、 手机号无误提交进行姓名、身份证号(此两项取自实名信息,无需用户填写)、卡号、预留手机号验证,验证通过则下发短信验证码
G、用户回填短信验证码,无误后绑卡完成,服务端记录卡信息,记录银行(第三方支付)返回的绑定号(如有)
五、嘚瑟一下
原公司APP早期绑卡产品卡BIN信息为通过第三方接口获得,每次接口调用2元。后本人学习到银行卡编码规则及卡BIN规则后,自行制作了一套卡BIN读取系统及相应数据,有如下成就:
1、节省成本:按照20万次的接口调取量,预计可节省约40万元(此处应有掌声!哎呀,似乎没涨工资!);
2、由调用第三方接口改为内部接口,降低了外部的依赖性,也提高了响应速度;
六、课后作业
一般来说,调用银行或第三方支付接口对姓名、身份证号、卡号、预留手机号4要素进行验证时,对方只会返回一致或者不一致,而不会告知哪个或哪几个要素不对。如果返回的是不一致,为了明确错误原因指导用户相应操作,如何确定哪个要素有误?
答案在原文中有相关提示哦。后期会把答案公布出来。
作者:MrColin,支付结算产品经理,略懂技术
申明:如需学习产品层面知识,或对支付结算感兴趣的,可 知乎 @MrColin
本文由 @MrColin 原创发布于人人都是产品经理。未经许可,禁止转载。
题目已说明背景前提客户已经实名认证,故身份证和姓名基本无误,排除二者问题;输入卡号时虽然会会通过卡bin校验,只能通过卡号前4位校验所属银行是否存在,不能校验卡号是否存在,而已经手机号验证验证,说明手机号为本人,故有如下可能情况:
1、卡号输入有误会:卡号已销户、卡号不存在;
2、卡号与手机号不一致;
【解决办法】在银行卡输入页面时显示鉴权协议获取客户授权,可以调取银联接口通过身份信息进行鉴权,判断输入卡号真实性;目前银联返回错误码支持区分该卡不存在、已消户、卡与手机号不一致等;
3、正常的话银行会进行侦测,如果该卡涉及反洗钱等问题,也会绑卡失败;
为什么一定要识别所属银行呢。
个人想法:协助用户判断卡号是否输错。
请教一下,绑定卡选择用扫描功能或者不用扫描功能的考虑是什么,能解读一下吗,支付宝就只能用户输入卡号,而更多的app都使用了扫描的功能。
个人理解
1、安全性:避免用户的银行卡为其他人知晓账户和验证码,可以获取银行卡照片等存证
2、获取信息:获取银行的有效期等
3、APP嵌入ADK,通过识别银行卡,可以获取相关的用户隐私(猜测)
一般此功能仅仅为辅助,识别率较低,
姓名和证件号通过了实名验证,这种情况下返回为信息不一致,那就只有银行卡号和预留手机号后问题,而预留手机号是跟着银行卡号走的,也就是说不存在银行卡号错误但是预留手机确正确的情况,所以会出现三种状态,银行卡号正确且预留手机号正确、银行卡号正确但预留手机号错误、银行卡号错误。
所以这种情况下,我们只要设置校验不合格的卡号不允许绑定,就可以通过第三方返回的状态和校验卡的状态来综合判定是卡错误还是预留手机错误
一般应该是卡号吧
姓名和证件号通过了实名验证,应该是正确的。
手机号收到验证码,应该也是通过了验证。
而且相对而言,姓名、证件号、手机号相对熟悉,输错可能性相对小
好久没看到你的更新了,好期待哦。
我想知道,卡的类型分为对公和对私,如是对公的情况下,步骤还和上面是一致吗?
不错不错 及时雨 感谢
姓名和身份证在前期已通过第三方接口完成了实名认证,因此可以确定4要素中的这2个要素正确无误。具体是卡号错还是预留手机号错,根据文中内容,我还真不知道如何明确判断出。 ➡
如果对支付结算感兴趣,请移步本人知乎专栏《支付结算杂谈》
https://zhuanlan.zhihu.com/mrcolin
我个人认为,一般不告诉你出错原因:1.不好判断,比如登录时候,密码的用户名不匹配,你如何知道到底哪个错了呢?2.即使能够判断,一般这类个人信息,我告诉你是身份证错了,你如何防止别有用心的犯罪呢?那机器破译一下,就能找出正确的身份证号,这样很不安全,所以,一般只会含糊的告诉你不一致,这是出于安全考虑
不错,学习啦
不错,学习知识!正在做这部分