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)
|
||
}
|
||
})
|
||
});
|
||
});
|
||
}
|
||
} |