热门标签 | 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的异步通知方式。

业务回执分流注册

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

统一支付能力

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

领域服务监听器

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

业务回执分流器恢复调度

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

业务回执分流器恢复调度


推荐阅读
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 探讨架构师在项目中应如何平衡对产品的关注和对团队成员的关注,以实现最佳的开发成果。 ... [详细]
  • 本文探讨了如何在日常工作中通过优化效率和深入研究核心技术,将技术和知识转化为实际收益。文章结合个人经验,分享了提高工作效率、掌握高价值技能以及选择合适工作环境的方法,帮助读者更好地实现技术变现。 ... [详细]
  • 本文探讨了2012年4月期间,淘宝在技术架构上的关键数据和发展历程。涵盖了从早期PHP到Java的转型,以及在分布式计算、存储和网络流量管理方面的创新。 ... [详细]
  • 2018年3月31日,CSDN、火星财经联合中关村区块链产业联盟等机构举办的2018区块链技术及应用峰会(BTA)核心分会场圆满举行。多位业内顶尖专家深入探讨了区块链的核心技术原理及其在实际业务中的应用。 ... [详细]
  • 本文详细介绍了网络存储技术的基本概念、分类及应用场景。通过分析直连式存储(DAS)、网络附加存储(NAS)和存储区域网络(SAN)的特点,帮助读者理解不同存储方式的优势与局限性。 ... [详细]
  • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
  • 从零开始构建完整手机站:Vue CLI 3 实战指南(第一部分)
    本系列教程将引导您使用 Vue CLI 3 构建一个功能齐全的移动应用。我们将深入探讨项目中涉及的每一个知识点,并确保这些内容与实际工作中的需求紧密结合。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 本文探讨了MariaDB在当前数据库市场中的地位和挑战,分析其可能面临的困境,并提出了对未来发展的几点看法。 ... [详细]
  • 随着网络安全威胁的不断演变,电子邮件系统成为攻击者频繁利用的目标。本文详细探讨了电子邮件系统中的常见漏洞及其潜在风险,并提供了专业的防护建议。 ... [详细]
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • 云计算的优势与应用场景
    本文详细探讨了云计算为企业和个人带来的多种优势,包括成本节约、安全性提升、灵活性增强等。同时介绍了云计算的五大核心特点,并结合实际案例进行分析。 ... [详细]
  • 本文探讨了Java编程的核心要素,特别是其面向对象的特性,并详细介绍了Java虚拟机、类装载器体系结构、Java类文件和Java API等关键技术。这些技术使得Java成为一种功能强大且易于使用的编程语言。 ... [详细]
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社区 版权所有