银企支付-详细设计文档

目录

  • 银企支付-详细设计文档

    • 1、定义说明
    • 2、借款单
    • 3、报销单
    • 4、银企互联
    • 5、执行流程日志
    • 6、监控
    • 7、差错处理
    • 8、数据库设计

银企支付-详细设计文档



本文介绍企业在借款单,报销单走银企支付流程时的详细设计。本文重点介绍整个流程需要关注的细节点,在最终实现时,对于数据表具体字段,不做介绍。

1、定义说明

  • 报销金额:申请报销人,填写的当次需要报销的总金额。
  • 借款金额:申请借款人,填写的当次需要借款的金额。
  • 核销金额:指在报销时,本身又存在借款金额未还时,报销中,自动还款的金额,称为核销金额。如:借款1000元未还,报销3000元,若本次要抵消借款的1000元,则核销金额为1000元。核销金额小于等于还款金额。
  • 实际报销交易金额:指报销时,报销金额减去核销金额后的余额。如:核销1000元,报销3000元,实际报销交易金额为2000元。

2、借款单

2.1、借款单流程

  • 借款单走银企支付:通过银行,公司账户把借款金额转账给申请借款人账户。
  • 借款单走内部转账:内部转账,变动相关账户虚拟金额。
校验
项目 校验规则 备注
支付方式验证 支付方式支持系统转账,浦发银行银企支付
支付方银行卡号验证 当支付类型为银企模式时,支付的银行卡号必须存在,接收方的银行卡号必须存在
单据编码验证 请求交易的单据编码数据合规性验证 如编码可信性,准确性,是否已经在处理过程中
币别验证 系统支持的交易币别类型验证
支付方式限定 不同币别仅支持系统转账
支付方式限定 银企支付仅支持币别人民币
汇率正确性 币别转账时,汇率值合规性验证 针对工作人员填写的汇率,做合规性验证
用户信息验证 查看系统中是否存在申请人员的信息
申请人账号验证 查看系统中申请人银行账户信息是否正确
风控
项目 规则 备注
额度 单笔借款额度在xx万以内
及时还款情况 若存在xx笔以上借款未还款,不可在借款
路由
项目 规则 备注
银企支付 调用银行接口,由公司银行账户,转账给借款申请人的个人银行账号。系统层面记录个人,公司虚拟账户金额变动情况。
系统转账 财务通过其他途径转账给申请人,系统层面记录个人,公司虚拟账户金额变动情况。
银企支付

转账金额:申请人申请的借款金额。
调用银行对外封装的接口,做转账业务。不同银行的逻辑不同,本文以浦发银行为例。详情参考银企支付设计模块。

业务处理

当银行处理借款业务成功后,或用户直接选择系统内转账时,调用业务处理模块。整个业务处理模块采用事务模式,保证账户变化,流水记录等相关数据操作必须满足一致性的需求。

项目 规则 备注
转入流水金额 申请人借款成功,写入的一条借款者入账流水到流水表。 流水金额为借款金额
转出流水金额 支付借款金额的账户,写入一条转出流水到流水表。 流水金额为借款金额
手续费 目前不存在交易手续费
转账日志 记录转账相关的明细信息。
终态确定 最终完善该条借款单据的处理结果。 是否借款成功
执行流程日志

流程日志记录单据从开始执行支付业务时,在不同节点的处理过程日志。详情查看流程日志设计模块。

2.2、数据流向说明

3、报销单

3.1、报销单流程

  • 报销单走银企支付:通过银行,公司账户把实际报销金额转账给申请借款人账户。
  • 报销单走内部转账:内部转账,变动相关账户虚拟金额。
  • 报销单可关联相关账户的借款信息,自动核销借款记录。

报销业务分为三种情况:

  1. 核销金额为零(不选择抵消借款,或无需要核销的借款记录)
  2. 核销金额小于报销金额
  3. 核销金额等于报销金额。
校验
项目 校验规则 备注
支付方式验证 支付方式支持系统转账,浦发银行银企支付
单据编码验证 请求交易的单据编码数据合规性验证 如编码可信性,准确性,是否已经在处理过程中
币别验证 系统支持的交易币别类型验证
支付方银行卡号验证 当支付类型为银企模式时,支付的银行卡号必须存在,接收方的银行卡号必须存在
支付方式限定 不同币别仅支持系统转账
支付方式限定 银企支付仅支持币别人民币
汇率正确性 币别转账时,汇率值合规性验证 针对工作人员填写的汇率,做合规性验证
用户信息验证 查看系统中是否存在申请人员的信息
申请人账号验证 查看系统中申请人银行账户信息是否正确
支付方式验证 报销实际交易金额小于等于零时,不可选择银企支付
报销实际交易金额 报销实际交易金额必须大于等于零
核销金额验证 该笔报销单关联的所有借款单,查看借款单中待核销的金额,是否大于等于待核销的金额值
核销总金额验证 该笔报销单关联的所有借款单核销记录表明细,核销金额和必须等于核销总金额
风控
项目 规则 备注
额度 单笔报销额度在xx万以内。
最大关联借款单数 本次报销最多关联xx笔借款单。
路由
项目 规则 备注
银企支付 调用银行接口,由公司银行账户,转账给申请报销人的银行账号。系统层面记录个人,公司虚拟账户金额变动情况。
系统转账 财务通过其他途径转账给申请人,系统层面记录个人,公司虚拟账户金额变动情况。
银企支付

