石广澎
2025-11-17 f28a4a64c825b02e32e79387e0a6763e934ce51d
pages/pay/scanRes.vue
New file
@@ -0,0 +1,116 @@
<template>
   <view>
      <movable-area :style="'width: ' + windowWidth + 'px;height:' + windowHeight + 'px'">
         <web-view :src="url">
         </web-view>
         <movable-view direction="all" x="553rpx" :y="windowHeight/2-hf" v-if="cid" @click="openPay" class="pay-btn">
            <image class="pay-img" src="/static/pay-btn.jpeg" mode=""></image>
         </movable-view>
      </movable-area>
   </view>
</template>
<script>
   import {
      ACCESSTOKEN,
      config
   } from '@/common/config.js';
   import {
      getWechatInfo,
      getOpenId,
      getOpenIdBase
   } from '@/common/api/index'
   export default {
      data() {
         return {
            hf: uni.upx2px(81),
            cid: '',
            windowHeight: 724,
            windowWidth: 0,
            url: ''
         };
      },
      onLoad(opt) {
         let sysInfo = uni.getSystemInfoSync();
         this.windowHeight = sysInfo.windowHeight;
         this.windowWidth = sysInfo.windowWidth;
         if (opt.cid) {
            uni.setStorageSync('CID', opt.cid)
            if (opt.cid == '1285474127884455937') {
               this.url =
                  "https://fxm.xintoucloud.com/scene-user-fillin?sceneCode=DE88783ECF1D4DC2BCBF25A1A683651AFA4A9523573FF4080F2086B00E00E78A1235219708A15E8B223AAC2D243884DE"
            } else if (opt.cid == '1586530233928945664') {
               this.url =
                  "https://fxm.xintoucloud.com/scene-user-fillin?sceneCode=622C5D9E30E54D07BCB3BF280DBEE266F4C88598A368881C81D0D8CECA02C3DB1235219708A15E8B223AAC2D243884DE"
            }
            this.cid = opt.cid
         }
         if (opt.code) {
            uni.showLoading()
            getOpenId({
               params: {
                  code: opt.code
               }
            }).then(res => {
               uni.setStorageSync(ACCESSTOKEN, res.token.accessToken)
               uni.setStorageSync('IS_NEW', res.isNew)
               let url = '/pages/pay/scanpay?cid=' + this.cid
               if (res.isNew) {
                  url = '/pages/pay/wxpay?cid=' + this.cid
               }
               uni.hideLoading()
               uni.redirectTo({
                  url: url
               })
            }).catch(() => {
               uni.hideLoading()
            })
         }
      },
      methods: {
         openPay() {
            const TOKEN = uni.getStorageSync(ACCESSTOKEN) || null;
            if (TOKEN) {
               const IS_NEW = uni.getStorageSync('IS_NEW') || null;
               let url = '/pages/pay/scanpay?cid=' + this.cid
               if (IS_NEW) {
                  url = '/pages/pay/wxpay?cid=' + this.cid
               }
               uni.redirectTo({
                  url: url
               })
            } else {
               uni.showLoading()
               getWechatInfo().then(res => {
                  const redirect_uri = encodeURIComponent(
                     `${config.webURL}/pages/pay/scanRes?cid=${this.cid}`)
                  window.location.href =
                     `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${res}&redirect_uri=${redirect_uri}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect`
               })
            }
         }
      }
   }
</script>
<style lang="scss">
   .pay-btn {
      position: fixed;
      z-index: 99999;
      width: 162rpx;
      height: 162rpx;
      display: flex;
      align-items: center;
      justify-content: center;
      color: #fff;
      border-radius: 15rpx;
      overflow: hidden;
   }
   .pay-img {
      width: 162rpx;
      height: 162rpx;
   }
</style>