石广澎
2025-11-30 18b45638fe3aac07e65aeb5b1da337d4e4bdc87c
pages/pay/scanpay.vue
New file
@@ -0,0 +1,912 @@
<!-- 扫码支付 -->
<template>
  <view class="page">
    <u-alert closable description="安全提醒:预充值金额由邮储银行监管!" type="warning"></u-alert>
    <view class="shop u-flex u-row-between">
      <view class="u-m-r-30">
        <view class="u-font-28 color-666 u-m-b-10">付款给</view>
        <view class="u-font-44 font-bold color-333">{{ shopInfo.shop_name }}</view>
      </view>
      <image :src="shopInfo.logo_image||'/static/imgs/store-logo.png'" class="avg-img"></image>
    </view>
    <view class="u-p-48 bg-fff u-flex-1 content">
      <view class="u-font-28 color-666">金额</view>
      <view class="u-p-v-20 u-flex u-border-bottom u-relative">
        <view class="money-icon color-333">¥</view>
        <view class="u-flex-1 u-flex u-m-l-10" style="height: 80rpx;">
          <view v-if="money" class="money-num">{{ money }}</view>
          <view :class="['cursor',{'cursor-act':!money&&bordShow}]"></view>
          <view v-if="!money" class="u-font-50 color-999">请输入金额</view>
          <view :class="['cursor',{'cursor-act':money&&bordShow}]"></view>
        </view>
        <view class="mask" @click="showBord"></view>
      </view>
      <view class="u-font-28 color-666 u-m-t-60">选择支付方式</view>
      <u-radio-group v-model="payWay" placement="column">
        <view v-if="platform == 15" class="u-border-bottom u-p-v-20 u-flex u-row-between">
          <image class="pay-icon" src="@/static/imgs/pay-union.png"></image>
          <view class="flex-1">
            <view class="u-font-30 color-333">云闪付</view>
            <text v-if="isNew" class="tag u-m-t-10">会员享优惠</text>
            <text v-if="!isNew&&token&&shopInfo.use_score_flag&&shopInfo.app_pay_use_score_flag" class="u-font-24 color-999 u-m-t-10">
              可用
              <text class="color-red">{{ integral }}</text>
              积分
            </text>
          </view>
          <view v-if="token&&couponInfo&&shopInfo.user_coupon_flag&&shopInfo.app_pay_use_coupon_flag" class="tag-pain">
            满{{
              parseFloat((couponInfo.thresholdValue / 100).toFixed(2))
            }}元减{{ parseFloat((couponInfo.discount / 100).toFixed(2)) }}元
          </view>
          <u-radio :customStyle="{ marginLeft: '10rpx' }" :name="15" activeColor="#D41F28" @change="radioChange($event,15)"></u-radio>
        </view>
        <view v-if="platform == 5" class="u-border-bottom u-p-v-20 u-flex u-row-between">
          <image class="pay-icon" mode="widthFix" src="@/static/imgs/pay-zfb.png"></image>
          <view class="flex-1">
            <view class="u-font-30 color-333">支付宝</view>
            <text v-if="isNew" class="tag u-m-t-10">会员享优惠</text>
            <text v-if="!isNew&&token&&shopInfo.use_score_flag&&shopInfo.app_pay_use_score_flag" class="u-font-24 color-999 u-m-t-10">
              可用
              <text class="color-red">{{ integral }}</text>
              积分
            </text>
          </view>
          <view v-if="token&&couponInfo&&shopInfo.user_coupon_flag&&shopInfo.app_pay_use_coupon_flag" class="tag-pain">
            满{{
              parseFloat((couponInfo.thresholdValue / 100).toFixed(2))
            }}元减{{ parseFloat((couponInfo.discount / 100).toFixed(2)) }}元
          </view>
          <u-radio :customStyle="{ marginLeft: '10rpx' }" :name="5" activeColor="#D41F28" @change="radioChange($event,5)"></u-radio>
        </view>
        <view v-if="platform == 2" class="u-border-bottom u-p-v-20 u-flex u-row-between">
          <image class="pay-icon" mode="widthFix" src="@/static/imgs/pay-wx.png"></image>
          <view class="flex-1">
            <view class="u-font-30 color-333">微信</view>
            <text v-if="isNew" class="tag u-m-t-10">会员享优惠</text>
            <text v-if="!isNew&&token&&shopInfo.use_score_flag&&shopInfo.app_pay_use_score_flag" class="u-font-24 color-999 u-m-t-10">
              可用
              <text class="color-red">{{ integral }}</text>
              积分
            </text>
          </view>
          <view v-if="token&&couponInfo&&shopInfo.user_coupon_flag&&shopInfo.app_pay_use_coupon_flag" class="tag-pain">
            满{{
              parseFloat((couponInfo.thresholdValue / 100).toFixed(2))
            }}元减{{ parseFloat((couponInfo.discount / 100).toFixed(2)) }}元
          </view>
          <u-radio :customStyle="{ marginLeft: '10rpx' }" :name="2" activeColor="#D41F28" @change="radioChange($event,2)">
          </u-radio>
        </view>
        <view class="u-border-bottom u-p-v-20 u-flex u-row-between">
          <image class="pay-icon" mode="widthFix" src="@/static/zjjg/yue.png"></image>
          <view class="flex-1">
            <view class="u-flex">
              <view class="u-font-30 color-333">储值卡</view>
              <navigator class="u-m-l-30" :url="`/pages/pay/recharge?cardInfo=${encodeURIComponent(JSON.stringify(cardInfo))}`">
                <u-button size="mini" type="warning">去充值</u-button>
              </navigator>
            </view>
            <text class="u-font-24 color-999 u-m-t-10">
              可用余额
              <text class="color-red">¥{{ cardInfo.amount }}</text>
            </text>
          </view>
          <u-radio :customStyle="{ marginLeft: '10rpx' }" :name="14" activeColor="#D41F28" @change="radioChange($event,14)">
          </u-radio>
        </view>
        <!--            <navigator v-if="shuaka&&token&&bankCard!=-1" class="shuka" url="/pages/pay/shuaKa/shuaKa">
                  <image src="/static/shuaka/shuaka.png" mode=""></image>
                </navigator>
                <view v-if="bankCard.id" class="u-border-bottom u-p-v-20 u-flex">
                  <view @click="bordShow=false;bankCardOpen=true" class="flex-1 u-flex">
                    <image :src="bankCardStyle.logo" class="pay-icon"></image>
                    <view>
                      <view class="u-font-30 color-333 u-flex">
                        {{ bankCard.bankName }}({{ cardType[bankCard.cardType] }})({{ bankCard.cardNo }})
                        <u-icon name="arrow-right" color="#000">
                        </u-icon>
                      </view>
                      &lt;!&ndash; <text v-if="isNew" class="tag u-m-t-10">会员享优惠</text> &ndash;&gt;
                      <text v-if="!isNew&&shopInfo.use_score_flag&&shopInfo.bank_pay_use_score_flag" class="u-font-24 color-999 u-m-t-10">
                        可用
                        <text class="color-red">{{ integral }}</text>
                        积分
                      </text>
                    </view>
                  </view>
                  <view v-if="!isNew&&shopInfo.user_coupon_flag&&shopInfo.bank_pay_use_coupon_flag&&couponInfo" class="tag-pain">
                    满{{
                      parseFloat((couponInfo.thresholdValue / 100).toFixed(2))
                    }}元减{{ parseFloat((couponInfo.discount / 100).toFixed(2)) }}元
                  </view>
                  <u-radio @change="radioChange($event,3)" :name="bankCard.id" activeColor="#D41F28" :customStyle="{ marginLeft: '10rpx' }">
                  </u-radio>
                </view>-->
      </u-radio-group>
      <navigator :url="`/pages/pay/vipEwm?cardInfo=${encodeURIComponent(JSON.stringify(cardInfo1))}`" class="u-border-bottom u-p-v-20 u-flex u-row-between">
        <image class="pay-icon" mode="widthFix" src="@/static/zjjg/cika.png"></image>
        <view class="flex-1 u-m-l-20">
          <view class="u-font-30 color-333">次卡支付</view>
          <text class="u-font-24 color-999 u-m-t-10">
            可用次数
            <text class="color-red">{{ cardInfo1.times }}次</text>
          </text>
        </view>
      </navigator>
      <!--         <navigator v-if="bankCard==-1&&bindCard&&token&&!isNew" class="shuka" url="/pages/pay/bindCard/bindCard">
              <image src="/static/bangka.png" mode=""></image>
            </navigator>
            <navigator v-if="bankCard==-1&&!isNew" url="/pages/pay/bindCard/bindCard" class="u-border-bottom u-p-v-20 u-flex u-row-between">
              <view class="u-flex-1 u-flex ">
                <image class="pay-icon" :src="bankCardStyle.logo" mode=""></image>
                <view class="flex-1 u-m-l-20">
                  <view class="u-font-30 color-333">银行卡</view>
                  <view class="u-font-24 color-red">绑卡可享更多优惠</view>
                </view>
              </view>
              <u-radio disabled activeColor="#D41F28" :customStyle="{ marginLeft: '30rpx' }">
              </u-radio>
            </navigator>-->
      <!--         <navigator v-if="isNew" class="reg-btn" :url="'/pages/pay/register?cid='+cid">
              <image src="/static/register-btn.png" mode=""></image>
            </navigator>-->
      <navigator :url="'/pages/pay/register?cid='+cid" class="reg-url">
        加入《{{ shopInfo.shop_name }}》会员,享受更多优惠
      </navigator>
    </view>
    <button class="pay-it" @click="pay">付款</button>
    <!-- 选择银行卡 -->
    <u-popup :closeable="true" :round="10" :show="bankCardOpen" mode="bottom" @close="bankCardOpen = false">
      <view class="u-font-32 color-333 u-text-center u-p-30 u-border-bottom">选择银行支付</view>
      <scroll-view class="u-p-h-30 bankCard-list" scroll-y>
        <block v-for="(item,i) in bankCardList" :key="i">
          <view class="u-border-bottom u-p-v-30 u-flex" @click="chooseBankCard(item)">
            <view class="flex-1 u-flex">
              <image :src="bankCardStyle.logo" class="pay-icon" mode="widthFix"></image>
              <view>
                <view class="u-font-26 color-333">{{ item.bankName }}</view>
                <view class="u-m-t-10 u-font-28 color-333">{{ cardType[item.cardType] }}({{ item.cardNo }})
                </view>
              </view>
            </view>
            <u-icon :color="bankCardId==item.id?'#D31F28':'#fff'" name="checkbox-mark" size="22"></u-icon>
          </view>
        </block>
        <navigator class="u-border-bottom u-p-v-30 u-flex" url="/pages/pay/bindCard/bindCard">
          <view class="add-icon">
            <u-icon bold color="#D31F28" name="plus"></u-icon>
          </view>
          <view class="u-font-28 color-333 u-m-l-20">使用新卡支付</view>
        </navigator>
      </scroll-view>
    </u-popup>
    <!-- 数字键盘 -->
    <u-popup :overlay="false" :show="bordShow" @close="bordShow = false">
      <key-bord :num.sync="money" @changeMoney="changeMoney" @close="bordShow = false" @pay="pay"></key-bord>
    </u-popup>
    <!-- 支付验证码 -->
    <u-popup :show="codeShow" closeable mode="center" @close="codeShow = false">
      <view class="u-p-h-40 u-p-b-40">
        <view class="u-text-center u-p-t-20 u-m-b-30 u-font-34">请输入手机验证码</view>
        <view class="u-text-center u-m-b-20 color-666">{{ shopInfo.shop_name }}</view>
        <view class="u-flex u-row-center font-bold u-m-b-40">
          <text class="u-font-42">¥</text>
          <text class="u-font-money">{{ money }}
          </text>
        </view>
        <u-code-input v-model="smscode" :focus="true" mode="box" @finish="bankPay"></u-code-input>
      </view>
    </u-popup>
  </view>
