电商+支付双系统项目------支付系统的构思

news2024/12/22 14:23:49

本篇文章会讲讲支付的一些相关的名词概念以及怎么去设计支付系统,通过理解支付的这些名词概念和支付系统的架构,为接下来写支付系统的代码做好准备。

目录

支付------支付资质

支付------支付场景

微信

付款码支付

Native支付

支付宝

条码付

扫码付

电脑网站支付

支付------名词解释

appid

openid

支付------同步和异步

支付---系统架构


支付------支付资质

支付资质就是可以收钱那个人,就是企业,那我自己做项目怎么办呢?我是自己有appid和秘钥的,相当于我就是企业

支付------支付场景

微信

付款码支付

就是让收银员来扫你的那种

Native支付

就是用户扫商家

其他几种支付我听不懂,暂时先放一放

支付宝

条码付

商家扫你

扫码付

你扫商家

电脑网站支付

就是你交学费,电脑出现一个二维码,你用支付宝扫一扫,然后支付,这个就是电脑网站支付

支付------名词解释

appid

这里的app是application的缩写,即“应用”的id。小程序也好,移动应用也好,网页应用也好,都属于应用,每个应用都有它的appid。一个应用和支付产品是什么关系呢?支付产品就是当面付,电脑网站支付,小程序支付,这些支付方式都叫支付产品。记住一句话:一个应用有多个支付产品。

openid

是微信独有的,是微信用户在公众号appid下的唯一用户标识(appid不同,则获取到的openid就不同),可用于永久标记一个用户。只有公众号支付和小程序支付需要传递这个参数。

支付------同步和异步

异步

支付结果以异步为准

支付---系统架构

那我们构思一下怎么去设计这个支付系统。我们是想让这个支付系统是独立的,也就是说不要把支付的代码写到之前的项目里去。为什么要这么做呢?我等会儿说,等我把我想说的说完。既然我们想把支付系统定位为一个独立的系统,那么这个独立的支付系统就要有自己专用的数据库/表,这个数据库/表只有支付系统可以使用,其他的Java应用不能连这个数据库。由于我这个项目中,关于支付只有一张表,再单独开一个数据库来专门存这张表,感觉有点搞笑,因此我就把这张关于支付系统的表和其他的表放在一起,也就是放在同一个数据库中,但这张表是我们专用的。往后支付系统的功能多了,什么账单,对账功能。你就可以搞个专用数据库。

回到刚刚的问题,为什么要单独搞一个独立的支付系统呢?一般正常人的想法是这样的:

你有没有想过,假如我像上面那样去设计这个支付系统,会有什么问题?

其实也没什么问题!但是当业务多了之后,就会变成这样:

那这个时候,仓库系统和活动系统都需要支付,那怎么办?拷贝代码呗!就像这样:

好了,现在假如你需要完成微信支付,要用到微信平台给我们的id和密钥,那这个时候你就要在这3个系统都配上密钥,这已经是比较麻烦的了,但是还有更麻烦的:假如你要修改密钥,那就废了!3个系统都要改,最后发现这个系统越来越差,越来越不可维护,那这个项目就废了!

所以我们要这样规划:

支付作为一个单独的系统,左边是我们的业务系统,右边是微信和支付宝,由支付系统完成微信和支付宝的对接。我们左边的业务系统不跟微信和支付宝打交道,微信支付宝密钥在支付系统里面,只有这一个地方需要配置。那业务系统和支付系统怎么交互呢?交互其实算比较简单,就两步:第一步发起支付,第二步支付成功,异步通知。发起支付这个步骤很简单,我们直接让他跳转到支付系统(这里跳转到支付系统不是说跳转到支付首页,而是跳转到支付接口。让他携带参数跳转过去,比如订单号,支付金额,支付方式微信支付宝这些参数),支付后,微信和支付宝会有一个异步通知,支付系统拿到这个异步通知,再去通知业务系统,我们这个项目用MQ来做异步通知。

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

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

相关文章

UE4学习笔记 FPS游戏制作5 动画蒙太奇制作开枪动画

创建一个蒙太奇 选择角色的骨骼,并重命名 编辑蒙太奇 将我们需要的动画拖动到Default下的两个白杠的上边那个里 然后在下方的Sections节点中,点击Preview后的Default,选中后,再点击PreviewAllScetions上百年的长的绿色的Defalut&…

jmeter遇到连接数据库的问题

jmeter连接mysql或者oracle简单,但是连接过inceptor吗? 上货 1、下载驱动inceptor 5.1.2.jar包 2、在添加驱动那里导入 3、在JBC request中的写法 PS:没什么可说的

源聚达科技:抖音店铺2024年卖什么好

随着时代的变迁和科技的进步,消费者的购物习惯与偏好也在不断演变。展望2024年,抖音作为新兴的电商平台,其店铺销售策略需紧跟潮流,才能在激烈的市场竞争中脱颖而出。那么,哪些产品将成为抖音店铺的新宠呢? 首当其冲&…

C#使用迭代器实现文字的动态效果

目录 一、涉及到的知识点 1.GDI 2.Thread类 3.使用IEnumerable()迭代器 二、实例 1.源码 2.生成效果: 一、涉及到的知识点 1.GDI GDI主要用于在窗体上绘制各种图形图像。 GDI的核心是Graphics类,该类表示GDI绘图表面,它提供将对象绘制…

