课程支付功能(生成订单接口1) | 学习笔记

简介: 简介:快速学习课程支付功能(生成订单接口1)

开发者学堂课程【微服务+全栈在线教育实战项目演练(SpringCloud Alibaba+SpringBoot):课程支付功能(生成订单接口1)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/667/detail/11488


课程支付功能(生成订单接口1)

 

内容介绍:

一、 分析所需要的接口

二、 生成订单的接口

三、 根据订单 id 查询订单信息


一、 分析所需要的接口

使用代码生成器在 service-order 模块生成相关代码

image.png

首先,分析做课程支付的接口有那些?

1. 生成订单的接口,在订单表中加入一条数据

点立即购买,生成订单。

image.png

2. 根据订单 id 查询订单信息

在订单页面中,根据订单 id 查询订单信息。

 image.png

3.生成微信支付的二维码

点去支付,生成支付的二维码

image.png

4.查询订单支付状态接口

查询状态看订单是否成功,如果支付成功则回到课程详情页面,如果支付不成功则等待支付成功后,再跳转回课程详情页面。

 image.png

 

二、 生成订单的接口

1.点击“立即购买”,会生成课程的订单,跳转到订单页面

image.png

2.点立即购买,生成一个订单,向订单表中添加一条记录。

image.png

3.在表中加入订单号、课程 id、课程名称、课程封面、讲师名称这些值加入到表中。

image.png

3. 在这个过程中,会用到之前学的远程调用的技术点。

首先我们有一个课程的模块,在这个模块中,我们要做一个生成订单的功能,但是需要有课程信息的相关值,但是课程信息在课程表中,所以需要用到远程调用。在课程模块写一个根据课程id返回课程信息的接口,在 order 模块远程调用,得到课程信息。

在生成订单中,除了课程信息外,还需要其他的数据,这时还需要使用到远程调用。根据用户 id 查询出用户信息,从 ucenter 中调用所需要的信息。

image.png

代码示例:

#返回json的全局时间格式

spring.jackson.date-format=yyyy-11N-dd HH :mm :ss

spring.jackson.time-zone=GMT+8

#配置mapper xml文件的路径

mybatis-plus .mapper-locations=

