You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

67 lines
1.5 KiB
JavaScript

import api from "@/api/index.js";
export default {
async init(jsApiList, openTagList) {
try {
const jWeixin = require('@/static/h5/jweixin-sdk');
let url = window.location.href.split("#")[0];
if (process.env.NODE_ENV == 'development') url = 'https://saasdemo.byin.vip/h5'
const configData = await getConfigData(url);;
try {
return await new Promise(res => {
configureWeChat(jWeixin, configData, jsApiList, openTagList, res)
})
} catch (error) {
console.log(error);
}
} catch (error) {
console.error('初始化错误:', error);
throw error;
}
}
}
async function getConfigData(url) {
// 从后端API获取微信H5相关信息
const res = await api.common.wechatH5({
url
});
console.log({
res
});
// 实现获取 wechatConfig 数据的逻辑
return {
app_id: res.data.appid,
timestamp: res.data.timestamp,
noncestr: res.data.noncestr,
signature: res.data.signature,
}
}
function configureWeChat(jWeixin, configData, jsApiList, openTagList, res) {
jWeixin.config({
debug: false,
appId: configData.app_id, // 必填,公众号的唯一标识
timestamp: configData.timestamp, // 必填,生成签名的时间戳
nonceStr: configData.noncestr, // 必填,生成签名的随机串
signature: configData.signature, // 必填,签名
jsApiList: jsApiList,
openTagList: openTagList
});
jWeixin.ready(() => {
// 处理初始化成功
res(jWeixin)
});
jWeixin.error((err) => {
console.log('jWeixin 错误:', err);
// 处理初始化错误
});
}