人工智能专题:基础设施行业智能化的基础设施,自智网络双价值分析

今天分享的是人工智能系列深度研究报告:《人工智能专题:基础设施行业智能化的基础设施,自智网络双价值分析》。 (报告出品方:埃森哲) 报告共计:32页 自智网络驱动的电信产业变革 经过多年的…

mysql-E-R图的组成要素及其画法

一、概念结构设计-E-R图方法 实体关系图: 简记E-R图,是指以实体、关系、属性三个基本概念概括数据的基本结构,从而描述静态数据结构的概念模式。 实体型(Entity): 具有相同的特征和性质的集合体,用实体名及其属性名来…

SW2000TSN-千兆百兆车载以太网TSN交换机

更多资讯可以进入官网查看或者联系我们http://www.hdn-vdo.com

智慧公厕的主要应用

在现代社会中,随着城市化进程的加速推进,公共卫生设施的建设和管理变得愈加重要。而智慧公厕作为一种新型城市公共设施,正以其智能化、高效化的特点,成为改善城市卫生环境的重要手段。智慧公厕运用物联网、互联网、大数据、云计算…

SAP PP学习笔记- 豆知识02 - 品目要谁来维护?怎么决定更不更新品目的数量金额?

其实都是在品目类型的Customize中设定的。 咱们这里简单试着说一下什么场景使用。 1,SAP中品目有很多View,都要由哪些部门来维护呢? 其实就是谁用谁维护呗。 在新建一个品目的时候,品目Type本身就决定了该品目要由哪些部门来维…

《Go 简易速速上手小册》第5章:并发编程(2024 最新版)

文章目录 5.1 Goroutines 的基础 - Go 语言中的轻盈舞者5.1.1 基础知识讲解5.1.2 重点案例:并发下载器功能描述实现代码扩展功能 5.1.3 拓展案例 1:网站健康检查功能描述实现代码扩展功能 5.1.4 拓展案例 2:并发日志处理器拓展案例 2&#xf…

异质结太阳能电池中氢化本征非晶硅的设计

在硅异质结太阳能电池(SHJ)中,pn结由两种不同形貌的硅形成,即一种是n型晶体硅(c-Si),另一种是p掺杂(III族)元素掺杂)非晶硅(a-Si)。许…

静态时序分析:SDC约束命令set_clock_transition详解

相关阅读 静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html?spm1001.2014.3001.5482 在静态时序分析:SDC约束命令create_clock详解一文的最后,我们谈到了针对理想(ideal)时钟,可以使用set_clock_transition命令直…

java数据结构与算法刷题-----LeetCode696. 计数二进制子串

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 文章目录 1. 法一:时间复杂度O(n).空间复杂度O(n)2. 法二&…

【C++ QT项目2】——高仿安信可串口调试助手

【C QT项目2】——高仿安信可串口调试助手 1. 项目概述2. 项目UI设计3. 串口通信核心代码开发3.1 QSerialPort介绍及示例3.2 扫描系统串口3.3 数据的收发3.4 定时发送(QT定时器)3.5 HEX显示与发送 4. 串口调试助手功能的优化4.1 串口的实时扫描4.2 获取系…

skimage库简介

scikit-image 是专注于图像处理的Python包,全称是scikit-image SciKit。该包由python语言编写,由scipy 社区开发和维护,使用原生的Numpy数组作为图像对象。 一、skimage简介 skimage(scikit-Image)是基于python开发的…

petalinux安装

跟着正点原子文档安装的,记录一下 1. 安装包下载 xilinx官网(没有注册需要注册,注册比较慢,嫌弃耽搁时间直接用正点原子网盘里下好的) https://china.xilinx.com/support/download/index.html/content/xilinx/zh/dow…

人工智能学习与实训笔记(十四):Langchain Agent

0、概要 Agent是干什么的? Agent的核心思想是使用语言模型(LLM)作为推理的大脑,以制定解决问题的计划、借助工具实施动作。在agents中几个关键组件如下: Agent:制定计划和思考下一步需要采取的行动。Tools…

拿捏单链表

目录 引言 一:链表的定义 二:单链表的定义 三:单链表的增删查改 1.单链表增删查改及遍历的声明 注:在测试中创建指向头结点的指针plist 2.二级指针应用的说明 3.单链表的遍历 4.创建节点 5.单链表的插入 (1)头插 …

【深度学习:DICOM 注释工具】在 DICOM 注释工具中寻找的 7 个功能

【深度学习:DICOM 注释工具】在 DICOM 注释工具中寻找的 7 个功能 原生 DICOM 支持原生 3D 注释易于使用的界面DICOM 图像的自动注释质量控制功能审计跟踪SOC2 和 HIPAA 合规性 如果您尝试为医疗 AI 模型创建训练数据,您可能已经使用了免费的开源工具&am…

html从零开始9:javaScript简介,语句、标识符,变量,JavaScript引入到文件【搬代码】

javaScript简介 javaScript语句、标识符 变量 var num 10; var就是固定声明,num就是变量名&#xff0c;10就是变量&#xff1b;<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Comp…