交易履约之结算平台实践 | 京东云技术团队

news2024/11/16 10:20:29

导读

京东科技业务在快速发展的同时,产生了众多线上化资金结算的需求。传统的线下资金结算模式有着人力成本高、耗时长、多方沟通协调成本高、结算准确率低等固有缺点,且无法满足“风法财审”对于资金流程的管控要求,在此背景下金道结算平台孕育而生。本文从系统建设的背景、设计细节、已支撑案例及适用业务场景多个层面进行详细阐述。读者可以关注文中所讲的系统实践过程,进而对结算领域系统设计能力提升,具有一定的参考价值。

一、概述

1.1 背景

业务在快速发展的同时,产生了众多线上化资金结算的需求。传统的线下资金结算模式有着人力成本高、耗时长、多方沟通协调成本高、结算准确率低等固有缺点,且无法满足“风法财审”对于资金流程的管控要求。金道结算平台应运而生,专注于内部中心化流量场外的、通过外部场或搭建撮合平台进行获客、转化的场景,支撑业务方面向客户、合作伙伴、经销商、供应商等多利益相关方,实现快速、专业、高效、准确的线上化计费结算解决方案提供和能力支持。金道结算平台对接各垂直业务系统,实时同步业务的交易数据,并经过标准的结算流程(数据标准化预处理,清分,计费,分摊,结算单生成、运营确认等),最终通过财务渠道或其他支付渠道完成资金结算,有效降低了各业务系统结算成本的投入,提升业务资金流转的健康度,为业务的快速增长赋能。

1.2 痛点

业务系统在开展业务时,以当前线下处理的方式,普遍存在以下痛点:

计算难:计算规则复杂,数据量大,人工难以处理;

响应慢:现有业务变化快和新增业务速度快,人工效率较低,难以快速响应新资金结算模式;

风险高:人工计费、核对、结算数据风险高且不合规,难以溯源,操作风险高;

运营难:基础数据不完善,线下无法多维度分析,无法精准管理业务成本,及时调整策略;

成本大:人工结算的方式,投入的时间和资源成本高。

1.3 定位

金道结算平台深耕业务场景,打通平台接口,支持跨平台结算,是业财一体化的桥梁,为平台型交易及全域营销赋能。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图1 平台定位

1.4 优势

金道平台的建设,在解决业务痛点基础上,平台优势能够从几个层面体现:

1. 计费准确:支持大数据量计费,准确性达99.99%;

2. 结算快速:灵活支持按日或月等维度结算,缩短结算账期,实现资金快速收付;

3. 运营精细:支持业务精细化运营,助力业务发展;

4. 成本降低:提高运营效率,节省成本。

二、系统架构介绍

2.1 名词解释

名词解释
清分清分是在清算前对数据标准化处理阶段。在本文中,清分指的是对交易明细数据的核对、识别、调整及打标操作。
清算清算是标准化数据的计算及核对过程,本文清算主要完成标准化数据的核对、计费及分摊处理。
结算结算是汇总账单,并完成资金最终转移的过程。本文中的结算指的是对清算明细数据,以不同的维度生成结算单并确认,最终通过财务系统完成收付款的整个过程。
计费本文中指:单据数据按一定计算规则,生成的结果金额及过程金额。
分摊本文中指:费用存在多个承担方,在清算过程中,会把计费的结果金额,再次按分摊的规则划分到各方。
累额本文中指:累额服务于分摊动作,具体过程 为分摊规则中配置了每个承担方最大的承担上限,那么在计费后需要分摊时,需要参考承担方已累加金额是否到了上限,如果到了上限,则此方不进行分摊金额,否则正常累加本次金额。
冲正本文中指:同一单据重新计费、分摊时,需要把此单据在原累加总额值减去,再累加上本次金额。
重置本文中指:顺序清算场景时,业务线需要在历史的某个单据向后重新清算时,累额中需要把总额回退到此单据清算时累加的总额快照,并标识累额流水中哪些是效数据。

表1 名词解释

2.2 服务域设计

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图2 服务域划分

平台基于DDD思想,划分清分域、清算域、结算域及报表域四个大域,每个子域又依次划分了自己的子域。

2.3 整体架构图

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图3 整体架构图

说明:

1. 金道平台从数据处理流向上,自上而下划为分数据源、清分、清算、结算及下游,从使用群体上分为零售客户及科技客户。

2. 业务数据通过实时或离线两种方式接入平台。在清分中判别数据归属清分类型(通用流程或个性化流程),而进入不同的清分处理流程。清分域主要是按一定的规则对原始数据进行核对、识别、调整及打标动作,为清算做好数据标准化。