转账金额:为报销实际交易金额。
调用银行对外封装的接口,做转账业务。不同银行的逻辑不同,本文以浦发银行为例。详情参考银企支付设计模块。

业务处理

当银行处理借款业务成功后,或用户直接选择系统内转账时,调用业务处理模块。整个业务处理模块采用事务模式,保证账户变化,流水记录等相关数据操作必须满足一致性的需求。

报销实际交易金额大于零
项目 规则 备注
转入流水金额 报销方报销成功,写入的一条个人入账流水到流水表。 流水金额为报销实际交易金额
转出核销流水金额 报销方核销成功,写入的一条个人核销出账流水到流水表。 流水金额为核销金额
转出流水金额 被报销方处理报销金额,写入一条转出流水到流水表。 流水金额为报销实际交易金额
手续费 目前不存在交易手续费
转账日志 记录转账相关的明细信息。
核销日志 记录核销相关的明细信息。 核销金额大于零才有核销日志
终态确定 最终完善该条报销单据的处理结果。 是否核销成功
实际报销交易金额等于零

实际报销交易金额等于零,可套用大于零的流程。当实际交易金额为零,不用写报销方和被报销方的转入转出流水。报销方写核销的转出流水。

核销金额等于零

核销金额等于零,可套用大于零的流程。当核销金额为零,写报销方和被报销方的转入转出流水。报销方不写核销的转出流水。核销金额为零,不用关联借款单,不存在核销日志和借款单状态变更。

执行流程日志

流程日志记录单据从开始执行支付业务时,在不同节点的处理过程日志。详情查看流程日志设计模块。

3.2、数据流向说明

4、银企互联

4.1、调用流程

本文以浦发银行做银企互联介绍,银企互联,封装银行提供的交易接口,在进行交易操作时,记录交互过程的明细信息。提交的交易请求后,银行的处理结果包括如下三类:

  1. 拒绝交易:银行柜员或系统,拒绝或撤销支付请求。该笔交易设置为失败。
  2. 交易成功:发起请求的交易操作成功。
  3. 交易处理过程中:发起的交易请求,银行还在流程处理中,属于中间状态。

银企互联发起交易请求步骤:组织支付网关,调用单笔交易请求接口8801,接收反馈结果。

  1. 若反馈结果成功或处理中,调用8804查询接口。
  2. 若反馈失败,则先停止业务处理。
  3. 由于银行一般不会马上反馈支付成功的结果,一般执行都需要一个时间段,便于银行内部中转,对于这种中转结果,等待银行处理,定时调用8804接口去请求银行,查看发起的支付请求是否处理完成了。接收8804接口反馈的结果,在处理业务。

4.2、数据流向说明

5、执行流程日志

5.1、流程日志说明

执行流程主要记录单据在支付过程中,关键节点的执行明细信息。流程日志至记录执行到当前节点时的执行结果,备注信息,请求关键参数。当前节点真正的明细信息,在相关业务表中查询,不记录在日志中。

业务处理要求统一在一个事务中,执行流程日志不放在事务中。及业务处理和日志记录时,执行流程日志记录在缓存中,最终把缓存的数据同步到数据库中。

项目 规则
业务受理验证日志 当验证都通过时,记录验证结果为通过,并记录请求验证的参数。当验证结果失败时,记录验证失败原因和验证请求参数。
业务风控验证 当验证成功时,记录验证结果和请求验证的参数。验证失败时,记录验证失败原因和验证的请求参数。
请求原始日志 记录原始请求日志是否保存成功。
调用银行请求报文 记录在调用8801时的请求时间,请求参数。
银行反馈-接收8801反馈信息 记录接收反馈信息时,银行返回的信息(成功,银行处理中,失败)。
银行反馈-接收8804反馈信息 记录接收到8804接口反馈时,银行返回的信息(成功,银行处理中,失败)。
业务请求处理日志 记录银企通过,或转账时,发起的业务处理相关的日志信息,包括发起请求参数记录。
流水变动日志 记录流水变动发生的时间,及变动的请求参数,变动处理结果。
核销流程日志 记录核销发生的时间,核销请求的相关参数,核销处理结果。
单据完成状态 记录单据最终的处理结果。

