目录
[Day08-01 - 今日课程内容介绍](#Day08-01 - 今日课程内容介绍)
[Day08-02 - 导入地址簿模块功能代码_需求分析和设计](#Day08-02 - 导入地址簿模块功能代码_需求分析和设计)
[Day08-03 - 导入地址簿模块功能代码_代码导入](#Day08-03 - 导入地址簿模块功能代码_代码导入)
[Day08-04 - 导入地址簿模块功能代码_功能测试](#Day08-04 - 导入地址簿模块功能代码_功能测试)
[Day08-05 - 用户下单_需求分析和设计_接口设计](#Day08-05 - 用户下单_需求分析和设计_接口设计)
[Day08-06 - 用户下单_需求分析和设计_数据库设计](#Day08-06 - 用户下单_需求分析和设计_数据库设计)
[Day08-07 - 用户下单_代码开发 1](#Day08-07 - 用户下单_代码开发 1)
[Day08-08 - 用户下单_代码开发 2](#Day08-08 - 用户下单_代码开发 2)
[Day08-09 - 用户下单_代码开发 3](#Day08-09 - 用户下单_代码开发 3)
[Day08-10 - 用户下单_代码开发 4](#Day08-10 - 用户下单_代码开发 4)
[Day08-11 - 用户下单_功能测试](#Day08-11 - 用户下单_功能测试)
[Day08-12 - 订单支付_微信支付介绍_微信支付产品和微信支付接入流程](#Day08-12 - 订单支付_微信支付介绍_微信支付产品和微信支付接入流程)
[Day08-13 - 订单支付_微信支付介绍_微信小程序支付时序图](#Day08-13 - 订单支付_微信支付介绍_微信小程序支付时序图)
[Day08-14 - 订单支付_微信支付介绍_微信支付相关接口介绍](#Day08-14 - 订单支付_微信支付介绍_微信支付相关接口介绍)
[Day08-15 - 订单支付_微信支付准备工作](#Day08-15 - 订单支付_微信支付准备工作)
[Day08-16 - 订单支付_导入功能代码](#Day08-16 - 订单支付_导入功能代码)
[Day08-17 - 订单支付_阅读订单支付功能代码](#Day08-17 - 订单支付_阅读订单支付功能代码)
[Day08-18 - 订单支付_功能测试](#Day08-18 - 订单支付_功能测试)
Day08-01 - 今日课程内容介绍

Day08-02 - 导入地址簿模块功能代码_需求分析和设计

Day08-03 - 导入地址簿模块功能代码_代码导入
问题:设置默认地址是怎么实现的?
先根据用户id将所有地址设置为非默认地址(0)
然后根据主键id将需要的地址设置为默认地址
Day08-04 - 导入地址簿模块功能代码_功能测试
Day08-05 - 用户下单_需求分析和设计_接口设计

Day08-06 - 用户下单_需求分析和设计_数据库设计

Day08-07 - 用户下单_代码开发 1

Day08-08 - 用户下单_代码开发 2
Day08-09 - 用户下单_代码开发 3
Day08-10 - 用户下单_代码开发 4
Day08-11 - 用户下单_功能测试
Day08-12 - 订单支付_微信支付介绍_微信支付产品和微信支付接入流程

Day08-13 - 订单支付_微信支付介绍_微信小程序支付时序图

问题:你能将微信支付流程说一遍吗?
用户,微信小程序,商户系统,微信后台
用户在微信小程序下单,将信息给商户系统,商户系统返回订单号等给微信小程序
微信小程序发起微信支付商户系统,商户系统调用微信后台的微信下单接口
返回预支付交易表示,并组合签名(防止消息泄露),返回支付参数
用户确认支付,真正调用微信支付,返回支付结果并显示
同时推送支付结果给商家并更新订单状态
Day08-14 - 订单支付_微信支付介绍_微信支付相关接口介绍



问题:什么是内网穿透?
Day08-15 - 订单支付_微信支付准备工作
Day08-16 - 订单支付_导入功能代码

Day08-17 - 订单支付_阅读订单支付功能代码

Day08-18 - 订单支付_功能测试
总结
订单支付的流程懂了,但是具体的操作代码还是不是特别理解,有时间还是得学学
本课程主要内容包括地址簿模块和订单支付功能的开发。在地址簿模块中,讲解了设置默认地址的实现方式:先通过用户ID将所有地址设为非默认状态,再根据主键ID设置特定地址为默认。订单功能开发包括需求分析、数据库设计、代码实现和测试。重点介绍了微信支付流程:用户在小程序下单后,商户系统返回订单信息,发起微信支付请求,商户系统调用微信接口生成预支付标识,用户确认支付后完成交易并更新订单状态。课程还涉及内网穿透技术及微信支付接口的准备工作。
后端开发实战课程核心知识点总结(3000 字版)
本次课程体系围绕后端模块化开发与第三方支付接口集成两大核心方向展开,涵盖地址簿模块全流程开发、订单支付模块微信支付接入、内网穿透技术应用三大板块,完整覆盖了从需求分析、数据库设计、代码实现到第三方接口联调的全链路开发流程。以下是对课程核心知识点的系统性总结与深度解析。
一、地址簿模块:标准化后端模块开发全流程
地址簿模块作为电商 / 社交类应用的基础功能模块,课程以其为载体,完整演示了后端模块开发的标准化流程,核心涵盖需求分析、数据库设计、代码实现、功能测试四大阶段,是掌握后端模块化开发的核心案例。
(一)需求分析与接口设计
需求分析是模块开发的起点,课程明确地址簿模块的核心业务需求:用户地址的增删改查、默认地址设置与查询,并基于需求拆解出标准化接口体系,这是后端开发中 "需求落地" 的关键思维。
核心业务需求:支持用户新增收货地址、查询全部地址、查询默认地址、修改地址信息、删除地址、设置默认地址。其中默认地址设置是核心难点,需保证同一用户仅存在一个默认地址,下单时自动调用默认地址。
接口设计原则:遵循 RESTful 接口设计规范,明确接口请求方式(GET/POST/PUT/DELETE)、请求参数、响应格式,同时设计权限校验逻辑,确保仅登录用户可操作自己的地址数据。
关键问题解析:课程针对 "设置默认地址的实现逻辑" 展开深度讲解,核心原理为:更新地址表中用户所有地址的默认状态为 0,再将目标地址设为 1,通过数据库事务保证操作原子性,避免出现多个默认地址的异常情况。
(二)数据库设计:规范化表结构构建
数据库是后端模块的数据基石,课程以规范化设计为核心,讲解地址簿模块的数据库表结构设计,涵盖实体属性、字段约束、关联关系三大核心要点。
核心表设计:设计用户地址表,核心字段包括:地址 ID(主键)、用户 ID(外键关联用户表)、收件人姓名、手机号、省市区、详细地址、是否默认地址(布尔型 / 整型)、创建时间、更新时间。
规范化设计原则:
遵循第三范式:将用户信息拆分至用户表,地址表仅存储用户 ID 外键,避免数据冗余;
字段约束:手机号设置唯一性校验(同用户)、详细地址非空、默认地址默认值为 0;
索引优化:为用户 ID、是否默认地址字段建立索引,提升查询效率,尤其是 "查询默认地址" 高频场景。
关联关系设计:地址表与用户表为一对多关系,一个用户可拥有多个地址,一个地址仅属于一个用户,通过外键约束保证数据完整性。
(三)代码实现:分层架构与核心逻辑开发
课程以 Java 后端技术栈(结合 Spring Boot 框架)为基础,讲解地址簿模块的代码分层开发,核心遵循Controller-Service-DAO三层架构,实现业务逻辑与数据访问解耦。
分层开发核心:
Controller 层:接收前端请求,参数校验,调用 Service 层方法,返回标准化响应结果;
Service 层:封装核心业务逻辑,处理默认地址设置、地址增删改查的业务规则,实现事务管理;
DAO 层(Mapper 层):通过 MyBatis/MyBatis-Plus 实现数据库交互,编写 SQL 映射语句,完成数据的增删改查。
核心功能代码实现:
新增地址:校验参数合法性,若为首个地址自动设为默认地址,插入数据库;
设置默认地址:开启事务,先将用户所有地址的默认状态置 0,再更新目标地址为 1,提交事务;
查询地址:根据用户 ID 查询所有地址,单独查询默认地址并封装结果。
异常处理:设计统一异常处理器,捕获参数校验异常、数据库操作异常,返回友好的错误提示,提升接口健壮性。
(四)功能测试:单元测试与接口联调
功能测试是保证模块可用性的关键,课程讲解地址簿模块的功能测试流程,核心包括单元测试与接口联调两部分。
单元测试:针对 Service 层核心方法编写单元测试用例,验证默认地址设置、地址新增 / 删除等逻辑的正确性,使用 JUnit、Mockito 等测试框架模拟依赖,隔离测试环境。
接口联调:使用 Postman、Swagger 等工具测试接口,验证请求参数、响应结果、异常场景的正确性,重点测试默认地址设置的边界情况(如重复设置默认地址、删除默认地址后自动切换等)。
二、订单支付模块:微信支付接口集成核心技术
订单支付模块是电商应用的核心盈利模块,课程以微信支付接入为核心,完整讲解支付模块的需求分析、接口设计、数据库设计、代码开发、内网穿透联调全流程,核心覆盖微信支付 V3 接口的接入原理与实战实现。
(一)需求分析与接口设计
支付模块需求围绕用户下单、支付、回调、订单状态流转展开,课程明确核心需求:用户下单后生成订单,调用微信支付接口完成支付,接收支付回调更新订单状态,支持订单查询、支付结果展示等功能。
核心接口设计:
下单接口:接收商品信息、金额、用户 ID,生成订单并调用微信统一下单接口;
支付回调接口:接收微信支付的异步通知,验签、解密后更新订单状态;
订单查询接口:根据订单号查询订单支付状态,供前端展示;
退款接口(拓展):处理支付成功后的退款申请,调用微信退款接口。
支付流程设计:明确用户下单→调用统一下单→微信生成预支付 ID→前端调起支付→用户支付→微信回调→更新订单状态的完整流程,这是支付模块开发的核心逻辑主线。
(二)数据库设计:订单与支付关联表设计
支付模块的数据库设计需关联订单表、支付记录表,保证订单与支付数据的一致性,课程重点讲解核心表结构与状态流转设计。
核心表设计:
订单表:存储订单基础信息,包括订单 ID、用户 ID、商品名称、金额、订单状态(未支付 / 已支付 / 已关闭 / 已退款)、创建时间、支付时间等;
支付记录表:存储支付相关信息,包括支付 ID、订单 ID、支付方式、支付金额、支付状态、微信支付订单号、回调时间等。
状态流转设计:定义订单状态流转规则,未支付订单可支付 / 关闭,已支付订单可退款,关闭 / 退款订单为终态,通过数据库字段约束保证状态流转的合法性。
(三)微信支付接入核心原理与配置
微信支付接入的核心是身份认证、签名验签、回调处理,课程详细讲解微信支付 V3 接口的接入原理与配置步骤,这是支付模块开发的技术核心。
微信支付核心配置:
基础信息:商户号(mch_id)、公众号 / 小程序 AppID、APIv3 密钥(32 位,用于解密回调数据);
证书配置:商户 API 证书(apiclient_cert.pem)与私钥(apiclient_key.pem),用于接口请求签名,证书有效期 5 年,需定期更新。
签名与验签机制:
签名:商户调用微信接口时,将请求参数按 ASCII 排序拼接,加上 API 密钥,通过 MD5(V2)/SHA256withRSA(V3)生成签名,附加到请求头,验证请求合法性;
验签:微信支付回调时,商户需通过平台证书验签,确认回调数据来自微信官方,避免伪造请求,保障支付安全。
核心接口调用:
统一下单接口:调用https://api.mch.weixin.qq.com/pay/unifiedorder,传入订单信息、回调地址,获取预支付 ID(prepay_id),前端通过 prepay_id 调起微信收银台;
回调接口:微信支付完成后,主动向商户配置的 notify_url 发送异步通知,商户需接收并处理该通知,返回 SUCCESS 响应(否则微信会多次重试)。
(四)代码实现:Spring Boot 集成微信支付
课程以 Spring Boot 为框架,讲解微信支付的代码实现,核心包括配置类、工具类、业务逻辑层三部分,实现支付流程的标准化开发。
核心依赖引入:在 pom.xml 中引入 HTTP 客户端依赖(httpclient)、XML 处理依赖(jackson-dataformat-xml)、Spring Boot Web 核心依赖,满足接口调用与数据处理需求。
配置类开发:编写 WxPayConfig 配置类,通过 @ConfigurationProperties 注解读取 application.yml 中的微信支付配置参数(AppID、商户号、APIv3 密钥、回调地址),实现配置与代码解耦。
工具类开发:
签名工具类:实现参数排序、签名生成逻辑,支持 MD5 与 SHA256withRSA 两种签名方式;
HTTP 请求工具类:封装 POST 请求,将参数转换为 XML 格式,调用微信支付接口,处理响应结果。
业务逻辑开发:
下单逻辑:生成唯一订单号,调用统一下单接口,获取支付链接 / 预支付 ID,返回给前端;
回调逻辑:编写回调接口,接收微信回调数据,验签、解密后更新订单状态为已支付,返回 SUCCESS 响应;
订单查询逻辑:调用微信订单查询接口,核对订单状态,同步至本地数据库。
三、内网穿透:本地开发与第三方接口联调必备技术
内网穿透是本地开发环境与公网服务交互的核心技术,课程针对微信支付回调的特殊需求,详细讲解内网穿透的原理、应用场景与实战配置,是支付模块开发的必备技能。
(一)内网穿透核心原理
课程首先明确内网穿透的核心定义:突破本地局域网与公网的网络隔离,将本地服务映射为公网可访问的地址,解决本地开发中第三方接口回调无法访问的问题。
核心痛点:本地开发环境的服务地址为127.0.0.1或192.168.x.x,属于私有 IP,微信支付、支付宝等第三方平台的服务器无法直接访问,导致回调接口无法接收支付结果。
技术原理:通过内网穿透工具(如 ngrok、Cloudflare Tunnel、natapp),在本地启动客户端连接公网穿透服务器,生成临时公网域名,将公网请求转发至本地服务,实现本地服务的公网访问。
核心要求:微信支付要求回调地址必须为公网可访问的 HTTPS 地址,因此内网穿透需支持 HTTPS 协议,满足官方合规要求。
(二)内网穿透在微信支付开发中的应用场景
课程重点讲解内网穿透的核心应用场景,明确其在支付模块开发中的不可替代性:
本地回调联调:微信支付的异步回调必须通过公网地址接收,内网穿透是本地开发阶段唯一可行的方案,无需部署云服务器即可完成完整支付流程测试;
沙箱环境测试:微信支付沙箱环境(模拟真实交易)同样要求回调地址为公网地址,内网穿透可快速搭建测试环境,降低开发成本;
实时日志调试:通过内网穿透工具的日志功能,可实时查看微信支付的回调请求,快速定位签名错误、参数不匹配等问题,提升联调效率。
(三)内网穿透实战配置
课程以常用工具为例,讲解内网穿透的配置步骤,核心流程如下:
工具选择:根据需求选择工具,免费优先选择 Cloudflare Tunnel、ngrok,稳定需求可选择付费工具(如 natapp);
本地服务启动:启动 Spring Boot 支付项目,确保本地服务正常运行(默认端口如 8080);
穿透工具配置:
启动穿透客户端,设置本地端口(如 8080)、协议(HTTPS);
生成公网临时域名(如https://xxx.trycloudflare.com);
微信商户平台配置:在微信支付商户平台的 "开发配置" 中,将支付回调地址修改为穿透生成的公网地址(如https://xxx.trycloudflare.com/pay/notify);
测试验证:发起支付请求,完成支付后查看本地服务是否接收到微信回调,验证订单状态更新是否正常。
(四)注意事项与生产环境替代方案
课程强调内网穿透的局限性,明确开发与生产环境的差异:
开发阶段注意事项:
回调接口必须返回 SUCCESS 响应,否则微信会多次重试,导致数据异常;
必须严格执行验签、解密流程,避免伪造请求带来的资金风险;
穿透域名可能随工具重启变化,需及时更新配置。
生产环境替代方案:内网穿透仅适用于本地开发,生产环境需采用正式方案:
购买云服务器(如阿里云、腾讯云),部署后端服务;
申请备案域名,配置 SSL 证书,实现 HTTPS 访问;
采用云服务商的 CDN 加速,提升接口访问速度,保证高可用性。
四、课程核心开发思维与技能总结
本次课程不仅讲解具体技术点,更传递了后端开发的核心思维,是从 "代码编写" 到 "工程化开发" 的关键过渡:
模块化开发思维:以地址簿模块为基础,掌握后端模块的需求拆解、接口设计、分层开发、测试全流程,理解 "高内聚、低耦合" 的架构设计原则;
第三方接口集成思维:以微信支付接入为核心,掌握第三方接口的接入流程、签名验签、回调处理、异常处理,理解金融类接口的安全合规要求;
本地开发联调思维:掌握内网穿透技术,解决本地服务与公网服务的交互问题,提升开发效率,理解开发与生产环境的差异;
规范化开发思维:遵循接口设计规范、数据库规范化设计、代码分层架构,培养标准化、工程化的开发习惯,提升代码可读性、可维护性。
本次课程覆盖的知识点是后端开发的核心基础,地址簿模块的模块化开发能力可迁移至订单、商品、用户等其他模块,微信支付接入与内网穿透技术是电商类应用开发的必备技能。掌握这些知识点,不仅能完成本次课程的实战项目,更能为后续复杂后端项目开发奠定坚实基础。
