点击上方蓝色字体,选择“标星公众号”

优质文章,第一时间送达

一、项目目标
支付中心架构将各业务的公共交易、支付、财务等沉淀到支付中心,并主要解决了以下三个主要问题:
1.建立基础订单、支付、财务统一体系,抽象和封装公共处理逻辑,形成统一的基础服务,降低业务的接入成本及重复研发成本;
2.构建安全、稳定、可扩展的系统,为业务的快速发展和创新需求提供基础支撑,解决业务「快」和支付「稳」之间的矛盾;
3.沉淀核心交易数据,同时为应用端、物业公司、用户提供数据支撑。

二、具体调用流程
在目标的指导下,我向集采、o2o、收费易三个项目组的相关开发咨询了业务逻辑,再结合我们自己的业务场景调整了支付中心调用流程和两个注意点
首先我们来看一下支付中心的调用过程。业务系统、支付中心和第三方通道的交互流程图如下:

各系统交互流程为:
1.物业公司开通第三方支付渠道商户,并获取第三方支付参数
2.物业公司将第三方支付参数提供给支付中心,开通商户号,开通支付渠道,获取商户标识和支付标识。
3.物业公司将商户标识和支付标识提供给应用端。
至此,物业公司注册流程完毕。接下来是支付流程。
4.应用端使用物业公司提供的商户标识和支付标识,以及必备的支付订单号,支付金额,调起方式,上送至支付中心。
5.支付中心将获取的标识解析到对应的参数,并整合应用端的请求参数,向第三方支付发起支付,并获取支付发起的结果。
6.支付中心将发起结果整合后直接返回给应用端,注意,这里只是这个请求是否发起成功的通知,并不是最终支付结果的通知。
7.第三方支付调起用户的支付或者跳转收银台页面、小程序调起用户支付进行支付,第三方支付获取到用户的支付结果之后。回调通知支付中心。
8.支付中心处理数据,并回调通知应用端。
9.应用端处理订单信息,并开始订单、通知用户。
注意:
1.订单号问题,问题起因:有些应用系统,使用订单号上传,有些使用自己系统中的流水号上传并发起支付。所以这里设计如下:
(1)应用系统上送的无论是订单号还是流水号,支付中心都不直接使用,而是进行记录,并重新生成一个唯一的流水号,上送第三方支付。
(2)第三方支付会在校验参数成功确认支付发起成功后,再返回由第三方支付生成的流水号,用于以后的账单查询,对账,退款等功能。
(3)支付中心会保存三个流水、订单号。方便以后调用、查询。
(4)在收到第三方支付的调用返回时,支付中心会重组调用返回参数,将应用上送的订单号,支付中心生成的唯一流水号,第三方支付返回的流水号,一并返回应用端,建议应用端都进行保留。
2.这里还涉及到退款使用哪个号进行退款的问题,这里设计为:使用支付中心流水号判定使用哪一笔订单退款。上送了支付中心生成的流水号后,根据流水号和商户标识以及支付标识检索出来的结果,进行退款,退款金额不可超过该笔流水号支付的金额。应用端可以根据业务需求自行选择退款方式,支付中心只做和流水号相关的退款。
3.有关收银台,现在有些第三方支付存在自己的收银台,有的没有,所以支付中心必须有自己的收银台,但同时如果第三方支付存在已有收银台也没有必要跳转两次。所以这里的逻辑设计为:如果第三方存在必须跳转的收银台,使用第三方收银台,其余情况直接使用支付中心收银台。

三、支付中心架构设计
目前的系统功能整体架构如下:

如图所示,从架构上主要分为四个大模块:
1.支付中心后台:主要是账号管理相关,物业公司的开户开通支付等提供支持
2.支付消息:主要是用于对应用端进行通知
3.交易核心:用来支撑整个系统的基础交易核心,参数组装发起,返回数据的处理,异常的处理和通知等。
4.渠道网关:解析应用端发送过来的请求,证书白名单的设置和使用,第三方api的调用等

支付中心后台:

收银台:

渠道网关
(1)支付账户管理

物业公司选择自己所需的支付渠道进行开通
用户选择自己倾向的支付方式
最后请求中由支付中心处理,收入对应的收款账户。

(2)request解析器

一个请求在进入request解析器之后,
首先解析支付标识,决定使用哪个支付插件(alipayPlugin, wechatPlugin, easyPlugin)
其次解析调起方式(小程序,PC,APP)
获取可用的支付插件(alipaypaymentappexecutor,xxxexecutor)
最后选择方法(onpay waponpay refund)

交易核心:
交易核心的数据库设计:

分账资金流向:

四、目前预见的可能的问题
1,数据监控
出现数据异常,或者报错,及时在钉钉群里通知。
2,数据一致性问题
咱们的系统打算暂时只做一个模块,应用端可以到支付中心来同步数据。
3,稳定性问题,第三方支付不够稳定
主要是用户可能会用微信支付失败,又用支付宝支付。
这个需要应用端进行监控,支付中心对于提供的不同订单号会实时发起支付。同一订单号,连续发起两次之间间隔不超过15秒。

往期推荐

面试官:消息队列 MQ/ JMS/ Kafka 有什么区别?

测试项目经理推荐的Java 并发测试神器

Kafka Stream抑制?

kafka常考面试题整理分享(含答案)

从上帝视角来看 Java 并发框架

Java项目接私活脚手架(附源码)

Java并发之设计模式,设计思想

回复干货】获取精选干货视频教程

回复加群】加入疑难问题攻坚交流群

回复mat】获取内存溢出问题分析详细文档教程

回复赚钱】获取用java写一个能赚钱的微信机器人

