前端 -PC 端-支付流程

简介: 前端 -PC 端-支付流程

1. 前言

  1. 之前写的移动端支付 是基于vue3+H5的,可能封装的比较多点,导致看不太懂,今天来个 简单的, 深入浅出
  2. 详细的微信支付 流程 比如申请账号 建议看 微信支付官方文档
  3. 这里仅以微信支付为例,其他平台都差不多,看官方文档就行
  4. 这里使用的是vue2+elementUI

2.  支付产品

  1. 支付产品列表image.png
    微信支付产品列表.png
  2. 我这里只选择 Native支付,方式不通用
  3. Native支付是指商户系统按微信支付协议生成支付二维码,用户再用微信“扫一扫”完成支付的模式。
    该模式适用于PC网站、实体店单品或订单、媒体广告支付等场景。 开发文档

3.  获取产品列表

  1. 发起产品列表请求

productListApi().then(response => {
                this.productList = response.data.productList
            })
  1. 为了方便,减少阅读难度 没有使用async/await
  2. productListApi 自然是封装的 api接口

4.  下单业务

4.1 下单接口

  1. 用户下单

//调用统一下单接口
                    wxNativePayApi(this.payOrder.productId).then(response => {
                        this.codeUrl = response.data.codeUrl
                        this.orderNo = response.data.orderNo
                        this.codeDialogVisible = true
                        // 启动定时器
                        this.timer = setInterval(() => {
                            this.queryOrderStatus()
                        }, 3000)
                    })
  1. wxNativePayApi() 是 支付Native支付接口
  2. 支付需要 产品列表返回的每条产品的产品id
  3. codeDialogVisible 控制显示 支付二维码的
  4. orderNo 这次下单的 订单号/订单 id
  5. codeUrl 回调url
  6. native下单接口

4.2 支付二维码

<!-- 微信支付二维码 -->
        <el-dialog :visible.sync="codeDialogVisible" :show-close="false" @close="closeDialog" width="350px" center>
            <qriously :value="codeUrl" :size="300" />
            使用微信扫码支付
        </el-dialog>
  1. vue-qriously  生成二维码的
  2. value就是 下单 接口返回的回调url

4.3 订单状态

  1. 支付成功,弹出 支付成功提示
  2. 支付失败,弹出 支付失败提示
  3. 所以 下单成功后 写了个定时器 轮询订单状态
  4. 根据不同的状态做不同的操作
  5. 订单状态

// 查询订单状态
            queryOrderStatus() {
                queryOrderStatusApi(this.orderNo).then(response => {
                    console.log('查询订单状态:' + response.code)
                    // 支付成功后的页面跳转
                    if (response.code === 0) {
                        console.log('清除定时器')
                        clearInterval(this.timer)
                        // 三秒后跳转到订单列表
                        setTimeout(() => {
                            this.$router.push({
                                path: '/orders'
                            })
                        }, 3000)
                    }
                })
            }
  1. queryOrderStatusApi() 订单状态查询
  2. 参数就是 下单时候返回的订单id/订单号 orderNo

以上就是完整的支付流程 选择产品---下单---支付


5.   支付相关的其他接口

5.1 取消订单

  1. 用户可以主动取消订单
  2. 管理员 也可以在 订单管理页面进行 订单取消
  3. 所以这个接口也是必须的

wxPayCancelApi(orderNo).then(response => {
        this.$message.success(response.message)
        // 取消成功可以做对应的 操作 比如 刷新订单列表
      })
  1. wxPayCancelApi()取消订单接口
  2. 参数是 取消订单的 订单号/订单idorderNo

5.2 退款

  1. 用户不满意全额退款 哈哈😭😭
  2. 各种退款理由都有 ,所以 这个接口也必须有,谁让用户是上帝呢
  3. 退款接口

wxPayRefundsApi(this.orderNo, this.reason).then(response => {
        console.log('response', response)
           //退款成功 可以刷新 订单列表
      })
  1. wxPayRefundsApi() 退款 api
  2. 需要的参数1: 是 退款订单的 订单号/订单idorderNo
  3. 需要的参数2: 是 退款原因 比如不喜欢   ;买错了;

6.  订单接口

  1. 订单状态管理 上边都用到了
  2. 订单列表  上边都用到了

7. 下载账单

  1. 有时候需要进行 下载账单的操作
  2. 这个下载只针对 我这个服务器的写法
  3. 只提供一种方式

downloadBillApi(this.billDate, type).then(response => {
        console.log(response)
        const element = document.createElement('a')
        element.setAttribute('href', 
        'data:application/vnd.ms-excel;charset=utf-8,' + 
        encodeURIComponent(response.data.result)  )
        element.setAttribute('download', this.billDate + '-' + type)
        element.style.display = 'none'
        element.click()
      })
  1. downloadBillApi() 下载账单接口
  2. 需要的参数1: 是 需要下载的账单日期 注意格式

<el-date-picker v-model="billDate" value-format="yyyy-MM-dd" placeholder="选择账单日期" />
  1. 需要的参数2: 是 账单类型
    比如:交易账单 ,还是资金账单

8. 后记

  1. 这是个简易的  pc端支付 流程,应该会比之前更清晰吧
  2. 其实主要就是 调接口,最好 前端也要看下支付流程,方便和服务器人员沟通

参考资料

微信支付官方文档

vue-qriously

native下单接口


初心

我所有的文章都只是基于入门,初步的了解;是自己的知识体系梳理,如有错误,道友们一起沟通交流;
如果能帮助到有缘人,非常的荣幸,一切为了部落的崛起;
共勉


相关文章
|
10月前
|
前端开发 安全 开发工具
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
679 90
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
11月前
|
Dart 前端开发
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
393 75
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
10月前
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
682 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
缓存 前端开发 中间件
[go 面试] 前端请求到后端API的中间件流程解析
[go 面试] 前端请求到后端API的中间件流程解析
|
11月前
|
Dart 前端开发 容器
【07】flutter完成主页-完成底部菜单栏并且做自定义组件-完整短视频仿抖音上下滑动页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【07】flutter完成主页-完成底部菜单栏并且做自定义组件-完整短视频仿抖音上下滑动页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
380 18
【07】flutter完成主页-完成底部菜单栏并且做自定义组件-完整短视频仿抖音上下滑动页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
11月前
|
前端开发 Java 开发工具
【03】完整flutter的APP打包流程-以apk设置图标-包名-签名-APP名-打包流程为例—-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈 章节内容【03】
【03】完整flutter的APP打包流程-以apk设置图标-包名-签名-APP名-打包流程为例—-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈 章节内容【03】
969 18
【03】完整flutter的APP打包流程-以apk设置图标-包名-签名-APP名-打包流程为例—-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈 章节内容【03】
|
10月前
|
Dart 前端开发 Android开发
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
345 4
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
11月前
|
缓存 前端开发 Android开发
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
514 12
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
|
11月前
|
Dart 前端开发 架构师
【01】vs-code如何配置flutter环境-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈-供大大的学习提升
【01】vs-code如何配置flutter环境-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈-供大大的学习提升
557 26
|
11月前
|
Dart 前端开发 Android开发
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
365 1
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈

热门文章

最新文章

  • 1
    前端如何存储数据:Cookie、LocalStorage 与 SessionStorage 全面解析
    574
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    235
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    225
  • 4
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    164
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    275
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    408
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    176
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    112
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    190
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    261