微信支付前端最终实现 | 学习笔记

简介: 快速学习 微信支付前端最终实现

开发者学堂课程【微服务+全栈在线教育实战项目演练(SpringCloud Alibaba+SpringBoot)微信支付前端最终实现学习笔记,与课程紧密联系,让用户快速学习知识。

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


微信支付前端最终实现


内容介绍:

一、支付做法

二、编写程序

三、测试


一、支付做法

思路:支付完成之后,每隔一段时间就查一次接口,看它的状态是否成功。

做法:运用到一个知识点,在js里面有一个定时器的方法

setInterval(“js 方法”,3000)

每三秒调一次接口,把状态做个查询,成功之后做跳转。


二、编写程序

在_pid.vue 中,45行开始写

data(){

return{

timer1:’’

}

},

//每隔三秒调用一次查询订单状态的方法

mounted(){ //页面渲染之后执行

setInterval(()=> {

this.queryOrderStatus(this.payObj.out_trade_no)

},300)

},

methods:{

queryOrderStatus(orderNo){

ordersApi.queryPayStatus(orderNo)

.then(response => {

//提示

this.$message({

type:’success’,

message:’支付成功’

})

//跳转回到课程详情页面

this.$router.push({path:’/course/’+this.payObj.course_id})


三、测试

总结过程:在微信二维码的界面扫二维码,扫完之后需要知道支付是否成功。

在页面中写了一个定时器的方法,即 setInterval,在方法中我们做的是根据订单号,查询订单状态是否是支付成功,若成功,反映是 ok,做这个操作用这个定时器每隔三秒调方法查询成功,成功即可跳转。

这个代码有一个小弊端,如果做了返回,定时器还会继续执行。

修改后如下所示

data(){

return{

timer1:’’

}

},

//每隔三秒调用一次查询订单状态的方法

mounted(){ //页面渲染之后执行

this.timer1 =setInterval(()=> {

this.queryOrderStatus(this.payObj.out_trade_no)

},300)

},

methods:{

queryOrderStatus(orderNo){

ordersApi.queryPayStatus(orderNo)

.then(response => {

if <response.data.success){

//支付成功,清除定时器

clearInterval(this.timer1)

//提示

this.$message({

type:’success’,

message:’支付成功’

})

//跳转回到课程详情页面

this.$router.push({path:’/course/’+this.payObj.course_id})

})

查状态时可能会支付没有成功,如果没有成功的话,返回的则是支付中,此时不需要跳转到支付成功或清除定时器。

方案为

在 util 中写过拦截器,当时用的是 http request 请求拦截器,现在需要用 http response 响应拦截器。

如果状态码是28004,则是没有登录。如果状态码是25000,则是订单支付中,不需要做任何提示。状态码为20000时,则是支付成功。

将 PayLogController 的52行修改为

return R. ok().code(25000).message(“支付中”)

测试:

首先登录,生成一个订单,点击立即购买进入页面,点击支付生成一个二维码,支付完成后,页面提示支付成功,跳转回到课程页面,下拉可以观看视频。

目前状态变成了1,证明订单支付成功。

在查询订单状态 map 集合,查了很多次,因为每三秒查询一次,最后一次才支付成功。notpay 表示未支付,success表示支付成功。

相关文章
|
弹性计算 前端开发 小程序
微信小程序上传文件至阿里云OSS直传(java后端签名+前端直传)
当前的通用文件上传方式是通过前端上传到服务器,再由服务器转存至对象存储。这种方式在处理小文件时效率尚可,但大文件上传因受限于服务器带宽,速度较慢。例如,一个100MB的文件在5Mbps带宽的阿里云ECS上上传至服务器需160秒。为解决此问题,可以采用后端签名的方式,使微信小程序直接上传文件到阿里云OSS,绕过服务器中转。具体操作包括在JAVA后端引入相关依赖,生成签名,并在微信小程序前端使用这个签名进行文件上传,注意设置正确的请求头和formData参数。这样能提高大文件上传的速度。
3621 1
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
362 0
|
JavaScript 前端开发 程序员
后端程序员的前端必备-jQuery核心学习笔记
后端程序员的前端必备-jQuery核心学习笔记
179 13
|
开发框架 前端开发 JavaScript
在微信框架模块中,基于Vue&Element前端的事件和内容的管理
在微信框架模块中,基于Vue&Element前端的事件和内容的管理
|
开发框架 移动开发 前端开发
在微信框架模块中,基于Vue&Element前端的后台管理功能介绍
在微信框架模块中,基于Vue&Element前端的后台管理功能介绍
|
Web App开发 前端开发 JavaScript
前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-fiber解决了什么问题
前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-fiber解决了什么问题
286 0
|
开发框架 前端开发 JavaScript
在微信框架模块中,基于Vue&Element前端,通过动态构建投票选项,实现单选、复选的投票操作
在微信框架模块中,基于Vue&Element前端,通过动态构建投票选项,实现单选、复选的投票操作
|
JavaScript 前端开发
TypeScript 学习笔记(六):TypeScript 与前端框架的结合应用
笔记,进一步提升 TypeScript 编程技能。
390 1
|
前端开发
支付系统--微信支付21--搭建前端环境,payment-demo-front这个项目文件夹是前端显示文件,payment-demo是后端项目,支付页面常见三个页面:购买课程,我的订单,下载账单
支付系统--微信支付21--搭建前端环境,payment-demo-front这个项目文件夹是前端显示文件,payment-demo是后端项目,支付页面常见三个页面:购买课程,我的订单,下载账单
|
监控 前端开发 小程序
微信小程序全栈开发中的前端工程化实践
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中的前端工程化实践,旨在提升开发效率和体验。重点包括代码规范与架构设计(模块化、组件化、MVC模式)、自动化构建与部署(使用Webpack、Git和CI工具)、前端框架与库(如Vue.js、React、Angular)以及性能优化策略(代码、资源优化和性能监控)。通过这些实践,开发者能更高效地掌握小程序开发,打造高质量应用。
325 0