来源:blog.csdn.net/liuzhirou1/article/details/117649569

一、项目目标

支付中心架构将各业务的公共交易、支付、财务等沉淀到支付中心,并主要解决了以下三个主要问题:

  1. 建立基础订单、支付、财务统一体系,抽象和封装公共处理逻辑,形成统一的基础服务,降低业务的接入成本及重复研发成本;

  2. 构建安全、稳定、可扩展的系统,为业务的快速发展和创新需求提供基础支撑,解决业务「快」和支付「稳」之间的矛盾;

  3. 沉淀核心交易数据,同时为应用端、物业公司、用户提供数据支撑。

二、具体调用流程

在目标的指导下,我向集采、o2o、收费易三个项目组的相关开发咨询了业务逻辑,再结合我们自己的业务场景调整了支付中心调用流程和两个注意点

首先我们来看一下支付中心的调用过程。业务系统、支付中心和第三方通道的交互流程图如下:

各系统交互流程为:

  1. 物业公司开通第三方支付渠道商户,并获取第三方支付参数

  2. 物业公司将第三方支付参数提供给支付中心,开通商户号,开通支付渠道,获取商户标识和支付标识。

  3. 物业公司将商户标识和支付标识提供给应用端。至此,物业公司注册流程完毕。接下来是支付流程。

  4. 应用端使用物业公司提供的商户标识和支付标识,以及必备的支付订单号,支付金额,调起方式,上送至支付中心。

  5. 支付中心将获取的标识解析到对应的参数,并整合应用端的请求参数,向第三方支付发起支付,并获取支付发起的结果。

  6. 支付中心将发起结果整合后直接返回给应用端,注意,这里只是这个请求是否发起成功的通知,并不是最终支付结果的通知。

  7. 第三方支付调起用户的支付或者跳转收银台页面、小程序调起用户支付进行支付,第三方支付获取到用户的支付结果之后。回调通知支付中心。

  8. 支付中心处理数据,并回调通知应用端。

  9. 应用端处理订单信息,并开始订单、通知用户。

注意:

1.订单号问题,问题起因:有些应用系统,使用订单号上传,有些使用自己系统中的流水号上传并发起支付。所以这里设计如下:

  • 应用系统上送的无论是订单号还是流水号,支付中心都不直接使用,而是进行记录,并重新生成一个唯一的流水号,上送第三方支付。

  • 第三方支付会在校验参数成功确认支付发起成功后,再返回由第三方支付生成的流水号,用于以后的账单查询,对账,退款等功能。

  • 支付中心会保存三个流水、订单号。方便以后调用、查询。

  • 在收到第三方支付的调用返回时,支付中心会重组调用返回参数,将应用上送的订单号,支付中心生成的唯一流水号,第三方支付返回的流水号,一并返回应用端,建议应用端都进行保留。

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秒。

聚合支付设计方案,该如何设计?相关推荐

  1. 一份完整的聚合支付设计方案,喜欢就拿去用吧!

    点击上方蓝色字体,选择"标星公众号" 优质文章,第一时间送达 关注公众号后台回复pay或mall获取实战项目资料+视频 一.项目目标 支付中心架构将各业务的公共交易.支付.财务等沉 ...

  2. 聚合支付的清分体系设计

    清分以订单交易为核心,对平台多级商户的订单金额进行清分,清分不涉及资金流转,更多是信息流的记账,即支付机构收单后在内部跨账户的交易和账务操作. 清分的本质是订单交易后资金的再分配,即对交易资金进行二次 ...

  3. h5调微信支付 unkonw url_聚合支付系统设计(一)

    产品概述与整体设计 背景 如今,网购已经渗透到人们日常生活中的方方面面,做为网购的载体,互联网电商平台发展如火如荼,支付功能做为其不可或缺的一部分,实现起来,也有各种各样的方案.根据自己有限的认知,我 ...

  4. 13-pyg-12聚合支付解决方案

    聚合支付解决方案 1.解决方案介绍 聚合支付,是融合了多方支付通道的平台,相对于支付宝.微信等第三方支付平台而言,聚合支付属于在第三方支付平台基础上,进行了技术融合的第四方平台. 本解决方案,是基于P ...

  5. 高校聚合支付平台设计解决方案

    1.传统校园支付的现状与困境 近年来,随着学校的快速发展,招生规模也在不断扩大,各项收费标准不断提高且收费所涉及的种类也日渐增多.学校的各种收费模式也从"现场收取现金"逐渐发展到& ...

  6. 聚合支付-支付渠道接入设计及实现

    聚合支付-支付渠道接入设计及实现: https://www.jianshu.com/p/ca740b95ad2e

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

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

  8. 完整的聚合支付中心设计方案

    一.项目目标 二.具体调用流程 三.支付中心架构设计 收银台 渠道网关 交易核心 四.目前预见的可能的问题 一.项目目标 支付中心架构将各业务的公共交易.支付.财务等沉淀到支付中心,并主要解决了以下三 ...

  9. 聚合支付的收银台设计

    为了满足理财产品在不同使用场景.不同客户群体的充值入金.消费出金.收单代付.分账结算等支付需求,金融企业往往会对接多家支付通道实现聚合支付. 聚合支付的核心功能之一是收银台,它可以帮助金融企业解决体外 ...

最新文章

  1. Ruby中的多行注释?
  2. ES6关于Promise的用法
  3. ubuntu命令安装jdk
  4. 我的vscode配置 利用Settings Sync一键安装
  5. Istio Pilot 源码分析(一)
  6. 梦见有人追我我拼命逃
  7. 十大ERP系统排行榜—2022年
  8. freeradius mysql web_使用daloRADIUS Web程序管理FreeRADIUS服务
  9. 蛐蛐播放器 android,蛐蛐五线谱播放器
  10. 有多少旅游企业入驻了抖音平台?有多少抖音用户喜欢看旅游视频?
  11. 怎么更改网络中的计算机名字,计算机名称如何更改?电脑的计算机名修改方法...
  12. 【总结】信息安全工程师第二版-第1章 网络信息安全概述-03
  13. 《Windows游戏编程大师技巧》(第二版)第1章(下)
  14. SQL Server性能优化
  15. Linux就业技术指导(四):企业CDN缓存加速原理解密
  16. java匿名内部类,什么是匿名内部类,如何定义匿名内部类,如何使用匿名内部类?
  17. 一个简单的审批流程系统设计
  18. pythonista检测内容自动点击_Pythonista中文教程:100行代码实现一款远程键盘
  19. 真正实现flash涂鸦论坛
  20. 2012寻找国产手机的守望者 [转 IT时代周刊]

热门文章

  1. mysql 2003错误 10055_MYSQL无法连接 提示10055错误的解决方法
  2. vue 如何防止xss攻击 框架_LearningNotes-1/Vue/Vue中防止XSS脚本攻击 at master · axuu/LearningNotes-1 · GitHub...
  3. Go实现启动参数加载
  4. 简单介绍python装饰器
  5. 习题10-6 递归求Fabonacci数列 (10 分)
  6. 线性基+树上倍增 ---- BZOJ4568[线性基+树上倍增]
  7. [Scoi2016]背单词[字典树+dfs重构树[类似虚树]]
  8. 1021.删除最外层的括号
  9. win7 php mysql扩展名_Win7 iis php mysql 开发环境配置(详细)
  10. java汉字转换成拼音_Java代码将汉字转换成拼音