(微服务实战)预付卡平台支付交易系统消费业务流程设计

在这里插入图片描述

1 交易系统技术架构

预付卡支付交易系统采用Dubbo3作为底层框架,支付交易系统分为账户系统、清结算系统、支付网关、核心支付系统等模块。系统整体采用微服务架构,容器化部署。
在这里插入图片描述
在这里插入图片描述

2 消费业务流程设计

预付卡系统消费场景分为线上和线下,线下可以使用实体卡和电子卡进行消费。线上消费场景依托预付卡小程序和APP,互联网用户可以通过小程序和APP在支持预付卡的商户进行消费

2.1 消费业务流程

消费业务流程主要涵盖了线下交易和线上交易,本文主要分析线下POS消费交易流程,参与的系统主要包含了POS终端、卡系统-支付交易系统、授权系统。以下是业务流程图
在这里插入图片描述

2.2 消费接口设计

2.2.1 通信协议

HTTP/JSON

2.2.2 接口定义

交易码:

交易码名称操作码说明
VOUCHER-PAY卡消费
参数名必/可选类型长度参数说明约束
voucherId必选字符32卡/劵号多张劵号以,分割
channel必选字符1消费来源1:旅游 2:生活服务
checkPwd必选字符1是否校验密码0:不校验 1:校验密码
payType必选字符1消费类型1:现金卡2:点卡
password可选字符6密码checkPwd=1必选
payJournal必选字符16统一支付流水号统一支付保证流水唯一
payTime必选字符32消费时间yyyyMMddHHmmss
payAmount必选数字10消费金额
settleAmount必选数字10结算金额结算金额
extendInfo可选字符1024接口扩展字段

响应信息定义:

参数名必/可选类型长度参数说明约束
respCode必选字符返回代码
respMess必选字符返回消息
tradeJournal必选字符交易流水
balance可选字符卡余额卡消费必选
2.2.3 消息样例

请求消息

{"VoucherPay": {"voucherId": "","channel": "","checkPwd": "","payType": "","password": "","payJournal": "","payTime": "","payAmount": "","settleAmount": "","extendInfo": ""}
}

响应消息

{"VoucherPayResp": {"respCode": "0","respMess": "成功","tradeJournal": "20240617191100","balance": "198.25"}
}

3 消费撤销业务流程设计

3.1 消费撤销业务流程

消费撤销业务流程主要涵盖了线下交易和线上交易,参与的系统主要包含了POS终端、卡系统-支付交易系统、授权系统。消费撤销流程和上图的消费流程基本一致,本文只对消费撤销接口设计进行分析

3.2 消费撤销接口设计

3.2.1 通信协议

HTTP/JSON

3.2.2 接口定义

交易码:

交易码名称操作码说明
PAY-ROLLBACK消费撤销

请求信息定义如下:

参数名必/可选类型长度参数说明约束
voucherId必选字符32卡/劵号多张劵号以,分割
channel必选字符1消费来源1:旅游 2:生活服务
serviceType必选字符1业务类型2:冲正(POS机自动发起)3:撤销(操作员发起)4:退货(订单部分退)
payType必选字符1消费类型1:现金卡2:点卡
payJournal必选字符32统一支付流水号统一支付保证流水唯一
retJournal必选字符32原支付流水号统一支付保证流水唯一
payTime必选字符32消费撤销时间yyyyMMddHHmmss
payAmount可选数字10消费金额
settleAmount可选数字10结算金额结算金额
extendInfo可选字符1024接口扩展字段信息

响应信息定义:

参数名必/可选类型长度参数说明约束
respCode必选字符返回代码
respMess必选字符返回消息
tradeJournal必选字符交易流水
balance必选字符卡余额
3.2.3 消息样例

请求消息

{"PayRollback": {"voucherId": "","channel": "","serviceType": "","payType": "","payJournal": "","retJournal": "","payTime": "","payAmount": "","settleAmount": "","extendInfo": ""}
}

响应消息

{"PayRollbackResp": {"respCode": "0","respMess": "成功","tradeJournal": "20240617191100","balance": "98.25"}
}

4 加入项目实战

欢迎关注我的视频号,视频号有相关技术和业务视频可学习支付业务/文旅行业数字化。探讨技术(系统架构、微服务、容器化、云原生),支付系统项目实战请加入我的付费社群。商务合作备注业务咨询
在这里插入图片描述

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

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

相关文章

市场情绪周期2024-6-17(补涨回头潮视角验证)

竞价隔夜单 看长江通信,38亿涨到40亿又回落,那么周末最大的利好消息加持下,隔夜单不及预期,金溢科技 更是如此;空间板华闻集团8天7板,连扳5板,一字跌停,它也是有车联网的&#xff0c…

【UIDynamic-动力学-UICollisionBehavior-碰撞模式-创建边界 Objective-C语言】

一、我们来说这个碰撞模式 1.把之前的代码备份一下,改个名字:“04-碰撞行为-碰撞模式”, 然后,command + R,先跑一下, 我现在,一点击,是这个红色的View、和蓝色的View、在发生碰撞, 我们说,碰撞模式是啥意思, collision里边,有一个叫做collisionMode, UICollis…

c++里对 new 、delete 运算符的重载

(1)c 里 我们可以用默认的 new 和 delete 来分配对象和回收对象。 new 可以先申请内存,再调用对象的构造函数; delete 则先调用对象的析构函数,再回收内存。当然,当我们为类定义了 operator new () 和 oper…

双层循环和循环控制语句的使用,while和until的语法使用

双层循环和循环控制语句的使用,while和until的语法使用 exit echo 打印 -n 表示不换行输出 -e 输出转译字符 \b:相当于退格键(backspace) \n:换行,相当于回车 \f:换行,换行后的…

