简介

在实现微信支付之前,我们要知道,在提交订单是我们需要携带一个query参数去支付页面

为什么要携带参数?

        1.为了要获取支付信息,支付信息包含:

1.1 需要支付多少钱,并渲染到支付界面,提示用户

1.2 服务器返回的url,用于生成二维码

      2.为了下次请求查询支付状态(需要定时发请求检查支付状态)


获取支付信息:

  // 获取需要花多少钱async getPayInfo() {let result = await this.$API.reqPayInfo(this.$route.query.orderId);if (result.code == 200) {this.totalFee = result.data.totalFee;this.payInfo = result.data;} else {alert("失败");}},

由上图我们可以看到,数据已经拿到了,价格为18486,   codeUrl就是可以生成二维码的url

这里我们使用ElementUI组件库中的Message Box弹窗

点击支付按钮,进行弹窗,这个过程我就不再赘述了。

弹窗之后我们需要生成一个微信二维码,我们需要利用qrcode插件

qrcode - npm这是他的指导手册

import QRCode from "qrcode";

当我们点击支付按钮就应该生成二维码

// 生成二维码

let url = await QRCode.toDataURL(this.payInfo.codeUrl);

此时二维码已经生成了,但没有实现支付功能,我们需要借助MessageBox中的beforeClose

——MessageBox 关闭前的回调,会暂停实例的关闭

具体参数可看文档Element - The world's most popular Vue UI framework

在此之前,我们需要在data中定义两个变量,code和timer

data() {

return {

totalFee: "",  //价格为18486

payInfo: {},  //支付信息

timer: null,  //为定时器准备的,这个不理解也可继续往下看

code: ""   //我们需要留存请求支付的状态码,205的话说明支付成功

};

},

常规来说200是支付成功,205是支付中,我这样做的目的也是为了能不用付款(但发请求)就可实现功能。

 // 点击打开支付弹窗async open() {//  生成二维码let url = await QRCode.toDataURL(this.payInfo.codeUrl);this.$alert(`<img src=${url} />`, "请使用微信扫码支付", {showClose: false,showCancelButton: true,showConfirmButton: true,confirmButtonText: "支付成功",cancelButtonText: "支付遇到问题",center: true,dangerouslyUseHTMLString: true,beforeClose:(action, instance, done)=>{if (action == "confirm") {console.log("你点击的是支付成功");// 判断是否真的支付了if (this.code == 205) {console.log("支付成功啦");clearInterval(this.timer);this.timer = null;}done();} else {clearInterval(this.timer);this.timer = null;done();}}});// 查询支付状态if (!this.timer) {this.timer = setInterval(async () => {let result = await this.$API.reqPayStatus(this.$route.query.orderId);console.log(result);if (result.code == 205) {clearInterval(this.timer);this.timer = null;this.code = 205;// 关闭弹出框this.$msgbox.close()}}, 3000);}}

发现了吗我这里为什么用箭头函数

如果不使用箭头函数或者改变this指向的方法,在beforeClose中的this其实不是组件实例

instance 为 MessageBox 实例,下图证实想法是正确的

于是我在上面的代码中使用的箭头函数,为什么箭头函数的this就可以?

this的指向问题_那只猫喝咖啡的博客-CSDN博客

上面链接有介绍,放心点开,篇幅非常短。

解决了this问题,基本上已经完成了支付功能,剩下的就是在判断支付成功的里面加上路由跳转至支付成功的界面。

