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

优质文章,第一时间送达

关注公众号后台回复paymall获取实战项目资料+视频

一、项目目标

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

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

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

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

二、具体调用流程

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

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

各系统交互流程为:

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

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

  3. 物业公司将商户标识和支付标识提供给应用端。

至此,物业公司注册流程完毕。接下来是支付流程。

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

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

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

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

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

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

注意:

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

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

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

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

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

  • 这里还涉及到退款使用哪个号进行退款的问题,这里设计为:使用支付中心流水号判定使用哪一笔订单退款。上送了支付中心生成的流水号后,根据流水号和商户标识以及支付标识检索出来的结果,进行退款,退款金额不可超过该笔流水号支付的金额。应用端可以根据业务需求自行选择退款方式,支付中心只做和流水号相关的退款。

  • 有关收银台,现在有些第三方支付存在自己的收银台,有的没有,所以支付中心必须有自己的收银台,但同时如果第三方支付存在已有收银台也没有必要跳转两次。所以这里的逻辑设计为:如果第三方存在必须跳转的收银台,使用第三方收银台,其余情况直接使用支付中心收银台。

  • 三、支付中心架构设计

    目前的系统功能整体架构如下:

    如图所示,从架构上主要分为四个大模块:

    1. 支付中心后台:主要是账号管理相关,物业公司的开户开通支付等提供支持

    2. 支付消息:主要是用于对应用端进行通知

    3. 交易核心:用来支撑整个系统的基础交易核心,参数组装发起,返回数据的处理,异常的处理和通知等。

    4. 渠道网关:解析应用端发送过来的请求,证书白名单的设置和使用,第三方api的调用等

    收银台

    渠道网关

    点击 “架构之路”,关注、置顶公众号

    支付账户管理

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

    request解析器

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

    交易核心

    交易核心的数据库设计

    分账资金流向

    四、目前预见的可能的问题

    1. 数据监控:出现数据异常,或者报错,及时在钉钉群里通知。

    2. 数据一致性问题:咱们的系统打算暂时只做一个模块,应用端可以到支付中心来同步数据。

    3. 稳定性问题,第三方支付不够稳定:主要是用户可能会用微信支付失败,又用支付宝支付。这个需要应用端进行监控,支付中心对于提供的不同订单号会实时发起支付。同一订单号,连续发起两次之间间隔不超过15秒。

    作者:fadεy

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

    有热门推荐????
    装X神器!NuShell,比XShell好用多了...美团三面:isEmpty 和 isBlank 的用法区别,你都知道吗?突然,我被裁了!Java 接入微信小程序-登录+支付完整流程实战(环境搭建+源码),网友:看完后秒懂!最强代码生成器平台,杀疯了~实现 Excel 导入导出
    阿里官宣:干掉Mybatis和MybatisPlus,推出新一代ORM框架FluentMybatis,太牛逼了!ELK 处理 Spring Boot 日志的这套方案最近火了,太妙了!点击阅读原文,前往学习SpringCloud实战项
    

一份完整的聚合支付设计方案,喜欢就拿去用吧!相关推荐

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

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

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

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

  3. 聚合支付设计方案,该如何设计?

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

  4. 聚合支付平台需要哪方面的技术?主要有哪些功能结构?

    2013年以来,微信支付宝等第三方支付机构快速占领支付市场,从最开始移动扫码支付市场的普及教育到如今的聚合支付+营销成为市场主流,经历了消费习惯的改革,支付方式的变迁,速度如此之快,仿佛在昨日: 如今 ...

  5. 聚合支付需要什么证?

    聚合支付,是连接着第三方支付机构和商户的中间商.直观理解是,一些商家出于成本考虑,不再单独一家家去接微信.支付宝.银联等各个支付通道,而是直接由聚合支付服务商提供一次性对接,同时支持多个支付方式,包括 ...

  6. 2020年聚合支付评级结果及如何开展评级工作经验分享

    一年一度的收单外包服务机构评级工作即将启动,笔者认为479家聚合支付机构也在关心本机构要不要进行评级并希望了解聚合支付评级要求.评级对机构有何意义和影响.目前聚合支付评级情况及如何开展评级工作.为此, ...

  7. 深度揭秘聚合支付的盈利模式

    当顾客准备买单的时候,老板一般会问这样一个问题:支付宝还是微信?这个对话背后是国内移动支付进入黄金时代的真实写照. 03年至06年,中国移动支付市场规模由1.3万亿跃升至36.33万亿.预计到17年底 ...

  8. 聚合支付与第四方支付平台的本质区别

    聚合支付和第四方支付平台是现今移动支付领域中的两种常见支付方式,它们在实际应用中有很多相同之处,并且都带来了人们生活中的便利.然而,这两种支付方式也存在本质上的区别,下面我将从不同角度对它们进行比较和 ...

  9. 聚合支付PC端-支付宝

    聚合支付 第一章 支付宝 文章目录 聚合支付 前言 一.开发前准备 1.1 获得沙箱账号 1.2 选择沙箱环境 1.3 配置商户参数 1.4 支付接入文档 二.java实现过程 1.pom中引入支付宝 ...

最新文章

  1. java多线程——饥饿和公平
  2. shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查)
  3. Swift - 使用NSNotificationCenter发送通知,接收通知
  4. bzoj 1911: [Apio2010]特别行动队 -- 斜率优化
  5. Java实现线程同步的方式
  6. 056、macvlan网络结构分析(2019-03-25 周一)
  7. IOS中的懒加载lazyLoad
  8. Vue.js学习系列(二十八)-- 计算属性(二)
  9. jupyter 功能插件
  10. python opencv 利用分水岭算法实现对物体的分割 图文详细注释版 以分割官网提供的硬币为例
  11. 英文单词打字练习与学习
  12. Unity游戏开发案例分享
  13. BOS启动的客户端,打开序时簿只显示一行
  14. SQL常用基础参考语句
  15. API 接口监控产品全新改版,免费开放全部功能
  16. 【嵌入式学习-STM32F103-TIM-编码器接口】
  17. O光 E光 双折射现象
  18. 转一位计算机牛人的心得,谈计算机和数学,很实用~
  19. golang采集网络流量等系统指标
  20. navicat设计表怎么给列加注释(简洁版)

热门文章

  1. python爬取京东手机数据_用scrapy爬取京东的数据
  2. C++虚函数表(vtable)和虚函数指针(vfptr)
  3. 深度学习的发展背景和历史
  4. 周昆 浙江大学计算机学院院长,周昆 - 国立浙江大学维基
  5. 程序员可迁移技能的培养
  6. 《大唐卫星网络电视》
  7. c++win32项目 如何显示后再删除一个绘图_iMATLAB 绘图扩展函数系列 | 让你绘图更自由(进阶专辑开篇)!...
  8. 东北大学OJ-1208: 实验2-7 :计算ASCII码值并输出
  9. 【Tool】常用 GIT 命令参阅
  10. 【matlab】【Datcom】气动解算软件win10报错解决办法及运行交互示例