发表于: 2019-03-21 14:51:08
1 698
今天完成的事情:(一定要写非常细致的内容,比如说学会了盒子模型,了解了Margin)
首先是介绍下什么是支付模块,支付模块是账户体系一个分支,说到账户体现简单的提一下,账户体系一般分为登陆账户与支付账户,我们在登陆网站或游戏等时候,这个登陆的账号就是登陆账户,而支付账户是在登陆“登陆账户”后在支付系统中进行资金交易的账户&凭证。登陆账户只有一个而一个登陆账户可以有多个支付账户,详情可以看支付宝,在购买基金、定期、保险时我们只登陆了一个账户,而在后台进行交易时却是在我们名下创建了不同的“账户”,进行交易。
前面对支模块介绍完了,我在说说支付模块的组成,支付模块由,支入,支出,存储组成。
类似“能量守恒”定律:能量既不会凭空产生,也不会凭空消失,只能从一个物体传递给另一个物体。这也适用于支付模块。
以支付宝为例子:我们把钱存入支付宝之前需要先在支付宝进行登陆账号的创建(这里涉及任务5我这里略过),在创建成功并登陆之后,这时我们只是单纯的拥有一个登陆账户,我们要向支付宝里转钱那我们还需要进行实名认证&银行卡绑定,而实名认证是由验证四要素组成,他们分别是银行卡号、持卡人姓名、持卡人手机号、持卡人身份证号,输入完成之后验证此四种信息是否一致,并返回验证结果。
这种验证却是一种金融服务项目,是需要我们向提供相关服务的运营商支付一定的报酬的而且验证是需要较长的时间的一般在15S左右完成,但当用户一直输入错误信息且不停的发起验证时就会造成我们成本的增加而另一方面也容易造成用户本身的流失。所以说如何有效合理的利用成本进行MVP开发是我们敏捷开发中重要的一项。所以我们需要在提交给运营商进行验证之前首先要对验证信息进行有效筛选,把一切不符合规范,错误的信息给用提示修改,以减少成本。
(限我就简单的说下,像姓名一般是2-3个字没有一个字的名字却又少数是4个字的名字,如果产品涉及国外那么就需要考虑外国人的英文名所以我建议是10-15位就可以了,身份证是有一二代区别的,二代身份证号码为18位数字,一代证比二代证少了3位数字。所少的数位是:出生年份少了2位,一代证用2位数字表示出生年份,二代证用4位数字表示,还有一个少了末位的效验码,一代证没有效验码,二代证多了1位效验码。所以身份证限制为最少15位最多18位且支持最后一位为字母X的方式,而手机号就限制11为纯数字就可以(如涉及国外就根据相应国家手机号限制位数)。
上面的创建的就是登陆账户,他的属性是用户ID,密码,手机号,昵称组成。在登陆账户下还可以存在许多的支付账户,有用户管理虚拟货币的账户:Q币,战网点、用于支持定时支付的代扣账户:订阅、用户直接支付的零钱账户:支付宝,微信的零钱、第三方支付的账户:支付宝里的定期,基金,保险等账户、银行卡的账户等等,我们需要根据业务需要,来设置这些多种账户。这些账户的属性与登陆账户是不同的除了账户ID、名称、类型外,还需要设置他们是否允许充值,是否允许提现,是否允许透支,是否允许支付,是否允许转账进入,是否允许转账转出,是否有安全保障,是否激活,是否冻结等及他们状态。 在涉及金钱交易时我们还需要主要账户的可用余额而非余额(可用余额=余额-不可用余额)。
交易过程中,金钱从甲方到乙方中(甲方付给乙方),甲方叫做交易主体而乙方叫做交易对手,这种交易是支付账户到支付账户,发生的地方是支付宝,而支付宝我们就叫做支付渠道(支付平台)。所以一个交易需要三方支持,交易主体,支付渠道,交易对手共同完成。一天中无时无刻都在进行着交易,如此巨大的交易行为,如何避免交易中不会出现,A给B支付金钱,结果钱到了C上。所以需要一个成熟的系统用于管理这类信息,而这个管理记录就需要存储所以存储是支付模型中最重要的一部分,。
交易系统中常常说到的是流水,每一笔交易就必须有一个独有的流水号,流水中需要包含很多信息,如交易创建时间、交易最后结束时间、交流类别代码、交易订单信息、交易名称、交易主体、交易对手、交易渠道、交易费用等等信息。所以交易信息是很复杂的。
除了流水我们听的最多的还有银行卡支付,那到底什么是银行卡支付了,其实银行卡支付要分线下,线上。线下基本就是POS机刷卡,而线上支付(1)按照卡的类别,分为贷记卡支付,也叫motopay、ePOS,即信用卡支付;和借记卡支付。按照支付形态,又分为认证支付、网银支付、快捷支付几种形态。银行卡网银支付要求银行卡必须开通在线支付功能,而快捷支付并不需要开通在线支付功能。主要利用支付验证要素(卡号、密码、手机号、CVN2、CVV2等),结合安全认证(例如短信验证码),让持卡人完成互联网支付。
其中认证支付就是在你支付的时候需要跳转至相应的页面进行认证,需要考虑安全控件和浏览器的问题。快捷支付则是初次支付时需要进行绑卡设置,而后续支付中只需要输入支付密码就可以完成支付。相比较快捷支付用户体验更好,认证支付更安全。还有一个和认证支付相似的就是网银支付,区别在于网银支付跳转的是银行提供的支付页面,输入相关信息,还需要U盾等硬件设备,所以我认为认证支付于网银支付其性质都是认证支付。
那到底支付流程是什么样子的了,一般所熟知的流程就是,扫码准备支付,确定金额,选择支付方式,输入支付密码,完成支付。那在我们看不见的后台这流程也是一样的吗?资金是如何流动的了?
以淘宝为例子,我们在确定购买商品后,需先提交订单到后台某个子系统进行订单核对,核对是否存在错误信息,错误订单生成失败,正确后返回一个值(可以假设是需要支付的金钱),把这个值提交到另外一个只负责支付的系统我这里就叫支付系统,到了这里,支付系统根据用户选择的支付方式进行不同API的调用及用户选择银行卡支付,根据不同的银行卡调用各自银行的API进行完成支付,在调用前我认为还需要进行一次验证,验证请求服务的各个字节是否有问题,确认无误后才开始进行支付。这里把支付的数据进行打包发给各自银行的支付系统后,银行那边的支付系统把这个数据包进行解析,解析出银行卡在银行内的状态,状态为正常后进行可用余额验证,余额大于等于支付金额,交易成功,把这笔钱进行结算登记,再把结果发挥给淘宝的支付系统(其实就是支付宝),淘宝收到结果后就开始执行后续存在,结算中的钱再银行收货后再转交给商家,这我就不说了大家都知道。其实在支付之前我们还需要做一步就是绑定银行卡,绑定银行卡的流程比较简单
(2)1.用户必须已经绑定了手机号。该手机号用于修改支付密码;
2.用户需设置了支付密码。支付密码不同于登录密码。
3.针对用户不同状态,绑卡流程上有区别。当然,绑卡是安全操作,要求用户必须登录到系统中。为了避免和服务器端的交互被劫持,所有操作必须在安全链接中进行,即使用https。当用户开始绑卡时,执行如下流程:
4.检查用户是否有手机号。没有则进入设置手机号流程。
5.检查用户是否设置支付密码。如果已经设置,则需要用户输入密码。确认后开始绑卡。否则,也是先进去绑卡后设置密码。
6.用户输入卡号,系统根据卡号判断卡的发卡行,并显示给用户。有些实现,如微信支付,会提供扫卡识码功能。
7.用户输入银行预留手机。对于没有绑过卡的用户,需要用户提供真实姓名和身份证号。对于信用卡,还需要输入cv码和有效期。这一步,卡的信息都收集全了。
8.调用银行绑卡验证接口进行绑卡。这里有一个四要素验证的概念。由于国内要求实名制,所有银行卡都是实名办理的,所以银行可以验证姓名,身份证号,银行卡号和手机号是不是一致的,如果没问题,则会发短信到手机上。
9.用户输入短信验证码并确认绑卡,服务器端将用户实名信息以及短信验证码组合形成报文,发送给银行,执行签约操作。银行侧签约成功后,返回签约号给商户。
END-
明天计划的事情:(一定要写非常细致的内容)
修改总结,并且吧ppt做出来
遇到的问题:(遇到什么困难,怎么解决的)
对支付流程不熟悉,条理性不够,分类体系过于粗糙,无真实例子举例,缺少资金流向和风控内容
收获:(通过今天的学习,学到了什么知识)
对支付流程有了较为熟悉的认识。
评论