You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
127 lines
3.2 KiB
127 lines
3.2 KiB
<template>
|
|
<view class="">
|
|
<web-view :src="$store.state.webViewUrl" @onPostMessage="postMessage" @message="postMessage" :webview-styles="webviewStyles"></web-view>
|
|
<!-- <web-view src="http://192.168.1.44:92/vue/wxStudentCertificate3" @onPostMessage="postMessage" @message="postMessage"></web-view> -->
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
let polling = null
|
|
let timerNum = 0
|
|
import { order_info } from '@/config/api.js'
|
|
export default {
|
|
data() {
|
|
return {
|
|
iswxPay: false,
|
|
webviewStyles: {
|
|
progress: {
|
|
color: '#3877ff'
|
|
},
|
|
},
|
|
sweixin: null
|
|
}
|
|
},
|
|
onLoad(options) {
|
|
this.outTradeNo = options.outTradeNo
|
|
this.initWx()
|
|
this.order_infoFn()
|
|
},
|
|
onShow() {
|
|
if(this.iswxPay) {
|
|
timerNum = 0
|
|
this.pollFn()
|
|
}
|
|
},
|
|
onHide() {
|
|
clearInterval(polling)
|
|
polling = null
|
|
},
|
|
methods: {
|
|
// 监听h5事件
|
|
postMessage(res) {
|
|
console.log('监听到了')
|
|
let item = res.detail.data[0]
|
|
console.log(res)
|
|
console.log('监听到的发送事件')
|
|
console.log(item)
|
|
if(item.action=='ysb-wxPay') {
|
|
// this.$u.toast('用户点击了微信支付')
|
|
this.iswxPay = true
|
|
this.wxPay(item)
|
|
}else if(item.action=='ysb-paySuccess') {
|
|
this.$u.toast('支付成功')
|
|
this.iswxPay = false
|
|
this.$store.dispatch('getUserInfo')
|
|
setTimeout(()=>{
|
|
uni.switchTab({
|
|
url: '/pages/tabbar/learnCar/index'
|
|
})
|
|
},800)
|
|
}
|
|
},
|
|
// 轮询定时
|
|
pollFn() {
|
|
polling = setInterval(async ()=>{
|
|
timerNum ++
|
|
if(timerNum>10) {
|
|
clearInterval(polling)
|
|
polling = null
|
|
}
|
|
await this.order_infoFn()
|
|
},1000)
|
|
|
|
},
|
|
// 查询订单状态
|
|
async order_infoFn() {
|
|
const {data: res} = await order_info({outTradeNo:this.outTradeNo})
|
|
if(res.status==10) {
|
|
this.$u.toast('支付成功')
|
|
clearInterval(polling)
|
|
polling = null
|
|
setTimeout(()=>{
|
|
uni.switchTab({
|
|
url: '/pages/tabbar/learnCar/index'
|
|
})
|
|
},1500)
|
|
}
|
|
console.log('订单状态')
|
|
console.log(res)
|
|
},
|
|
// "action": "lyxc-wxPay",
|
|
// "miniProgramType": 2,
|
|
// "miniAppId": "gh_89b377cbc340",
|
|
// "path": "/pages/wxPayOnly/wxPayOnly?channelNo=QD202404083509&orderNo=20240423170705024771&inpartNo=820198016000045&merchantName=中原智慧新校园&amount=1&redMsg=&payType=04"
|
|
// 跳转到微信支付
|
|
wxPay(item) {
|
|
console.log(item)
|
|
// #ifdef APP-PLUS
|
|
this.sweixin ? this.sweixin.launchMiniProgram({
|
|
path: item.path, //跳转小程序页面路径 pages/index/index
|
|
type: item.miniProgramType, //可取值: 0-正式版; 1-测试版; 2-体验版。 默认值为0。
|
|
id: item.miniAppId //小程序的原始id
|
|
}) : plus.nativeUI.alert('当前环境不支持微信操作!');
|
|
// #endif
|
|
},
|
|
// 初始化微信支付方法
|
|
initWx() {
|
|
// #ifdef APP-PLUS
|
|
plus.share.getServices((s) => {
|
|
var shares = {};
|
|
for (var i = 0; i < s.length; i++) {
|
|
var t = s[i];
|
|
console.log("...........", t);
|
|
shares[t.id] = t;
|
|
}
|
|
var sweixin = shares['weixin'];
|
|
this.sweixin = sweixin
|
|
}, function(e) {
|
|
console.log("获取分享服务列表失败:" + e.message);
|
|
});
|
|
// #endif
|
|
},
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style>
|
|
</style>
|