课程支付功能(生成订单接口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 查询订单信息、生成微信支付的二维码、查询订单支付状态接口,最后把过程做了一个详细的分析。

相关文章
|
SQL 前端开发
创建订单【项目 商城】
创建订单【项目 商城】
58 0
|
XML JSON 缓存
Java实现订单ID获取淘宝买到的订单详情数据接口方法
Java实现订单ID获取淘宝买到的订单详情数据接口方法
|
开发者 微服务
课程支付功能(生成订单接口2) | 学习笔记
简介:快速学习课程支付功能(生成订单接口2)
课程支付功能(生成订单接口2) | 学习笔记
|
消息中间件 数据库 RocketMQ
创建支付订单流程|学习笔记
快速学习创建支付订单流程
359 0
创建支付订单流程|学习笔记
|
消息中间件 算法 Java
创建支付订单实现|学习笔记
快速学习创建支付订单实现
127 0
创建支付订单实现|学习笔记
|
前端开发 JavaScript 开发者
课程支付流程总结 | 学习笔记
简介:快速学习课程支付流程总结
119 0
课程支付流程总结 | 学习笔记
|
数据库 开发者 微服务
查询订单支付状态接口(2) | 学习笔记
快速学习查询订单支付状态接口(2)
查询订单支付状态接口(2) | 学习笔记
|
fastjson API 数据库
课程支付功能(准备工作) | 学习笔记
简介:快速学习课程支付功能(准备工作)
100 0
课程支付功能(准备工作) | 学习笔记
|
数据安全/隐私保护 开发者
会员功能|学习笔记
快速学习会员功能
会员功能|学习笔记
|
XML API 数据格式
课程支付功能(查询订单接口) | 学习笔记
简介:快速学习课程支付功能(查询订单接口)
101 0