1.支付平台中的一些概念
名词定义:
交易与支付(交易的存在是支付的前提)
交易:一手交钱,一手交货。是买与卖的关系
支付:清偿债权和债务关系
结算:现金结算 - 直接以现金进行支付;转账结算 - 通过银行将款项从付款单位帐户划转入收款单位帐户
支付流程模型:
在传统行业中,会存在专门的收银柜台实体进行对接用户的支付请求。我们在互联网中也逐渐衍生出“收银台”概念,是整个支付生态系统最贴近用户的一个环节。
这是我们在电商系统中常见的收银台模型:
2. 支付后台
用户账户体系:
背景:我们需要给用户建立对应的支付账户,有了账户才会存在资金与数据的归属。
因此,用户在系统中创建账户,我们会记录用户的基础信息(KYC), 机构的基础信息, 账户(务)信息,虚拟金额的数据。
支付核心体系:
该系统负责整个支付交易业务的流程,推送支付交易过程中,用户与平台的双向资金流转,同时也会负责交易后的账务核对,核算以及资金管理和划转。
运营管理体系:
该系统负责支付平台的运营工作,比如提供用户的资料审核,开户,充提的额度,营销活动等。我们通常也会将渠道的管理能力纳入其中,提供渠道的可靠性切换等功能。
风控体系:
该系统负责支付平台的安全,保证出入金的安全
3. 支付系统的技术细节
3.1 订单参数校验
(1)前后端约定使用同一的编码格式,譬如UTF-8,GBK ;对中文的出现我们一般适用UrlEncode处理
(2)字段的缺失检测
目的是检测开放者是否按照约定的开发文档进行字段的填充,以备后续支付流程适用
(3)特殊字符检测
严格意义上来说,我们会检测报文是否会存在换行符,空格或者开发者误加的字段,或者在自定义的附加字段中增加了系统中预留的保留字段(比如我们定义的一个入参为order_id,在附加字段中也存在一个order_id,这样的坏处会导致服务端产生歧义)
(4)数据的合法性校验
首先,我们会按照字段的首字母进行升序或者降序,其次我们会进行入参加密校验,我们一般使用的是非对称加密算法(RSA算法,RSA2算法)
3.2 订单的提交
防重的处理
3.3 支付渠道的获取与路由
- 用户自主选择
- 用户体验好
- 风控和资金受限
- 成本优先
- 稳定性和成功率
3.4 退款流程
3.5 查询接口
我们一般会提供查询订单的接口,用来查询当前订单的状态,涉及到的状态机,一般如下:
- 交易创建,付款完成
- 用户未付款,交易超时关闭
- 支付完成后全额退款
- 交易成功,支付成功
- 交易结束,不可退款
- 进行中的状态