微信支付模块

阿昌微信支付博客地址

一、需求分析

        一些课程为收费课程,课程详情页面会有立即支付按钮,支付后才能观看。

支付后需要弹出微信二维码和一些订单号信息。

二、数据库表单设计

  • 两张表
  • 订单表(t_order):点击立即支付之后就会生成订单表的一行记录
  • 支付记录表(t_Pay_Log):支付后生成支付记录表的一行记录

三、controller层接口

按照支付的流程,controller一共五个接口(只介绍重要的接口)


接口一:

  • 点击立即购买按钮,根据课程id,在订单表中生成一个记录,并返回这个记录的订单号
    //1 生成订单的方法(点击付费课程的立即购买时)
    @PostMapping("/createOrder/{courseId}")
    public R saveOrder(@PathVariable String courseId, HttpServletRequest request) {//通过JWT工具类获取前端请求中的token从而获取用户id
        //创建订单,返回订单号
        String orderNo =
                orderService.createOrders(courseId, JwtUtils.getMemberIdByJwtToken(request));

        return R.ok().data("orderId",orderNo);//后面支付时需要订单号
    }
  • 注意有一个JWT工具类,解析request请求头中的token,从而得到用户ID 
  • 查看orderService实现类的createOrders方法: 
@Service
public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService {

    @Autowired
    private EduClient eduClient;

    @Autowired
    private UcenterClient ucenterClient;

    //1 生成订单的方法(点击付费课程的立即购买时)
    @Override
    public String createOrders(String courseId, String memberId) {
        //通过远程调用根据用户id获取用户信息
        UcenterMemberOrder userInfoOrder = ucenterClient.getUserInfoOrder(memberId);

        //通过远程调用根据课程id获取课信息
        CourseWebVoOrder courseInfoOrder = eduClient.getCourseInfoOrder(courseId);

        //创建Order对象,向order对象里面设置需要数据
        Order order = new Order();
        order.setOrderNo(OrderNoUtil.getOrderNo());//订单号(也可以用UUID生成,面试重点!!)
        order.setCourseId(courseId); //课程id
        order.setCourseTitle(c
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值