简单订单和支付业务的相关流程

news2024/11/29 10:55:42

1、订单创建、支付及订单处理流程图

2、创建HTTP客户端工具类

@Slf4j
public class HttpclientUtil {
    //类中定义了一个私有静态成员变量instance,并且将其初始化为HttpclientUtil类的一个实例,用于实现单例模式。
    private static HttpclientUtil instance = new HttpclientUtil();
    //定义了一个公共静态方法getInstance(),用于获取HttpclientUtil类的实例,因为构造函数是私有的,所以只能通过该静态方法获取类的实例
    public static HttpclientUtil getInstance() {
        return instance;
    }
    
    //定义了一个名为payGet的公共方法,用于发送HTTP GET请求,并接收一个字符串参数uri,表示要请求的目标资源的URI
    public PayResp payGet(String uri) {
        //首先创建了一个CloseableHttpClient对象httpClient,并利用HttpClientBuilder类的create()方法来构建一个默认的CloseableHttpClient实例
        //获得Http客户端(可以理解为:你得先有一个浏览器;注意:实际上HttpClient与浏览器是不一样的)
        CloseableHttpClient httpClient = HttpClientBuilder.create().build();
        log.debug("远程连接:{uri}", uri);

        //创建了一个HttpGet对象httpGet,并传入目标资源的URI
        HttpGet httpGet = new HttpGet(uri);
        //定义了一个PayResp类型的变量r,用于存储HTTP响应的结果
        PayResp r = null;

        //响应
        //创建了一个CloseableHttpResponse对象response,并尝试执行HTTP GET请求,并将响应结果赋值给response
        CloseableHttpResponse response = null;

        try {
            response = httpClient.execute(httpGet);

            //然后从响应的实体中获取到返回的JSON字符串,并利用JSONObject进行解析,将其转换为PayResp对象
            HttpEntity entity = response.getEntity();
            JSONObject json = new JSONObject(EntityUtils.toString(entity));
            r = json.toBean(PayResp.class);
            log.debug("获取远程对象:{}", r);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //在try...catch块中捕获可能发生的异常,并在finally块中释放相关资源,包括关闭httpClient和response
            try {
                // 释放资源
                if (httpClient != null) {
                    httpClient.close();
                }
                if (response != null) {
                    response.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        //最后返回r对象,即HTTP响应结果的PayResp对象
        return r;
    }
}

3、实体类及数据库表

1. 订单表

2. 订单详情表order_details_tab(略)

3. 商品表goods_tab(略)

4. 支付表payment_tab(略)

5. 交易表transaction_tab(略)

4、具体业务及其实现逻辑

未完待续。。。

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

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

相关文章

LV.12 D20 RTC实验 学习笔记

一、RTC简介 RTC(Real Time Clock)即实时时钟,它是一个可以为系统提供精确的时间基准的元器件,RTC一般采用精度较高的晶振作为时钟源,有些RTC为了在主电源掉电时还可以工作,需要外加电池供电 二、Exynos4412下的 RTC控制器 它支持…

手摸手Element-Plus组件化开发

前端环境准备 编码工具: VSCode 依赖管理:NPM 项目构建: Vuecli NPM的全称是Node Package Manager,是一个NodeJS包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准。2020年3月17日,Github宣布收购npm&am…

【研究中2】sql server权限用户设置

--更新时间2023.11.26 21:30 负责人:jerrysuse DBAliCMSIF EXISTS (select * from sysobjects where namehkcms_admin)--判断是否存在此表DROP TABLE hkcms_adminCREATE TABLE hkcms_admin (id int identity(1, 1),--id int primary key identity…

《已解决:TypeError: unhashable type: ‘slice‘ 问题》

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页: 🐅🐾猫头虎的博客🎐《面试题大全专栏》 🦕 文章图文并茂&#x1f996…

基于springboot学籍管理系统

一、设计目的 1. 复习、巩固Java语言的基础知识,进一步加深对Java语言的理解和掌握; 2. 课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题…

第二十三章 解析PR曲线、ROC曲线、AUC、AP(工具)

混淆矩阵Confusion Matrix 混淆矩阵定义 混淆矩阵是机器学习中总结分类模型预测结果的情形分析表,以矩阵形式将数据集中的记录按照真实的类别与分类模型预测的类别判断两个标准进行汇总。其中矩阵的行表示真实值,矩阵的列表示预测值,下面我…

cephadm部署ceph quincy版本,使用ceph-csi连接

环境说明 IP主机名角色 存储设备 192.168.2.100 master100 mon,mgr,osd,mds,rgw 大于5G的空设备192.168.2.101node101mon,mgr,osd,mds,rgw大于5G的空设备192.168.2.102node102mon,mgr,osd,mds,rgw大于5G的空设备 关闭防火墙 关闭并且禁用selinux 配置主机名/etc/hosts …

【Amazon】在Amazon EKS集群中安装部署最小化KubeSphere容器平台

文章目录 一、准备工作二、部署 KubeSphere三、访问 KubeSphere 控制台四、安装Amazon EBS CSI 驱动程序4.1 集群IAM角色建立并赋予权限4.2 安装 Helm Kubernetes 包管理器4.3 安装Amazon EBS CSI 驱动程序 五、常见问题六、参考链接 一、准备工作 Kubernetes 版本必须为&…

RocketMQ的push消费方式实现的太聪明了

最近仍然畅游在RocketMQ的源码中,这几天刚好翻到了消费者的源码,发现RocketMQ的对于push消费方式的实现简直太聪明了,所以趁着我脑子里还有点印象的时候,赶紧来写一篇文章,来掰扯一下,防止过两天就忘得一干…

[网络] 5. TCP 链接的建立与释放~汇总

大部分内容源于网络加之个人理解~巨人的肩膀有多大决定你可以看得多远~ 文章目录 1. 三次握手说一下三次握手的过程为什么是三次握手 2. 四次挥手说一下四次挥手的过程为什么需要四次挥手有可能出现三次挥手吗,什么时候会出现呢?为…

video标签在h5中被劫持问题

将video的视频链接转为blob export const encryptionVideo (options: URL) > {return new Promise((resolve, reject) > {window.URL window.URL || window.webkitURL;var xhr new XMLHttpRequest();xhr.open(GET, options.url, true);xhr.responseType blob;xhr.onl…

正则化与正则剪枝

写在前面:本博客仅作记录学习之用,部分图片来自网络,如需引用请注明出处,同时如有侵犯您的权益,请联系删除! 文章目录 引言正则化为什么会过拟合拉格朗日与正则化梯度衰减与正则化 应用解决过拟合网络剪枝 …

JPA 自关联 设置单向多对一

Spring boot 3 JPA中,遇到一个需求,建一个数据字典表: Dictionary,存放两级数据,第一级为字典项目,第二级为项目内容,查询时要把parent_id对应父项的名称也一起查出来,返回前端。 …

VUE简易计划清单

目录 效果预览图 完整代码 效果预览图 完整代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>…

Web前端 ---- 【Vue】什么?代码堆在一起不好维护?辛辛苦苦改造的单文件组件用不了?看我直接Vue Cli脚手架安排

目录 前言 单文件组件 什么是单文件组件 单文件组件的内容 Es6模块的导入和导出 创建单文件组件 Vue Cli脚手架 前言 继上篇文章Vue组件的使用介绍了如何使用Vue组件&#xff0c;但是发现有一个很重要的问题&#xff0c;就是代码复用性很差&#xff0c;并且无法提供样式…

文件的写入和读取操作

题目&#xff1a; 编写一个程序&#xff0c;实现以下功能&#xff1a; 1. 创建一个新的文本文件&#xff0c;并将用户输入的数据写入文件中。 2. 打开已存在的文本文件&#xff0c;并将其中的数据显示在屏幕上。 #include <stdio.h> #include <stdlib.h> void wri…

事件委派+自定义属性+编程式导航实现路由跳转及传参

当我们页面中有许多a标签需要实现点击跳转到同一个页面并携带不同的参数时&#xff0c;我们就可以使用事件委派自定义属性编程式导航 的方式&#xff0c;用最小的内存实现路由跳转的最大效率。 为什么我们不用router-link 进行跳转&#xff1f; 要知道&#xff0c;我们页面中…

汇编:关于栈的知识

1.入栈和出栈指令 2. SS与SP 3. 入栈与出栈 3.1 执行push ax ↑↑ 3.2 执行pop ax ↓↓ 3.3 栈顶超界的问题 4. 寄存器赋值 基于8086CPU编程时&#xff0c;可以将一段内存当作栈来使用。一个栈段最大可以设为64KB&#xff08;0-FFFFH&#xff09;。 1.入栈和出栈指令…

058-第三代软件开发-文件Model

第三代软件开发-文件Model 文章目录 第三代软件开发-文件Model项目介绍文件Model 关键字&#xff1a; Qt、 Qml、 关键字3、 关键字4、 关键字5 项目介绍 欢迎来到我们的 QML & C 项目&#xff01;这个项目结合了 QML&#xff08;Qt Meta-Object Language&#xff09;…

[计算机网络]应用层概述

0.写在前面: 该层为教学模型的最后一层,某种意义上来说是最接近各位开发者的一层,正因如此,这层中的很多定义和概念大家都有属于自己的理解, 完全按照书本反而才是异类,因此在这里我会去结合我做前端开发的一些经验,来处理和讲解一些概念,另外本层中的部分协议也不会过多阐述了…