一、支付前置
着业务定制化对交易支付需求复杂度的增加,交易系统保证系统稳定的同时,亦需灵活性以支持业务。但系统设计时,灵活和稳定是矛盾的,稳定意味着剥离变化,灵活意味着可配置化。
支付前置的职责即:解决支持业务变化的扩展性,将交易通过支付前置的配置转化为后端支付系统能统一处理的模式,方便后端多样化的记账需求。
支付前置的定义
业务产品码:
交易系统各类交易接口包装成业务产品(提现、充值等)后,将对应的支付请求发送到支付前置系统,前置系统根据业务产品编码和本身的支付业务配置关系,生成对应的业务支付订单并处理后续流程。
支付产品码:
由于即时到账、担保交易在业务规则上不同,但支付渠道侧判断均为支付,因此支付产品码相同,但业务产品码不同。这里的支付产品编码配置来自于支付协议的配置,一个支付产品编码代表着一个支付协议。
二、支付协议
支付协议即对支付模式、支付服务的封装。
以收单支付为例,某个业务方在支付系统开设支付权限后,可理解为与支付系统本身签署了收单支付协议,即可通过交易系统对外输出担保交易产品、即时到账产品来使用收单支付的能力。
此时交易侧定义的两个业务产品码,与支付侧的收单支付产品编码为多对一关系,交易系统调用前置系统时,根据交易产品代码和支付协议的配置,对应生成一条收单支付的请求,前置系统根据该请求转化为对应的付款订单(支付协议的明细项,比如通过网银、现金、快捷等方式发起支付),然后根据对应支付模式、业务支付类型生成业务支付订单,且将业务支付订单转化为支付指令去执行下游系统的流程。
提现协议:
定义支付的原子级支付形态,所有的支付行为都是账户资金的流转,可梳理出以下几个支付类型:
指令即支付核心的工单号,前置的每笔支付订单对应着一笔甚至多笔指令。指令里包含了这笔支付订单是原始支付类型(充值、提现、转账、退款,指令一定是基于原始支付类型来生成的,任何支付行为都能被原子类型所支持),对应着的业务请求类型、支付方式、支付产品编码、参与方信息(交易中收付款人的信息)、相关联的支付指令信息(退款时用于关联原支付指令)、支付服务流程等相关信息;由支付指令去调用支付服务流程时,再根据流程编排环节去确定何时生成账务类操作指令和清算类操作指令。
举例:用户在电商网站购买一本书价格 100 元,通过支付宝付款,交易类型为担保交易,在交易核心生成一笔担保支付的订单,调用支付核心系统时支付系统判断该业务调用方对应已经配置了「收单支付协议」,且根据对应协议生成一笔业务类型为第三方支付的支付订单,基于此订单生成了第一条充值的支付指令。