classpath:cam /atguigu/eduorder/mapper /xoml/*.xml

#mybatis日志

mybatis-plus.configuration.log-impl=

ong. apache.ibatis.logging.stdcut.StdOutImpl

#nacos服务地址

spring.cloud.nacos .discovery.server-addr=127.0.0.1:8848

#开启熔断机制

feign.hystrix.enabled-true

#设置hystrix超时时间,默认1308ms

hystrix.cammand. def ault.execution

.isolation.thread.timeoutInMilliseconds=3008

@RestController

@RequestMapping(" / eduorder/order)

@CrossOrigin

public class OrderController {

@Autowired

private OrderService orderService;

//生成订单的方法

@PostMapping("createOrder/ {coursed}")

public R saveOrder(@PathVariable String courseId,HttpServletRequest request){

//创建订单,返回订单号

String orderNo= = orderService.createOrders

(courseId,JwtUtils.getMemberIdByJwtToken(request));

return R.ok().data("orderId" , orderNo) ;

@Service

public class OrderServiceImpl extends

ServiceImpl<OrderMapper,Order> implements OrderService {

//1生成订单的方法

@Override

public String createOrders(String courseld,String memberIdByJwtToken){

//通过远程调用根据用户id获取用户信息

//通过远程调用根据课程id获取课信息

return null;

}


三、 根据订单 id 查询订单信息

打开这个接口

image.png

代码示例:

//根据token获取用户信息

@GetMapping("getMemberInfo")

public R getMemberInfo(HttpServletRequest request) {

//调用jwt工具类的方法。根据request对象获取头信息,返回用户id

String memberId =

JwtUtils.getMemberIdByJwtToken(request) ;

//查询数据库根据用户id获取用户信息

UcenterMember member =

memberService.getById(memberId) ;

return R.ok() . data("userInfo" , member) ;

//根据用户id获取用户信息

@PostMapping(" getUserInfoOrder/{id})

public UcenterMemberOrder getUserInfoOrder(@PathVariable String id){

UcenterMember member = memberService. getById(id);

//把member对象里面值复制给UcenterMemberOrder对象

UcenterMemberOrder ucenterMemberOrder =

new UcenterMemberOrder() ;

BeanUtils.copyProperties(member, ucenterMemberOrder);

return ucenterMemberOrder;

//根据课程id查询课程信息

@PostMappingc"getCourselnfoOrderliid}

public CoursewebvoOrder getCourselnfoorder(@PathVariable String id) {

Coursewebvo courselnfo =

courseService.getBaseCourselnfo(id);

CourseWebVoOrder courseWebvoOrder =

newcoursewebVoOrderQ;

BeanUtils.copyProperties(courselnfo,coursewebvoOrder)

return courseWebvoOrder;}

#微信开放平台appid

wx. open. app_id=-wxed9954c01bb89b47

#微信开放平台appsecret

wx. open. app_secret=a7482517235173ddb4083788de60b90e

#徼信开放平台重定向url

wx. open. redirect_ur1=http://guli.shop/ api/ucenter/wx/callback

#返回json的全局时间格式

spring.jackson. date-format=

yyyy-MM-dd HH:mm: ssspring.jackson.time-zone=GMT+8

#配置mapper xml文件的路径

mybatis-plus.mapper-locations=

classpath:comatguigu/educenter/mapper/xml/*.xml

# nacos服务地址

spring.cloud. nacos.discovery.server-addr=127.0.0.1:8848

#mybatis日志

mybatis-plus.configuration. log-impl=org. apache. ibatis. logging.stdout.StdOutImpl

在 service-order 中就通过远程调用的方式,来调取相关信息,最后添加到数据库。首先,这三个服务在注册中心都需要进行注册,加上nacos地址,在启动类上加上一个注解。

在edu中也加上注册地址,在 order 里,在启动类上加一个注解。其次还有一个Enable Discover Client 注解。

通过 order 调用这两个服务,首先我们要创建两个 interface,一个是 edu 一个是 ucenter,在里面指定调用服务名称和调用接口的地址,最终实现远程调用。

本节课的小结:这节课主要分析了所需要做的接口,分别有生成订单的接口、根据订单 id 查询订单信息、生成微信支付的二维码、查询订单支付状态接口,最后把过程做了一个详细的分析。

相关文章
|
1月前
|
JSON API 数据格式
淘宝 / 天猫官方商品 / 订单订单 API 接口丨商品上传接口对接步骤
要对接淘宝/天猫官方商品或订单API,需先注册淘宝开放平台账号,创建应用获取App Key和App Secret。之后,详细阅读API文档,了解接口功能及权限要求,编写认证、构建请求、发送请求和处理响应的代码。最后,在沙箱环境中测试与调试,确保API调用的正确性和稳定性。
|
7月前
|
API 开发者
淘宝店铺订单接口丨淘宝店铺订单交易接口技术文档
淘宝店铺订单接口丨淘宝店铺订单交易接口技术文档
|
JSON 安全 API
淘宝订单接口对接实战:从申请到代码实现的全流程
随着电子商务的飞速发展,订单管理已成为电商生态中的核心环节。为了更高效地进行订单管理,许多商家选择通过API接口与外部系统进行数据交互。本文以淘宝订单接口为例,详细介绍如何从申请到代码实现,成功对接淘宝订单接口。
|
前端开发 小程序 安全
从零玩转系列之微信支付实战PC端我的订单接入退款取消接口1
从零玩转系列之微信支付实战PC端我的订单接入退款取消接口
89 0
|
JSON 前端开发 Java
从零玩转系列之微信支付实战PC端我的订单接入退款取消接口2
从零玩转系列之微信支付实战PC端我的订单接入退款取消接口
124 0
|
XML JSON 缓存
Java实现订单ID获取淘宝买到的订单详情数据接口方法
Java实现订单ID获取淘宝买到的订单详情数据接口方法
|
开发者 微服务
课程支付功能(生成订单接口2) | 学习笔记
简介:快速学习课程支付功能(生成订单接口2)
课程支付功能(生成订单接口2) | 学习笔记
|
消息中间件 数据库 RocketMQ
创建支付订单流程|学习笔记
快速学习创建支付订单流程
371 0
创建支付订单流程|学习笔记
|
消息中间件 算法 Java
创建支付订单实现|学习笔记
快速学习创建支付订单实现
131 0
创建支付订单实现|学习笔记
|
前端开发 JavaScript 开发者
课程支付流程总结 | 学习笔记
简介:快速学习课程支付流程总结
132 0
课程支付流程总结 | 学习笔记