3. 当清分标准化数据后,会推送结果数据到清算域,清算按模型配置的清算规则,通过流程控制进入计费、分摊、累额等不同的组合处理(譬如:只计费、先计费后分摊、只分摊、先分摊后计费等),以及会补全结算户、合同及汇率数据,数据落到清算明细表。

4. 结算模型达到结算周期条件时,会产生一个结算任务。结算任务处理时,会从清算表中按条件获取待结算明细,然后按结算维度汇总,各自产生结算单信息。结算单自动按预定审批流程完成确认,最终推送到财务渠道(渠道当前有:科技财务、预存款账户、pop核算等),由财务渠道系统完成收付款。

2.4 典型问题技术设计

2.4.1 分片任务处理组件

平台采用cds实现分库分表存储数据,通过DTS把数据同步到ES,并进行报表明细显示。在整个结算流程中,存在众多需要聚合表数据处理操作(譬如:单据预处理、清算预处理、生成结算单,条件拉取条件数据等),因为本平台是与资金结算相关,金额必须绝对准确,所以未采用ES作为可信的聚合处理源。在前期公司调研相关产品后,未找到基于分库分表有高效的聚合工具,所以特研发以下“分片任务处理组件”:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图4 分片任务处理组件

此组件提供抽象的类shardingTask,预定好3个核心动作:split(如何分片)、do(分片数据如何处理)、merge(最终数据如何聚合)。

核心处理过程为:先统一抽象批量处理逻辑,把批量数据分片发送 MQ 并落库。多节点多线程进行消费,消费完成后,对数据库 MQ 记录的状态进行修改。每个分片处理完后,匀检查该任务下的消息是否全部处理完成,如果完成后,最后执行合并逻辑,那么此时我们想要的最终结果就出来了。

2.4.2 顺序清算

背景

某些业务系统要求以业务发生的流水,按顺序做计算、分摊及累额,为了解决这个场景,特设计以下通用的处理流程。

实现过程

第一步:数据接入在中间表中,按业务时间排序,然后打上唯一流水号(流水号自增特点):

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图5 打标流水号

第二步:业务人员或系统自动处理单据,进行清算时,会触发条件 ,进入以下预清算处理流程:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图6 预清算处理流程

原理:

不需要按顺序处理的单据数据,直接发送了待清算MQ主题 中,需要按顺序清算单据,进入主流程。

挑战:

1. 分片存储情况下业务数据明细百万级排序;

2. 顺序处理如何保证处理效率;

3. 顺序清算异常情况,如何断点继续处理。

实现核心点:

原始快照表打标顺序流水号,利用分片任务组件,拉取数据后放在zset中进行排序,全部放入后,触发顺序清算流程。为应对大促销日,可以在业务能容忍的范围中,开放并发清算(并发数据之间不保证顺序),要成功整体成功,要失败整体失败。

2.4.3累额重置

背景

按顺序计费、分摊及累额场景,当业务人员需要回退到历史某个时间的单据重新顺序清算时,就需要从累额明细中重置到将要执行单据的位点(也就是累加的总额回退回去,并在流水中标识出哪些是无效数据)。

实现原理

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图7 累额重置实现原理

三、系统功能介绍

3.1 结算流程

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图8 结算流程

整个流程主要分为 4 个步骤:

1. 出具结算方案:每当有新业务场景接入,需由产品同学调研业务运营同学以了解业务场景,并出具专业的线上化结算解决方案,辅助业务系统备齐结算所需数据来源,并辅助业务数据同学加工结算数据表。

2. 结算模型配置:依据结算解决方案,在金道结算系统完成结算模型的基本信息配置以及单据处理、清算处理、结算处理、下游处理等环节的规则配置。

3. 结算任务处理:业务交易发生推送到结算平台,然后经过清分流程处理、清算流程处理、结算单生成,如果有对账确认流程配置,则会推送账单由客户进行账单确认,发票暂由运营人员线下开具(后续会支持)。

4. 结算完成:等确认完账单后,账单会推送到财务进行收付款处理,财务的处理结算会通知到结算平台。最终账单信息可以由结算平台提供归档及检索。

3.2 主要配置

3.2.1结算模型

1. 基本信息

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图9 基本信息

2. 规则信息

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图10 规则信息

结算模型是本平台核心配置,内容涵盖基本信息、结算周期、单据处理、清算处理、结算处理及下游配置,运营人员可以通过引导一站式配置好整个所需功能。

3.2.2 计费模型

1. 计费规则

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图11 计费规则

对外提供计费服务,支持不同产品的计费模型和计费规则,形成计费规则引擎,实现计费规则和模型的可配置化,可支持灵活多变的计费场景。

