93 lines
3.1 KiB
JavaScript
93 lines
3.1 KiB
JavaScript
|
// 引入 jweixin-module
|
|||
|
const jweixin = require('jweixin-module');
|
|||
|
|
|||
|
// 通过export 暴露常用的方法
|
|||
|
export default {
|
|||
|
//判断是否在微信中
|
|||
|
isWechat: function() {
|
|||
|
var ua = window.navigator.userAgent.toLowerCase();
|
|||
|
if (ua.match(/micromessenger/i) == 'micromessenger') {
|
|||
|
//console.log('是微信客户端')
|
|||
|
return true;
|
|||
|
} else {
|
|||
|
//console.log('不是微信客户端')
|
|||
|
return false;
|
|||
|
}
|
|||
|
},
|
|||
|
|
|||
|
// 初始化WXSDK
|
|||
|
initJssdk: async function(callback) {
|
|||
|
/* ****************************************
|
|||
|
* 获取当前url然后传递给后台获取授权和签名信息
|
|||
|
# TODO: 后台返回签名
|
|||
|
*************************************** */
|
|||
|
// let uri = encodeURIComponent(window.location.href.split('#')[0]);
|
|||
|
let uri = window.location.href.split('#')[0];
|
|||
|
console.log(uri); // 这
|
|||
|
// 获取后台返回的签名
|
|||
|
// 这里需要换成开发者自己的接口。
|
|||
|
// 此处我对uni.request进行了封装,
|
|||
|
// 直接采用uni.request方法然后在成功的回调里面完成SDK初始化也是可行的,根据实际情况处理
|
|||
|
let res = await this.GetSignature(uri);
|
|||
|
console.log(res); // 这里输出你的签名结果
|
|||
|
//注入config权限配置
|
|||
|
let wxConf = {
|
|||
|
debug: true, // 是否开启调试,第一次尝试,建议开启,后续可关闭
|
|||
|
appId: res.data.appId, // 必填,公众号的唯一标识
|
|||
|
timestamp: res.data.timestamp, // 必填,生成签名的时间戳
|
|||
|
nonceStr: res.data.nonceStr, // 必填,生成签名的随机串
|
|||
|
signature: res.data.signature, // 必填,签名
|
|||
|
jsApiList: [ //这里是需要用到的接口名称
|
|||
|
'updateAppMessageShareData', //分享接口
|
|||
|
'updateTimelineShareData'
|
|||
|
]
|
|||
|
};
|
|||
|
jweixin.config(wxConf); //完成微信配置
|
|||
|
},
|
|||
|
async GetSignature(uri) {
|
|||
|
try {
|
|||
|
const response = await uni.request({
|
|||
|
url: 'http://ysh.0rui.cn/index.php',
|
|||
|
data: {
|
|||
|
url: uri
|
|||
|
},
|
|||
|
method: 'POST',
|
|||
|
header: {
|
|||
|
'content-type': 'application/x-www-form-urlencoded',
|
|||
|
}
|
|||
|
});
|
|||
|
console.log(response); // 这里输出你的签名结果
|
|||
|
// 在这里可以添加你的其他逻辑,处理获取到的签名数据
|
|||
|
return response[1]; // 如果需要在函数外部使用签名数据,可以将其返回
|
|||
|
} catch (error) {
|
|||
|
console.error('Error in GetSignature:', error);
|
|||
|
// 在这里处理错误情况,或者抛出异常
|
|||
|
throw error;
|
|||
|
}
|
|||
|
},
|
|||
|
/* ***************************************
|
|||
|
*
|
|||
|
* 微信SDK功能实例:调用微信扫码
|
|||
|
* 若没有初始化需要先调用initJssdk完成初始化
|
|||
|
* 若当前页面已经完成initJssdk初始化,调用扫码功能是可以直接调用 jweixin.scanQRCode
|
|||
|
*
|
|||
|
* **************************************/
|
|||
|
scanCode: function(callback, needResult = 1) {
|
|||
|
if (!this.isWechat()) {
|
|||
|
console.log('不是微信客户端')
|
|||
|
return;
|
|||
|
}
|
|||
|
this.initJssdk(function(res) {
|
|||
|
jweixin.ready(function() {
|
|||
|
jweixin.scanQRCode({
|
|||
|
needResult: needResult, // 0扫码结果由微信处理, 1是直接返回结果,由开发者处理
|
|||
|
scanType: ["qrCode", "barCode"],
|
|||
|
success: function(rs) {
|
|||
|
console.log(rs);
|
|||
|
callback(rs)
|
|||
|
}
|
|||
|
})
|
|||
|
});
|
|||
|
});
|
|||
|
}
|
|||
|
}
|