zoukankan      html  css  js  c++  java
  • 微信扫码支付5-支付状态查询

    一、查询支付状态

    1、service层

    接口:OrderService

    boolean queryPayStatus(String orderNo);
    

    实现:OrderServiceImpl

    @Override
    public boolean queryPayStatus(String orderNo) {
        QueryWrapper<Order> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("order_no", orderNo);
        Order order = baseMapper.selectOne(queryWrapper);
        return order.getStatus() == 1;
    }
    

    2、controller层

    ApiOrderController:queryPayStatus

    @GetMapping("/query-pay-status/{orderNo}")
    public R queryPayStatus(@PathVariable String orderNo) {
        boolean result = orderService.queryPayStatus(orderNo);
        if (result) {//支付成功
            return R.ok().message("支付成功");
        }
        return R.setResult(ResultCodeEnum.PAY_RUN);//支付中
    }
    

    二、前端整合

    1、api

    api/order.js

    queryPayStatus(orderNo) {
        return request({
            baseURL: 'http://localhost:8170',
            url: `/api/trade/order/query-pay-status/${orderNo}`,
            method: 'get'
        })
    }
    

    2、axios响应拦截

    utils/request.js中的response响应拦截器

    else if (res.code === 25000) { // 支付中
      return response.data // 不显示错误信息
    }
    

    3、支付页面

    pages/pay/_id.vue

    import orderApi from '~/api/order'
    
    data() {
        return {
          timer: null // 定时器
        }
    },
    
    // created的时候就查询支付状态,没有必要,因为二维码页面尚未渲染,不可能支付成功
    mounted() {
        // 启动定时器
        this.timer = setInterval(() => {
          this.queryPayStatus()
        }, 3000)
    },
    
    methods: {
        // 查询订单状态
        queryPayStatus() {
          orderApi.queryPayStatus(this.payObj.out_trade_no).then(response => {
            console.log('查询订单状态:' + response.code)
        
            // 支付成功后的页面跳转
            if (response.success) {
              this.$message.success(response.message)
              console.log('清除定时器')
              clearInterval(this.timer)
              // 三秒后跳转到课程详情页面观看视频
              setTimeout(() => {
                this.$router.push({ path: '/course/' + this.payObj.course_id })
              }, 3000)
            }
          })
        }
    }
    
  • 相关阅读:
    flutter 布局
    常见错误
    xpath
    bzoj1485 [HNOI2009]有趣的数列 卡特兰数
    博弈 Nim问题 POJ2234
    bzoj 1014 [JSOI2008]火星人prefix
    codevs 1743 反转卡片 rope or splay
    bzoj 2326 矩阵乘法
    bzoj 1702 贪心,前缀和
    bzoj 1700 Problem Solving 解题 dp
  • 原文地址:https://www.cnblogs.com/smalldong/p/13909746.html
Copyright © 2011-2022 走看看