2.分摊规则

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图12 分摊规则

本平台支持基于预算的分摊配置能力,适合成本分摊型结算。目前我们支持分摊方式有按比例、按顺序及按固定金额,支持两级分摊,具备了大部分业务应用场景支撑能力。

四、业务支持案例

目前金道结算平台已赋能了 微电佣金、白条息费成本、内容平台创作者佣金、支付营销券计收等 业务的线上化结算场景,日均处理订单量达5000万+,日均有效结算金额达1300万+,有力支撑了业务快速发展。

4.1 微电业务

合作案例:为微电业务解决职场、坐席销售金融产品而产生的资金结算问题,包括佣金、业绩考核、企微加粉费和电话使用费等。

业务场景:微电业务售卖的金条、白条、基金、养老保障、小金保、股票、延保、CPA等。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图13 微电业务

4.2 白条业务

合作案例:为白条与商城解决商城、科技、供应商、POP商家联合营销而产生的白条营销费用收取问题。

业务场景:收取商城、供应商、POP商家的白条营销费用。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图14 白条业务

4.3 支付业务

合作案例:为支付解决外部机构采购优惠券,而产生的支付营销费用收取问题.

业务场景:收取外部机构的支付营销费。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图15 支付业务

五、总结

针对目前业务场景、商业模式进行调研分析,主要有四种结算模式:分佣结算业绩考核结算技术服务结算商品营销结算

4种模式覆盖目前所有场景,随着接入业务场景的扩展,模式可再增加。

作者:京东科技 张学君

来源:京东云开发者社区 转载请注明来源

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1078337.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springboot就业信息管理系统springboot32

大家好✌!我是CZ淡陌。一名专注以理论为基础实战为主的技术博主,将再这里为大家分享优质的实战项目,本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目,希望你能有所收获,少走一些弯路…

[UUCTF 2022 新生赛]ezpop - 反序列化(字符串逃逸)【***】

[UUCTF 2022 新生赛]ezpop 一、解题过程二、其他WP三、总结反思 一、解题过程 题目代码&#xff1a; <?php //flag in flag.php error_reporting(0); class UUCTF{public $name,$key,$basedata,$ob;function __construct($str){$this->name$str;}function __wakeup(){i…

成集云 | 嗨便利集成金蝶云星辰 | 解决方案

方案介绍 嗨便利是一款便捷即时到家服务平台。它集合了即时零售、即时配送、前置仓、数字化中台、会员体系以及自研SAAS系统等众多前沿科技&#xff0c;利用大数据驱动的预测算法&#xff0c;通过多渠道订单整合&#xff0c;智能调度配送系统&#xff0c;致力于为消费者提供“…

互联网干洗店洗鞋店预约收衣下单软件

拽牛科技洗护软件系统可以实现用户在线下单&#xff0c;商家依托平台来接单&#xff0c;将用户的订单运送到校外来清洗处理&#xff0c;这样可以有效的避免学校的高房租成本。 软件有四种下单模式&#xff0c;网点自取模式&#xff5c;上门取送模式&#xff5c;快递柜模式&…

实验室管理系统LIMS

在数字化浪潮中&#xff0c;越来越多的企业开始有数字化转型的意识。对于实验室而言&#xff0c;数字化转型是指运用新一代数字技术&#xff0c;促进实验室业务、生产、研发、管理、服务、供应链等方面的转型与升级&#xff0c;实现实验室业务“人、机、料、法、环”的多维度发…

【使用 TensorFlow 2】02/3 使用 Lambda 层创建自定义激活函数

一、说明 TensorFlow 2发布已经接近2年时间&#xff0c;不仅继承了Keras快速上手和易于使用的特性&#xff0c;同时还扩展了原有Keras所不支持的分布式训练的特性。3大设计原则&#xff1a;简化概念&#xff0c;海纳百川&#xff0c;构建生态.这是本系列的第三部分&#xff0c;…

【pycharm】控制台报错:终端无法加载文件\venv\Scripts\activate.ps1

目录 一、在pycharm控制台输入 二、在windows的power shell &#xff08;以管理员方式打开&#xff09; 三、 在pycharm控制台输入 四、重新打开pycharm即可 前言&#xff1a;安装pycharm2022-03版本出现的终端打开报错 一、在pycharm控制台输入 get-executionpolicy …

单目标分割标签图叠加代码

本代码只适合两个图片合并&#xff0c;如果出现三个图片合并&#xff0c;就将第三个图删除&#xff0c;先合并一次&#xff0c;然后再将图片加入&#xff0c;再合并一次 1. 问题背景 有的时候标签有多个&#xff0c;需要将两张或者是多张图象叠加在一起&#xff0c;成为以下情…

