<template>
  <div></div>
</template>

<script>
// import { isDayjs } from 'dayjs'
import * as api from '../api.js'

export default {
  name: 'wxPay',
  props: {
    productId: { type: String, required: true }
  },
  data() {
    return {
      clearTime: null,
      openId: '',
      order: { options: {} },
      oId: ''
    }
  },
  computed: {
    // 用户信息
    user() {
      return this.$store.state.user
    },
    // 是否登录
    isLogin() {
      return this.$store.state.isLogin
    }
  },
  mounted() {
  },
  methods: {
    // 获取openid
    getOpenId() {
      api.getOpenId({ id: this.user.data.id, identity: 'alumni' }).then(response => {
        this.openId = response.data.openid
        // 生成订单
        this.genOrder()
      })
    },
    // 生成订单
    genOrder() {
      const params = {
        openid: this.openId,
        type: 7,
        notify_url: process.env.NODE_ENV !== 'development' ? `https://alumni-frontend.ezijing.com/${this.oId}` : `http://docker-alumni-api.ezijing.com/${this.oId}`
      }
      api.genOrder(params, this.productId).then(response => {
        this.order = response
        clearInterval(this.clearTime)
        this.clearTime = setInterval(() => {
          this.getOrderStatus(this.order.order_no)
        }, 1000)
        // 调起微信支付
        this.wxPay()
      })
    },
    getOrderStatus(id) {
      api.getOrder(id).then(response => {
        const code = parseInt(response.data.status)
        if (code === 1) {
          clearInterval(this.clearTime)
          this.$router.go(0)
          setTimeout(() => {
            this.$router.go(0)
          }, 1000)
        }
      })
    },
    // 微信支付
    wxPay() {
      const options = this.order.options
      const url = `https://web-pay.ezijing.com/wxpay/h5?app_id=${options.appId}&prepay_id=${this.order.prepay_id}&redirect_uri=${window.location.href}`
      window.location.href = url
      // window.WeixinJSBridge.invoke(
      //   'getBrandWCPayRequest',
      //   {
      //     appId: options.appId, // 公众号名称，由商户传入
      //     timeStamp: options.timeStamp, // 支付签名时间戳，注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
      //     nonceStr: options.nonceStr, // 支付签名随机串，不长于 32 位
      //     package: `prepay_id=${this.order.prepay_id}`, // 统一支付接口返回的prepay_id参数值，提交格式如：prepay_id=\*\*\*）
      //     signType: options.signType, // 签名方式，默认为'SHA1'，使用新版支付需传入'MD5'
      //     paySign: options.paySign // 支付签名
      //   },
      //   function (res) {
      //     if (res.err_msg === 'get_brand_wcpay_request:ok') {
      //       // 使用以上方式判断前端返回,微信团队郑重提示：
      //       // res.err_msg将在用户支付成功后返回ok，但并不保证它绝对可靠。
      //       this.$toast('支付成功')
      //       // 支付成功后的回调函数
      //       this.$emit('success', res)
      //     } else {
      //       this.$toast('支付失败')
      //       this.$emti('fail', res)
      //     }
      //   }
      // )
      // wx.chooseWXPay({
      //   timestamp: options.timeStamp, // 支付签名时间戳，注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
      //   nonceStr: options.nonceStr, // 支付签名随机串，不长于 32 位
      //   package: `prepay_id=${this.order.prepay_id}`, // 统一支付接口返回的prepay_id参数值，提交格式如：prepay_id=\*\*\*）
      //   signType: options.signType, // 签名方式，默认为'SHA1'，使用新版支付需传入'MD5'
      //   paySign: options.paySign, // 支付签名
      //   success: res => {
      //     this.$toast('支付成功')
      //     // 支付成功后的回调函数
      //     this.$emit('success', res)
      //   },
      //   fail: error => {
      //     this.$toast('支付失败')
      //     this.$emti('fail', error)
      //   }
      // })
    },
    pay(id) {
      this.oId = id
      console.log(this.oId)
      this.getOpenId()
    }
  }
}
</script>
