设为首页收藏本站

安徽论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10214|回复: 0

vue项目中的支付功能实现(微信支付和支付宝支付)

[复制链接]

77

主题

506

回帖

1008

积分

金牌会员

Rank: 6Rank: 6

积分
1008
发表于 2022-3-26 10:58:42 | 显示全部楼层 |阅读模式
网站内容均来自网络,本站只提供信息平台,如有侵权请联系删除,谢谢!
目录


项目中常见的支付方式   


  • 支付宝支付   
  • 微信支付   
  • 余额支付(也需要支付宝或微信充值)
注意:本文仅从前端角度展开讲解

支付宝支付

项目难点:
页面是h5网页,用支付宝支付必须得到支付宝授权,调用支付宝的api。
(如何授权请参照:调用支付宝api
支付宝支付的一般过程是:
    调用订单接口,获得订单号,支付金额等。
    传递订单号,金额 至预支付接口
    后台会返回来一个form,然后提交form自动跳转到支付宝支付页面
支付过程:
    下图为为接口文档,支付接口


    当我们选中支付宝,radio=1;
    当我们点击支付按钮,pay()方法执行
    此时我们调用后端支付接口,传入接口文档要求字段,订单号,金额等。
    后台回传给我们一个{code:201,data:""};
    此时我们把form注入到我们页面中,让form表单提交,跳转到支付宝页面
  1.   topay(){
  2.       switch(this.radio){
  3.         case '3':
  4.         this.yuer();
  5.         break;
  6.         case '1':
  7.         this.zhifubao();
  8.         case '0':
  9.         this.getWechatCode();
  10.       }
  11.     },
  12.    zhifubao(){
  13.      payByZhifubao(
  14.        {
  15.          OutTradeNo:'Oct20200909095646265303127',//商户订单号,商户网站订单系统中唯一订单号,必填 。需要保证商户端唯一。
  16.           Subject: "手机网站支付测试",//主题
  17.           ProductCode: "QUICK_WAP_WAY",
  18.           body: "手机网站支付描述信息",//商品描述,可空
  19.           TotalAmount: 20 //付款金额,必填        }
  20.      ).then(res=>{
  21.        console.log(res);
  22.         if (res.code === 201) {
  23.             //将数据存到vuex中
  24.             // this.$store.dispatch('addAliFrom', res.data.data)
  25.             this.html = res.data;
  26.             var form = res.data;
  27.             const div = document.createElement("div");
  28.             div.innerHTML = form; //此处form就是后台返回接收到的数据
  29.             document.body.appendChild(div);
  30.             document.forms[0].submit();
  31.             //return this.$router.push('/aliPay')
  32.           } else {
  33.             return alert(res.data.msg);
  34.           }
  35.      })
  36.     },
复制代码
微信支付

步骤:
微信支付后台程序员会给你返一个地址,首先我们需要安装qrcodejs2将地址转换成二维码,需要先npm install qrcodejs2
然后需要一个div来存放这个微信二维码,宽高样式各位自己可以去css里写,我在这里还加了一个loading,有需要的也可以自己加
  1. <div id="wechatcode" v-loading="loading"
  2. element-loading-text="拼命加载中"
  3. element-loading-spinner="el-icon-loading"
  4. element-loading-background="rgba(0, 0, 0, 0.8)">
  5. </div>
复制代码
导入模块
  1. import QRCode from 'qrcodejs2' // 引入qrcode
复制代码
下面是接口数据获取然后操作二维码
  1. getWechatCode() {
  2.                 Models
  3.                     .getModel("wechatpay")
  4.                     .get({
  5.                         orderId:this.orderId
  6.                     })
  7.                     .then(res => {
  8.                         if(res.data.code == 200){
  9.                             this.wechatPayUrl = res.data.resultData
  10.                             if(!this.flag){
  11.                             //重点是这里,其余的是为了我的切换业务逻辑和接口
  12.                                 let wechatcode = new QRCode('wechatcode', {
  13.                                     width: 200,
  14.                                     height: 200,
  15.                                     text: this.wechatPayUrl, // 二维码地址
  16.                                     colorDark: "#000",
  17.                                     colorLight: "#fff",
  18.                                 })
  19.                             }
  20.                             this.flag = true
  21.                             this.loading = false
  22.                             this.isWechatCodeShow = true
  23.                         }
  24.                     })
  25.         },
复制代码
在微信扫描支付完之后,后台人员可以拿到支付成功结果,返给前台人员,那么前端人员只能不断去调接口查询是否已支付,在这里我们可以用生命周期来做轮询,在跳出之后需要销毁
  1. mounted() {
  2.         this.getWechatCode()
  3.         //实现轮询
  4.         this.interval = window.setInterval(() => {
  5.         setTimeout(this.getOrderStatus(), 0);
  6.         }, 3000);
  7.         
  8.     },
  9.     beforeDestroy() {
  10.         //清除轮询   
  11.         clearInterval(this.interval)
  12.         this.interval = null
  13.     },
复制代码
这里的`getOrderStatus()方法是为了查询后台支付状态的,如果成功跳转到支付页面,做个If else判断即可
到此这篇关于vue项目中的支付功能实现(微信支付和支付宝支付)的文章就介绍到这了,更多相关vue项目支付内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
                                                        
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
免责声明
1. 本论坛所提供的信息均来自网络,本网站只提供平台服务,所有账号发表的言论与本网站无关。
2. 其他单位或个人在使用、转载或引用本文时,必须事先获得该帖子作者和本人的同意。
3. 本帖部分内容转载自其他媒体,但并不代表本人赞同其观点和对其真实性负责。
4. 如有侵权,请立即联系,本网站将及时删除相关内容。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表