Redis学习6——新数据类型

Bitmaps bitfield HyperLog Geographic Stream 重点来了 redis各个数据类型的操作命令可以到:http://www.redis.cn/commands.html查看

面试经典 150 题 20 —(数组 / 字符串)— 151. 反转字符串中的单词

151. 反转字符串中的单词 方法一 class Solution { public:string reverseWords(string s) {istringstream instr(s);vector<string> words{};string word;while(instr>>word){words.push_back(word);}int length words.size();string result words[length-1];f…

怒刷LeetCode的第26天(Java版)

第一题 题目来源 64. 最小路径和 - 力扣&#xff08;LeetCode&#xff09; 题目内容 解决方法 方法一&#xff1a;动态规划 可以使用动态规划来解决这个问题。 首先创建一个与网格大小相同的二维数组dp&#xff0c;用于存储从起点到每个位置的最小路径和。然后初始化dp[0…

shiro反序列化和log4j

文章目录 安装环境shiro漏洞验证log4j 安装环境 进入vulhb目录下的weblogic&#xff0c;复现CVE-2018-2894漏洞&#xff1a; cd /vulhub/shiro/CVE-2010-3863查看docker-compose的配置文件&#xff1a; cat docker-compose.yml如图&#xff0c;里面有一个镜像文件的信息和服…

136.【JUC并发编程_02】

JUC并发编程 (四)、共享模型之管程1.wait notify(1).小故事_为什么需要wait(2).wait notify 的工作原理(3).API介绍 2.wait notify 的正确使用步骤 ⭐(1).sleep 和 wait 的区别(2).步骤1_产生的问题(3).步骤2_wait notify 改进产生问题(4).步骤3_产生叫错人问题 (虚假唤醒)(5).…

opencv安装成功之后运行代码还是出错

错误提示 Traceback (most recent call last): File "F:\download\55957_人工智能基础与应用&#xff08;微课版&#xff09;_源代码\OpenCV\camera.py", line 4, in <module> import cv2 File "F:\software\anaconda\envs\tensorflow\cv2\__init__.py&q…

Unity 热更新技术 | (一) 热更新的基本概念原理及主流热更新方案介绍

&#x1f3ac; 博客主页&#xff1a;https://xiaoy.blog.csdn.net &#x1f3a5; 本文由 呆呆敲代码的小Y 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f384; 学习专栏推荐&#xff1a;Unity系统学习专栏 &#x1f332; 游戏制作专栏推荐&#xff1a;游戏制作 &…

什么是强缓存、协商缓存?

为了减少资源请求次数,加快资源访问速度,浏览器会对资源文件如图片、css文件、js文件等进行缓存,而浏览器缓存策略又分为强缓存和协商缓存,什么是强缓存?什么是协商缓存?两者之间的区别又是什么?接下来本文就带大家深入了解这方面的知识。 强缓存 所谓强缓存,可以理解…

声音生成评价项目AudioLDM_eval项目配置过程

文章目录 引言正文问题一&#xff1a;模型下载不了问题二 TypeError: pad_center() takes 1 positional argument but 2 were given问题三 AttributeError: module numpy has no attribute complex. 结果 引言 对于生成的声音&#xff0c;如何进行评价&#xff0c;一般是通过计…

Matlab之查询子字符串在字符串中的起始位置函数strfind

一、功能 strfind函数用于在一个字符串中查找指定的子字符串&#xff0c;并返回子字符串在字符串中的起始位置。 二、语法 indices strfind(str, pattern) 其中&#xff0c;str是要进行查找的字符串&#xff0c;pattern是要查找的子字符串。 函数会返回一个由子字符串在字…

网络与信息安全基础知识 (软件设计师笔记)

&#x1f600;前言 在当今世界&#xff0c;我们见证了科技&#xff0c;特别是网络技术的繁荣发展&#xff0c;这种发展不仅让我们的生活变得更加便捷&#xff0c;但也带来了一系列的安全问题。网络安全不仅关系到每一个上网的个人&#xff0c;更是关乎到国家的安全和社会的稳定…

大数据要怎么样学才可以到企业级实战

大数据在企业级实战中扮演着重要角色&#xff0c;因此掌握大数据技术和应用是非常有价值的。下面将详细介绍学习大数据并达到企业级实战水平的步骤和方法。 一、基础知识准备 1. 数据基础知识&#xff1a;了解数据的概念、类型、结构等基本概念&#xff0c;并熟悉常见的数据处…