专栏名称: 凤凰牌老熊
互联网金融,软件架构,资深Java工程师
目录
相关文章推荐
芋道源码  ·  分享一次 ShardingJDBC ... ·  3 小时前  
芋道源码  ·  告警:MyBatis-Plus中慎用@Tra ... ·  3 小时前  
芋道源码  ·  Guava黑魔法:在日志脱敏场景下的奇遇 ·  昨天  
芋道源码  ·  Spring Boot + ... ·  昨天  
Java编程精选  ·  330个“假补丁”差点混入主线?LinusT ... ·  2 天前  
51好读  ›  专栏  ›  凤凰牌老熊

快捷支付流程剖析

凤凰牌老熊  · 公众号  · Java  · 2017-04-24 23:35

正文

请到「今天看啥」查看全文


这里有如下要点:

  • 只能绑自己的卡,这主要从安全角度考虑。作为自己的卡,指银行卡在银行预留的姓名和身份证与网站预留的一致。

  • 需要用户在银行侧预留的手机号进行短信验证。但不是所有银行都需要。这个时候,为了统一处理,可以考虑自己发验证短信。

对这个入口不要指望太多,更多的用户是在支付中绑卡。也就是提交订单后,发现没有银行卡了,就开始绑卡。 和纯绑卡流程不同的是,最后一步,绑卡成功后,一般都同时完成支付。有些渠道会提供绑卡并支付的接口,减少交互次数。

为了保证卡的安全,绑卡有这些前置需求:

  1. 用户必须已经绑定了手机号。该手机号用于修改支付密码。

  2. 用户需设置了支付密码。支付密码不同于登录密码。

针对用户不同状态,绑卡流程上有区别。当然,绑卡是安全操作,要求用户必须登录到系统中。为了避免和服务器端的交互被劫持,所有操作必须在安全协议中进行,即使用https。

1. 输入卡号
用户输入卡号,系统对卡号执行初步验证。 验证的依据是卡bin和LUHN算法。参见 支付系统之银行卡支付 。 当然,还有些系统会提供扫卡识码的功能,比如微信支付。 扫码识别的准确率可以达到99%,有些卡的卡号颜色和背景色一致的,就会识别出错。 如果用户没细看,进入下一步,就会报告错误了,这种错误还比较难发现。自动识别卡号,还需要考虑在识别错误时如何圆过去的问题。

2. 获取卡信息
首次绑卡需要提供卡信息。借记卡需要卡号,用户真实姓名和身份证,这个所有银行都一样。(有不一样的,留言告知,谢谢) 信用卡就复杂点。大部分信用卡还需提供CV码和有效期。但是如果和银行关系好,拿到合适的接口,把这两个因素都免了,也是有可能的。

3. 要素验证
首先在服务器端做验证。主要是验证卡是否已经被绑过。 如果一个用户有多个账户,系统还需要考虑是否支持这些账户都绑到一个卡上。 接着调用银行绑卡验证接口进行绑卡。这里有一个四要素验证的概念。由于国内要求实名制,所有银行卡都是实名办理的,所以银行可以验证姓名,身份证号,银行卡号和手机号是不是一致的。如果没问题,则会发短信到手机上。
这里还有几个注意点:
1.关于手机号。大家都知道,银行预留的手机号一般都是办卡的时候留的,过了几年,换手机了,很多人就忘了同步到银行。所以很多银行就不验证手机号。 2.关于验证短信,手机号都不是必须的,那短信就可能都不发了。这在流程设计时需要统一处理。银行不发短信就的自己发。
3.重复绑卡问题。如果系统支持多账户,那不可避免的出现一个人绑卡到多个账号上。渠道侧绑卡,有接口支持重复绑卡,有些是不支持的。所以如果需要重复绑卡,还得在服务器端处理。







请到「今天看啥」查看全文