6、监控

通过执行过程日志,查看支付流程在各个节点的明细信息,便于监控支付在各个节点的流转状态。

节点 说明 相关数据表 备注
支付校验 记录支付校验结果,失败时,记录失败原因 流程日志表pay_life_log
风控校验 记录风控校验结果,失败时,记录失败原因 流程日志表pay_life_log
支付请求 记录支付原始信息,明细需异步查看支付的日志信息 流程日志表pay_life_log
支付请求表bill_pay_request
后续支付,业务处理基于支付原始信息做处理
银行报文 记录支付请求信息,明细需异步查看支付的报文 流程日志表pay_life_log
银企支付入参表bank_req_source
银企支付模式时,才有
银行支付结果 记录支付请求后,银行返回的处理信息,明细日志异步查询 流程日志表pay_life_log
银企接口反馈信息表bank_res_parsing_source
银企支付模式时,才有
核销日志结果 记录报销单,核销业务处理后的日志信息,明细日志异步查询 流程日志表pay_life_log
核销日志表writed_off_log
借款单数据表borrowing_bill
报销单核销金额大于零时,才有
交易流水结果 记录转账/银企处理后,业务处理板块流变更的日志。明细日志异步查询 流程日志表pay_life_log
交易流水日志表caiwu_transfer
支付结果 记录单据发起支付后,最终的支付处理结果 流程日志表pay_life_log

7、差错处理

通过监控单据的明细信息,可定位单据在不同节点的情况。在单据支付失败时,提供差错处理功能,便于工作人员通过操作界面,手动处理单据。差错处理包括如下模式:

节点 前置条件 后置行为 描述 备注
重新校验 支付校验失败
风控校验失败
继续走校验后的所有流程 若校验不通过,修复数据后,可发起重新校验的操作
发起银行支付 支付请求表bill_pay_request记录的银行处理结果为失败时
银企解析信息表bank_res_pay也为失败时,才可重新发起银行支付请求
继续走请求支付后的所有流程 为单据重新生成一个银行请求报文编码,更新支付请求表bill_pay_request中的银企包(packet_id)字段 避免同一个单据,多次向银行发起交易请求
发起银行查询 支付请求表bill_pay_request记录的银行处理结果为处理中 继续走银行反馈信息后的流程 调用银行8804查询接口,查询银行处理信息
发起业务处理 支付模式为转账
支付模式为银企时,银企支付处理成功后
继续走业务处理流程 初次业务处理失败时,再次调用业务处理板块重新处理 业务处理流程保证在一个事务下
更新支付模式-银企支付更新为转账模式 支付请求表bill_pay_request记录的银行处理结果为失败时
银企解析信息表bank_res_pay也为失败时,才可更新支付模式
继续走业务处理流程 更新支付请求表bill_pay_request中的支付模式(pay_type)字段 避免银企处理成功又变更为转账的情况

8、数据库设计

数据表每个业务不同,不便于展示数据具体字段。

借款单数据表borrowing_bill

核销日志表writed_off_log

支付请求表bill_pay_request

银企支付入参表bank_req_source

银企接口反馈信息表bank_res_parsing_source

银企解析信息表bank_res_pay

银企调用异常表bank_res_error

报销单据表refund_bill

转账日志表transfer

交易流水日志表trade_log

流程日志表pay_life_log

原文地址:https://www.cnblogs.com/wlandwl/p/pay_design.html

时间: 2024-11-10 01:13:01

银企支付-详细设计文档的相关文章

软工后续工作——增加数据库(详细设计文档4.0)

说明:主要改动就是在3.0的基础上增加了部分游戏数据库. 由于图片不能复制过来,源文档可进入github博客中查看https://github.com/momo23333/Alicization/tree/Zhang 下面为纯文本复制粘贴的内容: 详细设计文档 项目名称:英雄达拉崩吧 小组名称:Scientific_ZEAL软工小分队 项目负责人:刘帅 小组成员:房渤萱 张赐 宋从智 冯惠妍 1.   引言 1.1编写目的 本部分旨在阐明编写详细设计的目的,面向读者对象. 本文档主要描述各个模块

树屋详细设计文档

目    录 1. 引言... 3 1.1 编写目的和范围.. 3 1.2 术语表... 3 1.3 参考资料... 4 1.4 使用的文字处理和绘图工具... 4 2. 全局数据结构说明... 4 2.1 常量... 5 2.2 变量... 5 2.3 数据结构... 5 3. 模块设计... 8 3.1 用例图... 8 3.2 功能设计说明... 9 3.2.1 模块1. 10 3.2.2 模块2. 16 4. 接口设计... 26 4.1 内部接口... 26 4.2 外部接口... 2

