主页 > imtoken官网怎么找到 > Vue3前端PC端生成微信支付二维码

Vue3前端PC端生成微信支付二维码

imtoken官网怎么找到 2023-05-05 08:05:23

大致思路:后台返回二维码地址给前台。

地址大概是这样的:“weixin://wxpay/bizpayurl?xxxxxxx”

PC要做的就是把这个地址以二维码的形式显示出来

首先借助qrcodejs2

npm install  qrcodejs2 --save

使用示例(我这里是独立页面;因为里面有跳转页面操作;如果没有跳转usdt收款二维码生成,也可以显示为弹框)至于是否支付成功usdt收款二维码生成,前端感知轮询是否支付成功

<template>
        <div ref="qrCode"></div>
</template>
<script lang="ts" setup>
import QRCode from 'qrcodejs2'
import {ref,reactive,watch} from "vue"
import { useRouter,useRoute,onBeforeRouteLeave} from 'vue-router';
const router = useRouter();
const route = useRoute();
let timerPoll=null//赋值setsetInterval
//确保这里的dom能访问到
const qrCode=ref()
//生成二维码
const getQrcode=(qText)=>{
            let el = qrCode.value
            new QRCode(el, {
                width: 200,
                height: 200,
                text: qText,
                
            })
        }
   //模拟请求
   setTimeout(() => {
   //codeUrl类似于weixin://wxpay/bizpayurl?xxxxxxx
    getQrcode(codeUrl)
    
}, 1000);
//至于是否支付成功,前端这边通过轮询,来感知是否支付成功
timerPoll= setInterval(() => {
    //   console.log("轮询");
    setTimeout(() => {   
    //这里查看订单详情是否为已付款状态
    //已付款做些操作 
}, 1000);
    
      
  }, 1000);
//路由离开销毁轮询
    onBeforeRouteLeave((to, from, next) => {
          window.clearInterval(timerPoll)
           timerPoll = null;
  next()
})
//这里做的是独立的页面,为了防止闪点其他页面,加个监听路由
watch(
  () => route.path,
  (newValue) => {
    // console.log("监听啊");
    window.clearInterval(timerPoll);
    timerPoll = null;
  }
);
</script>

在这里插入图片描述

警告如果使用qrcodejs2报错TypeError: Cannot read properties of undefined (reading '_android')

解决方案 ---------- 解决方案 重新安装一个 qrcodejs2-fix

yarn add qrcodejs2-fix 或者
npm i qrcodejs2-fix
//引用记得换掉
import QRCode from 'qrcodejs2-fix'