回复副业】获取程序员副业攻略一份

戳这儿

支付中心设计与方案,收藏了相关推荐

  1. .Net架构篇:实用中小型公司支付中心设计

    前言 说起支付平台,支付宝量级的支付平台和一个小型公司的支付不可同日耳语.一个初创或刚创业一两年的公司,一没人力,二没财力的情况下,如果也想对接支付那怎么办呢?感谢支付宝和微信支付,两大行业巨头提供了 ...

  2. 支付中心设计-系统方案设计

    支付产品模块是按照支付场景来为业务方提供支付服务.这个模块一般位于支付网关之后,支付渠道之前. 它根据支付能力将不同的支付渠道封装成统一的接口,通过支付网关来对外提供服务.所以,从微服务的角度,支付产 ...

  3. 支付中心设计-支付通道

    随着支付业务量激增,支付团队不断壮大.为了满足日益增长的业务需求,大量的支付通道逐渐接入,但由于对接的各银行和第三方系统的稳定性参差不齐,支付通道故障时有发生,作为承接上下游的核心系统,要在一系列不稳 ...

  4. B2C电商支付中心产品架构详解

    一.开篇: 本篇文章,我们主要来拆解下一般B2C电商公司[支付中心]的产品架构图.在我们开始正式讲解之前,大家先描述下自己对支付中心的认知.我想可能对于大部分普通用户,对支付中心的理解可能更多就是付款 ...

  5. java对外接口 入参实体命名_支付中心接口设计之参数命名

    目前,java版支付中心处在研发阶段.下午,特有钻研精神的云龙同学饶有兴趣的问我"战哥,你觉得表字段用哪种命名方式比较好呢?" 所用的db是mysql,他是想征求一下我的看法,是用 ...

  6. 组件化开发——支付中心

    最近在对项目中支付模块的重构,经过三个月的努力,让项目的支付焕然一新.过程是艰辛的,结果是完美的,哈哈.接下来分享一下在重构支付整个流程设计和实现. 为什么要独立模块?随时公司业务不断的发展,项目需要 ...

  7. UI界面如何制作?这些版式设计小技巧收藏好!

    本文由:"学设计上兔课网"原创,图片素材来自网络,仅供学习分享 UI界面如何制作?这些版式设计小技巧收藏好!在做UI界面的时候,很多时候我们需要去看很多的产品进行竞品分析.市场调研 ...

  8. 支付系统设计四:支付核心设计03-快捷发送短信(失败转代扣)

    文章目录 前言 一.背景 1. 应用架构 2. 分层支撑机制 二.银行卡快捷支付 1. 用户操作流程 2. 系统执行流程--正常 2.1 发送短信 2.2 短信确认 3. 系统执行流程--异常 3.1 ...

  9. 一份完整的聚合支付中心设计方案!

    来源:https://blog.csdn.net/liuzhirou1/article/details/117649569 一.项目目标 支付中心架构将各业务的公共交易.支付.财务等沉淀到支付中心,并 ...

  10. excel 等额本息还款每期本息计算_零基础入门融资租赁计算(第三讲)——设计租金方案...

    导语:本期我们将讲解如何设计融资租赁租金方案,以及设计的步骤和核心本质.通过本章的学习你将了解如何设计最基本的租金方案和计算该方案下的IRR. 1 融资租赁IRR计算的逻辑框架和黄金原则: (1)宏观 ...

最新文章

  1. Python·Jupyter Notebook各种使用方法
  2. [2019HDU多校第一场][HDU 6590][M. Code]
  3. 美观实用的标签切换菜单
  4. linux procs单位m,Linux
  5. 【题解】BZOJ5093图的价值(二项式+NTT)
  6. 金融数据分析余挖掘实战1.9-1.10补充
  7. IOS开发—UIGestureRecognizer Tutorial in iOS 5: Pinch
  8. android 获取用户名和密码,如何通过Android中的电子邮件地址获取用户名和密码
  9. Win11怎么卸载软件?Win11彻底卸载软件教程
  10. 工程量计算专用工具-支持灌注桩、搅拌桩、格构柱
  11. python提取docx文档的信息(文本+表格)
  12. 打通企业数智化最后一公里!CDEC2021上海优秀数智生态伙伴奖项颁布~!
  13. 电脑html5播放黑屏,电脑看视频黑屏,教您电脑看视频黑屏有声音怎么办
  14. 解决 windows 下浏览器无法上网,QQ/微信正常上网
  15. 在模仿学习中进步的智能机器人
  16. 机器人莱克说明书_莱克扫地机器人—莱克扫地机器人的工作原理及分类
  17. Linux实现ISCSI共享设备
  18. 【前端篇】火狐浏览器打开调试器,报“Error: Incorrect contents fetched, please reload.”
  19. html5 audio样式修改,HTML5中 audio的样式设置
  20. flink实战--水印(watermark)终极总结

热门文章

  1. python打开浏览本地html文件_python解析本地HTML文件
  2. ssis oracle配置,从SSIS包SQL Server连接Oracle数据库
  3. java五子棋人机对战_java swing人机对战五子棋
  4. 超级超级实用的整个网页截图技巧
  5. 利用teigha制作dwg无单位块工具开发
  6. 魅族17用鸿蒙系统,发布一年还很香,魅族17升级Flyme 9后太好用了
  7. Source Insight 3.X 插件支持utf8,完美解决中文乱码,另附优美的配置文件一份
  8. 据说这是世界上流传最广的财务模型,不用就out了
  9. poker2的配置使用
  10. lqr算法 c语言,【CS229 lecture18】linear quadratic regulation(LQR) 線性二次型調節控制