网络资源收集工具详细设计文档

1.引言 1.1编写目的 将之前会议中记录的设计要点进行总结和规划,供团队内开发者和测试人员进行代码编写与测试. 1.2项目背景 软件名: 网络资源收集工具 本软件任务:为下一组元数据抽取和整理工具进行对接,为下一组提供其所需的各类海量数据. 2.总体设计 2.1需求概述 将35w+个符合条件的网页,问答,文章放入数据库,具体请参见需求文档. 2.2软件结构 3.程序块ConnectServer描述 3.1功能 连接数据库服务器,进行插入以及查询数据库操作. 3.2性能 快速打开和关闭数据库连接

详细设计文档(final)

1. 引言 1.1编写目的 本部分旨在阐明编写详细设计的目的,面向读者对象. 本文档主要描述各个模块的细节设计,明确软件的结构与实现过程,分析各个模块,描述模块的功能.性能和结构等方面包括模块接口.调用关系.处理过程和算法,以及各个模块的测试方案.本文档的主要读者为软件设计人员.模块开发人员.管理人员.测试人员. 1.2项目背景 我们通过调查问卷的方式,调查了华农部分学生,结果显示参加调查的50%以上的学生有查找空教室,蹭课,约自习需求.经过讨论权衡分析最终确定以该想法----华中农业大学空教室

Atitit 项目文档规范化与必备文档与推荐文档列表

===========比较重要的必备文档========== 项目组名单通讯录( 包括项目组,客户沟通人等 需求文档 原型ui文档 开发计划表 项目源码与架构文档以及新结构文档 设计文档 (一般概要即可,重点模块单独详细设计) 数据库文档 注意事项 =========对开发比较重要的文档 Svn源码服务器账号密码 测试数据库账号密码信息 数据库sql脚本文件. 开发环境搭建文档 项目技术规范文档.(项目模式和产品模式有很多不同,需要单独分离) ======其他 测试说明文档 测试服务器部署账号信

项目过程中各阶段应交付的文档

需求阶段 功能分析<详细功能分析书> 功能用例<UAT用例> 旧系统代码分析攻关<代码关键点分析书> 数据库分析<数据库字典> 设计阶段 设计原型<Axure原型图> 框架选型<框架体系结构图> 菜单导航.部门用户.角色权限.操作权限.系统日志.UI框架.报表组件.跨平台方案.WebAPI.数据访问 业务层设计<详细设计文档> 数据库设计<PD文档> 开发计划安排<开发进度WBS> 开发阶段 从源数

让你提前认识软件开发(40):既要写好代码,又要写好文档

第3部分 软件研发工作总结 既要写好代码,又要写好文档 对于软件相关行业,在学校或单位上,大家也许都已经注意到了,除了要编写的程序.绘制设计图之外,还有一个重要的工作便是写文档.为什么要写文档呢?因为我们要把自己做的东西展示出来,不光展示给同行看,可能还要展示给其他岗位上的工作人员看,甚至展示给用户看.如果我们只是会写程序,不会在文档中描述自己的想法,那么就真正的成为"码农"了. 工作也有一段时间了,我发现周围的同事,会写高质量文档的确实很少.李开复老师在<浪潮之巅>的序言

程序员如何写出一份好的文档?

写文档的重要性 对于软件相关行业,在学校或单位大家也许都已经注意到了,除了要编写的程序.绘制设计图之外,还有一个重要的工作便是写文档.为什么要写文档呢?因为我们要把自己做的东西展示出来,不光展示给同行看,可能还要展示给其他岗位上的工作人员看,甚至展示给用户看.如果我们只是会写程序,不会在文档中恰当且优雅地描述自己的想法,那么就真正的成为“码农”了. 我注意了一下,周围的同事会写高质量文档的确实很少.李开复老师在<浪潮之巅>的序言中说到:“我认识很多顶尖的工程师,但具备强大叙事能力的优秀工程师,

软件设计文档及数据流向图

1 数据流向图:张涛 033  2 软件设计结构图:马冀伟 034 3 软件概要设计详细设计文档:王树才  030 一:数据流向图 二:软件设计结构图 三: 软件概要设计详细设计文档 项目名称:  基于服务器的购物系统 1 数据层: 产生的数据有:物品的基本信息,包括名称, 数量,价格,类别,说明,图片:订单信息,包括订单提交时间,订单详情,订单失效时间:用户信息,包括用户名,登录密码,登录时间: 用户上传自己数据:物品名称,数量,价格,类别,说明,图片,用户手机号. 2 整体结构 1 用户登录