PC端实现微信支付功能(Vue2.0)相关推荐

  1. 关于实现uni-app项目在APP端使用微信支付功能

    首先在对项目开启支付功能,在项目的manifest.json文件中勾选APP模块配置中的Payment支付模块,并将需要的信息填写完整,如下图 除此之外还需要其他的一些配置,下面开结合图片来一步步的详 ...

  2. Java SpringMVC实现PC端网页微信扫码支付完整版

    一:前期微信支付扫盲知识 前提条件是已经有申请了微信支付功能的公众号,然后我们需要得到公众号APPID和微信商户号,这个分别在微信公众号和微信支付商家平台上面可以发现.其实在你申请成功支付功能之后,微 ...

  3. 微信小程序-JAVA实现微信支付功能(微信支付2.0)

    微信小程序-JAVA实现微信支付功能(微信支付2.0) 一.前言 本博客主要介绍JAVA后台与微信小程序(UNI-APP或者原生微信小程序)的微信支付的实现,如果是APP或者H5的开发暂时不支持,具体 ...

  4. PHP 支付PC端扫码支付、APP接口调起支付宝支付、微信公众号接入支付宝支付

    第一:第三方支付原理 第二:支付接口申请流程 地址:https://docs.open.alipay.com/270/105899/ : 参考地址:https://blog.csdn.net/nove ...

  5. 微信PC端扫码支付 java 模式二的扫码支付

    前言 这次分享的是java对接微信的支付接口,实现电脑端扫码支付后,跳转支付成功页面的例子.之所以分享是微信的Api太坑了.留下的文档也少,对接过程中容易出现各种各样的问题,在实现这扫码支付功能的时候 ...

  6. JAVA PC端扫码支付(一)微信支付

    微信支付从配置到开发 一.配置 1.开通公众平台支付功能 商户号 微信支付功能先要申请微信(企业)公众平台,然后开通企业公众平台付功能.下图为微信(企业)公众平台页面,可以看到商户号等信息 微信公众号 ...

  7. 微信支付—微信H5支付「PC端扫码支付」

    前言 微信支付-微信H5外部浏览器支付 微信支付-微信H5内部浏览器支付 微信支付-PC端扫码支付「本文」 本篇是微信支付系列的第三篇,PC端扫码支付. 开发环境:Java + SpringBoot ...

  8. 微信境外支付php_PHP实现 APP端微信支付功能

    前面已经写了手机APP支付宝支付,今天再把手机APP微信支付补上,前期的准备工作在这里就不多说了,可以参考微信支付开发文档,一定要仔细阅读开发文档,可以让你少踩点坑:准备工作完成后就是配置参数,调用统 ...

  9. pc端debugger微信、电脑debugger微信、电脑调试 微信支付、pc调试 微信支付、电脑 调试真机微信、通过电脑调试手机真机打开的微信H5页面、通过电脑chrome调试手机真机打开的微信H5

    pc端debugger微信.电脑debugger微信.电脑调试 微信支付.pc调试 微信支付.电脑 调试真机微信.通过电脑调试手机真机打开的微信H5页面.通过电脑chrome调试手机真机打开的微信H5 ...

最新文章

  1. 《中国人工智能学会通讯》——11.65 双重代价敏感的属性分类模型
  2. R语言第九讲 验证集法
  3. 长江浪花~朵儿朵尔朵
  4. java pnpoly算法_C语言实现的PNPoly算法代码例子
  5. 其他几个未公开的存储过程
  6. Intel® Math Kernel Library (Intel® MKL)
  7. 蓝桥杯真题(python)+B组真题+解题链接
  8. docker重置mysql密码
  9. Android6.0之AMS启动app中篇之创建app进程
  10. win2000/xp/2003 错误代码
  11. matlab求解数独流程图,简单的数独游戏求解程序(matlab)
  12. 职高c语言,C语言职高班教学计划
  13. 阿里云服务器ecs从购买到上传网站详细教程
  14. wxpython问卷调查界面_自己做的一个简单的问卷调查系统
  15. 蚂蚁特工吱指南|用来吃的AR游戏机,奥利奥终于对自己下手了
  16. 红帽Rhel7.6操作系统更换成Centos7.6的操作系统
  17. 秋裤传奇html5,秋裤传奇
  18. 小程序源码:后台版本趣味测试微信小程序源码下载支持自定义问题等等
  19. 黑马程序员————IO流3(day20)
  20. 【Error解决实录】win10设置默认浏览器闪退

热门文章

  1. vertica MySQL_vertica 数据库常用命令
  2. 滴滴android wear,滴滴货运app下载_滴滴货运apk最新安卓版下载v5.4.0_3DM手游
  3. JAVA数组首位末位互换_堆和堆傻傻分不清?一文告诉你 Java 集合中「堆」的最佳打开方式...
  4. 深入浅出Zookeeper集群搭建
  5. 水果店进货渠道及进货技巧,精品水果店进货方法
  6. 如何解决 win10 2016Excel 显示界面全为英文的情况
  7. 自己碰到的一个control +鼠标左键无效问题。
  8. 【基础练习】codevs1506 传话题解
  9. crypto-js前端解密工具
  10. js 只准输入数字_javascript 限制只允许输入数字的几种方法