热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

三节课学懂支付核心(下)|支付学院

充值系统业务流程分析 充值协议处理主体流程图(充值遵守的系统处理原则:先清算,后结算) 充值协议处理主体流程图(充退遵循的系统处理

充值系统业务流程分析

充值协议处理主体流程图(充值遵守的系统处理原则:先清算,后结算)

充值协议处理主体流程图(充退遵循的系统处理原则:先结算,后清算)

后结算处理的充值协议,如阿里国际站的小额担保交易的使用场景,其处理流程如下:

 

充值协议系统级架构和领域模型


系统整体架构

我们从多个视角来快速浏览支付层的整体系统架构:

模型总览

核心业务逻辑

用户进入统一收银台界面,选择了充值渠道以及充值金额,收银台经过规则检查(如安全、渠道等)后,向支付层发起充值协议申请:

清算层在处理完金融机构的清算结果通知后,回执给支付层:

充值指令的状态迁转如图所示:

充退协议领域模型


模型总览

在某些特定商业背景下(如机票平台大客户的充退需求)必须大客户一次性对一笔充值指令的连续多次充退请求,有如下两种实现方式:

方式一:需要清算层在报送银行端时进行恰当的处理,如将支付层报送过来的充退清算指令进行合并,或采取延迟报送银行等手段加以实现;

方式二:产品层加强此类合并充退的组织力度,即支付层、账务/会计、清算层以及对账中心都不为此类业务进行内部业务合并,而是交由产品进行合并,请求支付层的充退已经是合并后的单据;这样的整体代价较小,并且提高了核心系统的业务处理稳定性。

支付层提供的充退协议遵循一笔充值指令最多只能有一笔处于活动状态充退指令的约束;同样的原因,充退协议也不再引入协议明细项,直接建立协议与指令的关系;

  1. 每1充退协议,拥有1到多个充退指令;
  2. 每1充退指令,拥有1到多个充退操作指令;

核心业务逻辑

注:对于后结算充退协议,指令状态直接迁转为已报送清算状态,在等待清算回执后再做账务结算。

充值协议领域模型VS充退协议领域模型

与提现和退票的关系类似,充退也是建立在充值基础之上的特殊协议,都是完成了正向协议的反向资金处理过程;

在前面讲述中将提现协议与退票协议进行合并,反映在模型本身、处理流程以及数据存储等各方面都保持一致。

充值业务边界分析

系统用例边界总图:

业务用例边界总图:

系统用例边界

 

网银充值协议申请

基本流程示意图:

代金卡(充值码)充值协议申请


  1. 网银充值协议申请后所返回的跳转表单对象供收银台跳转至金融机构;而代金卡的充值处理中收银台无需获取跳转表单对象。
  2. 代金卡充值协议需要收取手续费,在报送的协议申请单据中需要指定待冻结的金额;支付层充值领域服务完成充值后即发起对充值账户的冻结处理。

快捷充值协议申请

接受充值清算回执

 

无清算充值协议申请


  1. 以上介绍的各类充值协议其处理过程,都遵循了支付层先记录单据,待清算层完成清算后再由支付层进行结算的处理原则,也就是意味着当清算层回执支付层具体的清算结果时支付层一定是有相应的单据的;而由于COD业务模式的特殊性,物流收到货款后即才支付机构发出通知,以物流订单号作为充值订单号,要求完成此次充值行为。

支付层要严格控制消息的幂等性,不能为中间账户多次充值!

充值后通知事件


  1. 所有成功完成的充值协议,都需要以异步消息方式通知CTU及积分核心系统本充值事件。

支付与清算系统掉单恢复

对于实时完成支付、清算过程的充值协议,需要辅以定时调度任务恢复系统响应超时的掉单充值指令。

充值协议查询

用以解释当前充值订单处理状态,当清算层push相关信息至收银台后,收银台使用此服务获知处理结果并显示用户。

预结算充退协议申请

 

后结算充退协议申请


  1. 针对诸如Migs的渠道,支付层提供了后结算充退协议供使用;与预结算充退协议不同处在于完全依赖清算层的回执才进行账务扣款,并且不存在冻结、解冻以及失败回充的动作;仅在清算层明确回执清算成功后,以实际清算金额(RMB)为准进行账务扣款。

异步充退推进调度

使用分布式任务组件,作为异步充退推进处理的调度策略;这里要完成:

  1. 结算
  2. 清算

异步充退超时调度


  1. 处于结算成本以及客户引导的原因,结算人员对客户发起某些金融机构下的充退是不给予处理的;同时某些充退在申请时其通道是可用的,而推进处理时则发现通道已关闭,此类充退指令则一直处于待推进状态;

接收充退清算回执

当清算层与金额机构清算完毕,业务对账完成后,清算层将清算结果回执给支付层,支付层进行后续处理:

  1. 结算
  2. 业务分流

单笔充退指令取消

允许异步充值指令的取消行为,所遵循的处理原则有:

  1. 外部系统请求支付层取消某一笔充退指令,如果是预结算的,只有该支付指令处于预授权状态放可进行取消;对于后结算充退指令,只要该笔充退指令没有报送至清算层均可被取消;
  2. 预结算充退指令取消要完成账务解冻处理;
  3. 如果当前状态不允许进行取消,则外部系统需要请求清算层进行取消;复核清算层的取消规则后,清算层会以清算失败的状态异步回执支付层,则支付层进行失败回充。

人工充退指令推进


  1. 见上述异步充退推进调度中所使用的独立门面服务,完成结算以及报清算处理过程;

充退汇总查询

独立的门面服务,支付层内部以及外部系统均可使用此服务;用以解释指定的充值指令所对应的所有充退指令集合,包括每笔充退指令的金额、状态等;

可充退额度统计

用以统计每笔充值指令当前可充退金额,如前台会员自助充退则需要获得此统计金额进行控制;

此服务接口可接受批量充值指令的可充退额度统计;

充退高可用性的渠道配置


  1. 目前的识别规则分三个维度:产品、商户(客户)、渠道,实际上充退产品在申请充退协议时从产品和商户的角度来决定。

各类规则配置管理服务

简单的介绍一下引入的各类配置规则包括:

  1. 支付渠道配置管理;
  2. 与收银台相关的过滤配置管理;
  3. 统一的支付能力配置管理;
  4. 支付能力与协议配置管理;
  5. 分流目标管理;
  6. 充值后冻结渠道配置管理

以上各类规则配置,支付层均需开设相应的管理服务供管理平台使用。

业务回执分流器

本讲说的支付层重要的基础设施之一:负责完成与支付业务处理无关的业务回执分流工作;本讲说的回执通讯方式选型为基于ESB的异步通知方式。

业务回执分流注册

本讲有充值/充退背景的业务回执行为,在组装申请单据至支付层时即设置了回执上下文;而其他子系统也可以直接使用业务回执分流器完成回执,可仅注册回执上下文信息;

统一支付能力

设计提现、充值、充退领域服务可配置的支付能力,保证后续的支付等都可以配置各类协议所使用的差异性支付能力。

领域服务监听器

这里将分流器建设成与支付协议无关的系统间共用通讯通道,从而确保分流器本身的稳定性。

业务回执分流器恢复调度

即前文中所提到的分流器默认调度策略:接收到监听器通知但并未执行的、或者采取同步回执通讯方式的,对方应答丢失的两种场景下需要进行再次尝试;当回执次数超过指定的上限后即不再尝试。

业务回执分流器恢复调度


推荐阅读
  • Java虚拟机及其发展历程
    Java虚拟机(JVM)是每个Java开发者日常工作中不可或缺的一部分,但其背后的运作机制却往往显得神秘莫测。本文将探讨Java及其虚拟机的发展历程,帮助读者深入了解这一关键技术。 ... [详细]
  • 一家位于长沙的知名网络安全企业,现面向全国诚聘高级后端开发工程师,特别欢迎具有一线城市经验的技术精英回归故乡,共创辉煌。 ... [详细]
  • 从理想主义者的内心深处萌发的技术信仰,推动了云原生技术在全球范围内的快速发展。本文将带你深入了解阿里巴巴在开源领域的贡献与成就。 ... [详细]
  • 深入探讨:Actor模型如何解决并发与分布式计算难题
    在现代软件开发中,高并发和分布式系统的设计面临着诸多挑战。本文基于Akka最新文档,详细探讨了Actor模型如何有效地解决这些挑战,并提供了对并发和分布式计算的新视角。 ... [详细]
  • 深入解析:存储技术的演变与发展
    本文探讨了从单机文件系统到分布式文件系统的存储技术发展过程,详细解释了各种存储模型及其特点。 ... [详细]
  • 本文探讨了使用Python实现监控信息收集的方法,涵盖从基础的日志记录到复杂的系统运维解决方案,旨在帮助开发者和运维人员提升工作效率。 ... [详细]
  • 本文探讨了互联网服务提供商(ISP)如何可能篡改或插入用户请求的数据流,并提供了有效的技术手段来防止此类劫持行为,确保网络环境的安全与纯净。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 本文总结了一次针对大厂Java研发岗位的面试经历,探讨了面试中常见的问题及其背后的原因,并分享了一些实用的面试准备资料。 ... [详细]
  • 本文探讨了在一个物理隔离的环境中构建数据交换平台所面临的挑战,包括但不限于数据加密、传输监控及确保文件交换的安全性和可靠性。同时,作者结合自身项目经验,分享了项目规划、实施过程中的关键决策及其背后的思考。 ... [详细]
  • 菜鸟物流用户增长部现正大规模招聘P6及以上级别的JAVA工程师,提供年后入职选项。 ... [详细]
  • 深入理解云计算与大数据技术
    本文详细探讨了云计算与大数据技术的关键知识点,包括大数据处理平台、社会网络大数据、城市大数据、工业大数据、教育大数据、数据开放与共享的应用,以及搜索引擎与Web挖掘、推荐技术的研究及应用。文章还涵盖了云计算的基础概念、特点和服务类型分类。 ... [详细]
  • 在Qt框架中,信号与槽机制是一种独特的组件间通信方式。本文探讨了这一机制相较于传统的C风格回调函数所具有的优势,并分析了其潜在的不足之处。 ... [详细]
  • 本文介绍了如何利用X_CORBA实现远程对象调用,并通过多个示例程序展示了其功能与应用,包括基础的Hello World示例、文件传输工具以及一个完整的聊天系统。 ... [详细]
  • PGXC中的两阶段提交机制及其对事务一致性的保障
    PGXC作为一款基于PostgreSQL的分布式数据库系统,利用Sharding技术将数据分散存储于多个数据库实例中。本文探讨了PGXC的两阶段提交过程及其实现事务强一致性的方法。 ... [详细]
author-avatar
来去匆匆4_362
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有