Git仓库中文件的状态

0 Preface/Foreword 1 文件状态 文件包含以下4个状态: untracked,未跟踪,表示该文件在文件夹中,但是没有加入到git 仓库中进行版本管控。可以通过git add命令将该文件增加到git 仓库中。从untracked变为staged。unmodified&…

HarmonyOS之自选股App

支持在 鸿蒙、安卓、苹果设备上运行。 1.界面效果展示 2.数据存储 数据存储采用的是官方的 ohos.data.relationalStore.relationalStore stock_code表用来存储A股市场5000多家公司的股票代码和名称等信息 const TAB_STOCK_CODE "stock_code" const CREATE_TABL…

为企业提供动力:用于大型组织的WordPress

可扩展且灵活的架构可通过主题、插件和集成进行定制内置 SEO 功能和营销功能内容管理和协作工具支持多站点安装托管解决方案和面向平台的提供商采用现代前端技术的 Headless CMS 功能 拥有强大、灵活且可扩展的内容管理系统 (CMS) 对于大型组织至关重要。作为最受欢迎和广泛使用…

双层循环和循环控制语句的使用,以及while和until的语法使用

echo 打印 -n 表示不换行输出 -e 输出转义字符 /b:相当于退格键(backspace) /n: 换行,相当于回车 /f: 换行,换行后的新行的开头连着上一行的行尾 /t: 相当于tab键 又叫做横向制…

springboot与flowable(3):启动、审批、各个Service服务

一、启动流程 流程定义与实例的关系类似于Java的类与对象,通过定义的id创建流程实例,编写测试代码: package org.example.flowabledemo2;import org.flowable.engine.RuntimeService; import org.flowable.engine.runtime.ProcessInst…

Pikachu靶场--XSS

参考借鉴 Pikachu靶场之XSS漏洞详解_pikachu xss-CSDN博客 【皮卡丘03】一个视频讲清楚XSS跨站脚本_bilibili 反射型xss(get) 输入payload&#xff1a;<script>alert(123)</script> 解决一&#xff1a;在URL框内输入 解决二&#xff1a;修改最大长度 再次输入paylo…

【秋招突围】2024届秋招笔试-小红书笔试题-第三套-三语言题解(Java/Cpp/Python)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系计划跟新各公司春秋招的笔试题 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f4e7; 清隆这边…

YOLOV1-V3详细介绍(新手向、超详细)

本文主要是根据我自己的学习情况来进行讲解&#xff0c;以一个初学者的角度进行阐释&#xff0c;如果有更深层次的点没有涉及到&#xff0c;还请大家多多包涵。 目录 计算机视觉 主流算法 Two-stage&#xff08;双阶段&#xff09; One-stage&#xff08;单阶段&#xff09; …

Apache Doris 全新分区策略 Auto Partition 应用场景与功能详解 | Deep Dive系列

编辑&#xff1a;SelectDB 技术团队 在当今数据驱动的时代&#xff0c;如何高效、有序地管理数据库中的海量数据成为挑战。为了处理庞大的数据集&#xff0c;分布式数据库引入了类似分区和分桶策略&#xff0c;通过将数据按特定规则划分成较小的单位并分布到不同节点上&#x…

时间序列论文标准数据集

需要的同学私信联系&#xff0c;推荐关注上面图片右下角的订阅号平台 自取下载。 随着时间序列问题的复杂度逐渐提高&#xff0c;研究者们开始关注非线性和多变量问题。近年来&#xff0c;时间序列领域涌现出众多基于深度学习的先进框架&#xff0c;如Transformer、GNN、TCN、…

示例:WPF中TreeView自定义TreeNode泛型绑定对象来实现级联勾选

一、目的&#xff1a;在绑定TreeView的功能中经常会遇到需要在树节点前增加勾选CheckBox框&#xff0c;勾选本节点的同时也要同步显示父节点和子节点状态 二、实现 三、环境 VS2022 四、示例 定义如下节点类 public partial class TreeNodeBase<T> : SelectBindable<…

AI存储解决案例分享

AI数据管道&#xff08;Data Pipeline&#xff09;是指在AI项目中&#xff0c;数据从原始状态到最终可用模型的整个处理流程&#xff0c;包括数据采集、清洗、转换、分析、训练模型、验证模型直至部署和监控等多个环节。 在AI训练和推理过程中&#xff0c;多个管道可能同时读取…

使用 C# 进行面向对象编程:第 10 部分

封装和抽象之间的区别 对于 OOP 初学者来说&#xff0c;封装和抽象之间存在非常基本的区别。他们可能会对此感到困惑。但如果你详细了解这两个主题&#xff0c;就会发现它们之间存在巨大差异。 抽象意味着向用户隐藏不必要的数据。用户只需要所需的功能或根据其需求的输出。例…

修改ppt注册表,导出高分辨率图片

参考&#xff1a;PPT中导出高分辨率图片的方法 修改ppt注册表&#xff0c;导出高分辨率图片&#xff1a;【具体步骤】 1、运行-输入regedit&#xff0c;打开注册表编辑器&#xff1b; 2、找到ppt中选项&#xff0c;按下面路径找。 3、鼠标右键新建-DWORD(32位)(D)&#xff0c…

Python对象复制竟然有这么多种方式,赶紧学起来!

目录 1、浅拷贝:copy模块的copy()函数 📋 1.1 浅拷贝原理揭秘 1.2 实战演示:列表与字典的浅拷贝 列表浅拷贝示例 字典浅拷贝示例 1.3 注意事项:共享引用与独立对象 2、深拷贝:copy模块的deepcopy()函数 📌 2.1 深拷贝实现机制解析 2.2 深拷贝优势分析 2.3 深度…