</template>
<script>
import {ACCESSTOKEN, cardType, config} from '@/common/config.js';
import {bankCardStyle, getScoreWorth, getWechatConfigInfo, headBand, myBankCard, queryMyDiscount, queryMyUseSweepPayMaxCoupon, queryScore, queryShop, saveWxOrder, tlPay, userLogin} from '@/common/api/index'
import wx from 'weixin-js-sdk'; // 使用js-sdk
import {activityInfo} from '@/common/api/shuaka'
export default {
  data() {
    return {
      cardInfo1: {
        type: 1,
        name: '',
        amount: 0,
        score: 0,
        times: 12
      },
      cardInfo: {
        type: 0,
        name: '',
        amount: 200,
        score: 0,
        times: 12
      },
      platform: this.$utils.getPlat(),
      cardType: cardType,
      cid: '',
      bordShow: false, // 显示键盘
      scoreWorth: 0,
      shopInfo: {
        shop_name: '',
        scan_flag: '',
        use_score_flag: 0, //商铺是否可用积分 0否 1是
        user_coupon_flag: 0, //商铺是否可用优惠券 0否 1是
        app_pay_use_score_flag: 0, //微信/支付宝是否可用积分 0否 1是
        app_pay_use_coupon_flag: 0, //微信/支付宝是否可用优惠券 0否 1是
        bank_pay_use_score_flag: 0, //银行卡支付是否可用积分 0否 1是
        bank_pay_use_coupon_flag: 0, //银行卡支付是否可用优惠券 0否 1是
      },
      money: '', // 金额
      integral: 0, // 使用积分
      couponInfo: null, // 优惠券内容
      payWay: 3, //支付方式 5 支付宝 2 微信 3银行卡 15云闪付
      token: null,
      isNew: false, // 是否新用户,新用户查询不到积分和银行卡
      codeShow: false, // 银行卡支付验证码输入弹窗
      smscode: '', // 银行卡支付验证码
      thpinfo: null,
      bankCardStyle: {
        color: '',
        logo: ''
      },
      bankCardList: [], //银行卡列表
      bankCard: -1, // 选中银行卡
      bankCardId: null, // 选中银行卡
      bankCardOpen: false,
      canReset: false,
      end: 0,
      count: 0,
      shuaka: null, //刷卡活动
      bindCard: false, // 绑卡有礼
      discount: {
        memberGradeName: '',
        shopDiscount: 10
      },
      aLiUserId: ''
    };
  },
  onLoad(opt) {
    this.isNew = uni.getStorageSync('IS_NEW')
    uni.showLoading()
    this.payWay = this.platform
    if (opt.cid) {
      this.cid = opt.cid
      uni.setStorageSync('CID', opt.cid)
      this.init()
    }
    if (opt.code || opt.auth_code || opt.userAuthCode) {
      let code = opt.code
      if (this.platform == 5) {
        code = opt.auth_code
      }
      if (this.platform == 15) {
        code = opt.userAuthCode
      }
      this.end++
      userLogin({
        platform: this.platform,
        params: {
          code
        }
      }).then(res => {
        this.getToken(res)
      }).catch(() => {
        uni.hideLoading()
      })
    } else {
      if (process.env.NODE_ENV === 'development') {
        console.log('开发环境');
      } else {
        console.log('生产环境');
        const redirect_uri = encodeURIComponent(window.location.href.split('?')[0] + '?cid=' + this.cid)
        if (this.platform == 2) {
          window.location.href =
              `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${config.wx_appid}&redirect_uri=${redirect_uri}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect`
        } else if (this.platform == 5) {
          window.location.href =
              `https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=${config.ali_appid}&scope=auth_base&redirect_uri=${redirect_uri}&state=STATE`
        }
      }
    }
  },
  onShow() {
    this.token = uni.getStorageSync(ACCESSTOKEN) || null
    this.bordShow = false
    this.bankCardOpen = false
    this.codeShow = false
    this.smscode = ''
    if (this.canReset && this.token && !this.isNew) {
      this.end = 0
      this.count = 0
      uni.showLoading()
      this.getUserInfo()
    }
    this.canReset = true
  },
  methods: {
    getToken(res) {
      this.count++
      if (this.count >= this.end) {
        uni.hideLoading()
      }
      this.token = res.token.accessToken
      uni.setStorageSync(ACCESSTOKEN, res.token.accessToken)
      uni.setStorageSync('IS_NEW', res.isNew)
      this.isNew = res.isNew
      if (!res.isNew) {
        this.getUserInfo()
      }
    },
    radioChange(e, item) {
      this.bordShow = false
      this.payWay = item
    },
    // 更新金额
    changeMoney(str) {
      this.money = str;
    },
    // 展示键盘
    showBord() {
      this.bordShow = true;
    },
    init() {
      this.end += 5
      //获取商铺信息
      queryShop({
        params: {
          cid: this.cid
        }
      }).then(res => {
        this.count++
        if (this.count >= this.end) {
          uni.hideLoading()
        }
        if (res.logo_image) {
          try {
            let arr = JSON.parse(res.logo_image)
            res.logo_image = config.sftpURL + arr[0].path
          } catch (e) {
            //TODO handle the exception
            res.logo_image = ''
          }
        }
        uni.setStorageSync('SHOP_INFO', res)
        this.shopInfo = res
        this.cardInfo.name = res.shop_name
        this.cardInfo1.name = res.shop_name
      }).catch(() => {
        uni.hideLoading()
      })
      // 刷卡有礼
      activityInfo().then(res => {
        this.count++
        if (this.count >= this.end) {
          uni.hideLoading()
        }
        this.shuaka = res
      }).catch(() => {
        uni.hideLoading()
      })
      // 首绑有礼
      headBand().then(res => {
        this.count++
        if (this.count >= this.end) {
          uni.hideLoading()
        }
        this.bindCard = res
      }).catch(() => {
        uni.hideLoading()
      })
      // 积分价值
      getScoreWorth().then(res => {
        this.count++
        if (this.count >= this.end) {
          uni.hideLoading()
        }
        this.scoreWorth = res.settingVal
      }).catch(() => {
        uni.hideLoading()
      })
      //获取银行卡风格配置
      bankCardStyle().then(res => {
        this.count++
        if (this.count >= this.end) {
          uni.hideLoading()
        }
        try {
          let arr = JSON.parse(res.logo)
          res.logo = config.sftpURL + arr[0].path
        } catch (e) {
          //TODO handle the exception
          res.logo = ''
        }
        this.bankCardStyle = res
        uni.setStorageSync('bankCardStyle', res)
      }).catch(() => {
        uni.hideLoading()
      })
      if (this.platform == 2) {
        this.end += 1
        //获取微信jsSdk配置
        const uri = encodeURIComponent(window.location)
        getWechatConfigInfo({
          url: uri
        }).then(res => {
          this.count++
          if (this.count >= this.end) {
            uni.hideLoading()
          }
          wx.config({
            debug: false, // 开启调试模式
            appId: res.appId, // 必填,公众号的唯一标识
            timestamp: res.timestamp, // 必填,生成签名的时间戳
            nonceStr: res.noncestr, // 必填,生成签名的随机串
            signature: res.signature, // 必填,签名
            jsApiList: ['chooseWXPay'], // 必填,需要使用的 JS 接口列表
            openTagList: [
              'wx-open-launch-weapp'
            ] // 可选,需要使用的开放标签列表,例如['wx-open-launch-app']
          });
        }).catch(() => {
          uni.hideLoading()
        })
      }
    },
    // 获取会员相关信息
    getUserInfo() {
      this.end += 4
      queryMyDiscount({
        shopId: this.shopInfo.id
      }).then(res => {
        this.count++
        if (this.count >= this.end) {
          uni.hideLoading()
        }
        res.shopDiscount = parseFloat(res.shopDiscount / 10)
        this.discount = res
        uni.setStorageSync('DISCOUNT_INFO', res)
      }).catch(() => {
        this.count++
        if (this.count >= this.end) {
          uni.hideLoading()
        }
      })
      //获取用户银行卡
      myBankCard().then(res => {
        this.count++
        if (this.count >= this.end) {
          uni.hideLoading()
        }
        this.bankCardList = res.rows
        if (res.rows[0]) {
          this.bankCard = res.rows[0]
          if (this.platform == 3) {
            this.bankCardId = res.rows[0].id
          }
        } else {
          this.bankCard = -1
        }
      }).catch(() => {
        this.count++
        if (this.count >= this.end) {
          uni.hideLoading()
        }
      })
      //获取用户积分
      queryScore().then(res => {
        this.count++
        if (this.count >= this.end) {
          uni.hideLoading()
        }
        this.integral = res.totalScore
      }).catch(() => {
        this.count++
        if (this.count >= this.end) {
          uni.hideLoading()
        }
      })
      //获取用户优惠券
      queryMyUseSweepPayMaxCoupon({
        params: {
          shopId: this.shopInfo.id
        }
      }).then(res => {
        this.count++
        if (this.count >= this.end) {
          uni.hideLoading()
        }
        this.couponInfo = res
      }).catch(() => {
        this.count++
        if (this.count >= this.end) {
          uni.hideLoading()
        }
      })
    },
    // 选择银行卡
    chooseBankCard(item) {
      this.payWay = 3
      this.bankCard = item;
      this.$nextTick(() => {
        this.bankCardId = item.id
        this.bankCardOpen = false
      })
    },
    //跳转营销页面
    toDiscount() {
      if (!this.isNew) { //是会员
        if (this.integral > 0 || this.couponInfo) { //有优惠券或积分
          if (this.payWay == 3 && (this.shopInfo.bank_pay_use_score_flag || this.shopInfo
              .bank_pay_use_coupon_flag)) { //银行卡支付
            uni.navigateTo({
              url: `/pages/pay/discountpay?integral=${this.integral}&scoreWorth=${this.scoreWorth}&money=${this.money}&payWay=${this.payWay}&bankCardId=${this.bankCardId}`
            })
            return false
          } else if ((this.shopInfo.use_score_flag && this.shopInfo.app_pay_use_score_flag) || (this
              .shopInfo
              .user_coupon_flag && this.shopInfo.app_pay_use_coupon_flag)) {
            uni.navigateTo({
              url: `/pages/pay/discountpay?integral=${this.integral}&scoreWorth=${this.scoreWorth}&money=${this.money}&payWay=${this.payWay}&bankCardId=${this.bankCardId}`
            })
            return false
          } else if (this.discount.shopDiscount != 1) {
            uni.navigateTo({
              url: `/pages/pay/discountpay?integral=${this.integral}&scoreWorth=${this.scoreWorth}&money=${this.money}&payWay=${this.payWay}&bankCardId=${this.bankCardId}`
            })
            return false
          } else {
            return true
          }
        } else if (this.discount.shopDiscount != 1) {
          uni.navigateTo({
            url: `/pages/pay/discountpay?integral=${this.integral}&scoreWorth=${this.scoreWorth}&money=${this.money}&payWay=${this.payWay}&bankCardId=${this.bankCardId}`
          })
          return false
        } else {
          return true
        }
      } else {
        return true
      }
    },
    //确认支付
    pay() {
      if (uni.$u.test.isEmpty(this.money)) {
        uni.$u.toast('请输入金额!')
        return
      }
      this.bordShow = false
      //判断是否需要跳转营销页面
      if (this.toDiscount()) {
        // 金额 this.money
        uni.showLoading()
        const params = {
          money: parseFloat((this.money * 100).toPrecision(12)),
          shopId: this.shopInfo.id,
          cid: this.cid,
          payWay: this.payWay,
          score: 0,
          couponDetailId: ''
        }
        if (this.payWay == 3) {
          params.bankCardId = this.bankCardId
        }
        //生成订单
        saveWxOrder(params).then(res => {
          uni.hideLoading()
          try {
            this.orderId = res.orderId
            res.youHuiInfo.shopName = this.shopInfo.shop_name
            this.youHuiInfo = res.youHuiInfo
            if (res.toPayMethod == 1) {
              if (this.payWay == 3) {
                this.smscode = ''
                this.codeShow = true
              }
            } else if (res.toPayMethod == 2) {
              if (this.payWay == 2) {
                this.wxPay(res.paymentData)
              }
              if (this.payWay == 5) {
                this.aliPay(res.paymentData)
              }
            } else if (res.toPayMethod == 3) {
              window.location.href = res.paymentUrl
            }
          } catch (e) {
            //TODO handle the exception
            console.error(e);
          }
        }).catch(() => {
          uni.hideLoading()
        })
      }
    },
    // 微信支付
    wxPay(res) {
      /*setTimeout(() => {
        wx.chooseWXPay({
          timestamp: res.timeStamp, // 支付签名时间戳
          nonceStr: res.nonceStr, // 支付签名随机串,不长于 32 位
          package: res.package, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=\*\*\*)
          signType: res.signType, // 微信支付V3的传入 RSA ,微信支付V2的传入格式与V2统一下单的签名格式保持一致
          paySign: res.paySign, // 支付签名
          success: function (res) {
            // 支付成功后的回调函数
            uni.navigateTo({
              url: `/pages/pay/paySuccess?orderId=${this.orderId}&youHuiInfo=${JSON
                  .stringify(this.youHuiInfo)}`
            })
          }
        });
      }, 200)*/
      setTimeout(() => {
        WeixinJSBridge.invoke(
            'getBrandWCPayRequest', {
              "appId": res.appId, //公众号ID,由商户传入
              "timeStamp": res.timeStamp, //时间戳,自1970年以来的秒数
              "nonceStr": res.nonceStr, //随机串
              "package": res.package,
              "signType": res.signType, //微信签名方式:
              "paySign": res.paySign //微信签名
            },
            (res) => {
              if (res.err_msg == "get_brand_wcpay_request:ok") {
                // 使用以上方式判断前端返回,微信团队郑重提示:
                //res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
                /*uni.navigateTo({
                  url: `/pages/pay/paySuccess?orderId=${this.orderId}&youHuiInfo=${JSON
                      .stringify(this.youHuiInfo)}`
                })*/
              }
            });
      }, 200)
    },
    //支付宝支付
    aliPay(res) {
      ap.tradePay({
        tradeNO: res.tradeNO
      }, (res) => {
        if (res.resultCode == 9000) {
          /*uni.navigateTo({
            url: `/pages/pay/paySuccess?orderId=${this.orderId}&youHuiInfo=${JSON
              .stringify(this.youHuiInfo)}`
          })*/
          // 支付成功
        } else if (res.resultCode == 8000 || res.resultCode == 6001) {
          // 正在处理中 || 取消
        } else {
          // 支付失败
        }
      });
    },
    //银行卡支付
    bankPay(e) {
      uni.showLoading()
      tlPay({
        orderId: this.orderId,
        payWay: 3,
        bankCardId: this.bankCardId,
        smscode: e,
      }).then(res => {
        uni.hideLoading()
        uni.hideKeyboard()
        this.codeShow = false
        uni.navigateTo({
          url: `/pages/pay/paySuccess?orderId=${this.orderId}&youHuiInfo=${JSON
              .stringify(this.youHuiInfo)}`
        })
      }).catch(() => {
        uni.hideLoading()
      })
    }
  }
};
</script>
<style lang="scss" scoped>
.page {
  height: calc(100vh - 0px);
  display: flex;
  flex-direction: column;
}
.shop {
  padding: 50rpx 64rpx;
}
.avg-img {
  width: 94rpx;
  height: 94rpx;
  border-radius: 10rpx;
  background-color: #ffffff;
}
.content {
  border-radius: 40rpx 40rpx 0 0;
}
.money {
  font-size: 40rpx;
  color: #333;
}
.money-icon {
  font-size: 70rpx;
  // font-weight: bold;
  margin-right: 20rpx;
}
.money-num {
  font-size: 96rpx;
  // font-weight: bold;
}
.pay-it {
  position: absolute;
  width: 686rpx;
  height: 98rpx;
  bottom: 0;
  border-radius: 10rpx;
  font-size: 34rpx;
  color: #ffffff;
  background-color: #de2d35;
  margin: 32rpx;
}
.bank-card-ad {
  padding-top: 50rpx;
  background-image: url(~@/static/bank-card-ad1.png);
  background-size: 100% auto;
  background-position: top center;
  background-repeat: no-repeat;
}
.pay-icon {
  align-self: flex-start;
  width: 48rpx;
  margin-right: 20rpx;
}
.tag {
  background-color: #F35656;
  font-size: 20rpx;
  color: #fff;
  border-radius: 4rpx;
  line-height: 1;
  padding: 4rpx;
}
.tag-pain {
  border: 1px solid #D31F28;
  font-size: 22rpx;
  color: #D31F28;
  border-radius: 4rpx;
  line-height: 1;
  padding: 8rpx 4rpx;
}
.mask {
  position: absolute;
  width: 100%;
  height: 100%;
  left: 0;
  bottom: 0;
  z-index: 101;
  background-color: rgba(0, 0, 0, 0);
}
@keyframes cursor-blinks {
  0% {
    opacity: 1;
    display: block;
  }
  50% {
    opacity: 0;
    display: none;
  }
  100% {
    opacity: 1;
    display: block;
  }
}
.cursor {
  border-left: 1px solid transparent;
  height: 80rpx;
}
.cursor-act {
  border-left: 1px solid #333;
  animation: cursor-blinks 1s infinite steps(1, start);
}
.reg-btn {
  display: block;
  margin-top: 30rpx;
  width: 654rpx;
  height: 198rpx;
  image {
    width: 100%;
    height: 100%;
  }
}
.u-font-money {
  font-size: 60rpx;
}
.bankCard-list {
  height: 50vh;
  width: 750rpx;
  box-sizing: border-box;
  .pay-icon {
    align-self: center;
  }
}
.add-icon {
  width: 50rpx;
  height: 50rpx;
  border-radius: 25rpx;
  background: #ffc0c38f;
  display: flex;
  align-items: center;
  justify-content: center;
}
.shuka {
  width: 678rpx;
  height: 45rpx;
  position: relative;
  left: -10rpx;
  image {
    width: 100%;
    height: 100%;
  }
}
.btn {
  /* position: fixed;
bottom: 100rpx; */
  margin: 0 auto;
  margin-top: 120rpx;
  position: relative;
  width: 680rpx;
  height: 100rpx;
}
.wx-app {
  position: absolute;
  width: 680rpx;
  height: 100rpx;
}
.reg-url {
  text-align: center;
  font-size: 28rpx;
  margin-top: 30rpx;
  color: #de2d35;
}
</style>