官方API:https://developer.work.weixin.qq.com/document/path/90514

uniapp可以用jquery吗 uniapp引入jssdk_前端

1.导入官方提供的js

<script src="//res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>

在实际使用时,wx.congif报错:wx.config is not a function

uniapp可以用jquery吗 uniapp引入jssdk_javascript_02


错误原因:

uni-app已经注册了一个全局的wx,所有此处的会被覆盖掉。

尝试了网上的一些方法,仍旧是无法解决问题,采用以下方式完美解决了这个问题。

解决办法:

1.打开cmd
2.进入项目的根目录,输入命令:npm init -y

此时根目录会生成一个package.js文件

uniapp可以用jquery吗 uniapp引入jssdk_开发语言_03

3.安装weixin-js-sdk

npm install weixin-js-sdk

uniapp可以用jquery吗 uniapp引入jssdk_客户端_04

5.引入

import JWeixin from “weixin-js-sdk”;

此时就可以正常的使用了:
JWeixin.config({

});

2.通过config接口注入权限验证配置

步骤按照API中的进行即可:

uniapp可以用jquery吗 uniapp引入jssdk_前端_05

let timestamp = new Date().getTime(); //时间戳
let noncestr = base.randomString(16); //生成签名的随机串

//base.js:
const randomString =function (len){
    let _charStr = 'abacdefghjklmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ0123456789',
        min = 0, 
        max = _charStr.length-1, 
        _str = '';                    //定义随机字符串 变量
    //判断是否指定长度,否则默认长度为15
    len = len || 15;
    //循环生成字符串
    for(var i = 0, index; i < len; i++){
        index = (function(randomIndexFunc, i){         
                    return randomIndexFunc(min, max, i, randomIndexFunc);
                })(function(min, max, i, _self){
                    let indexTemp = Math.floor(Math.random()*(max-min+1)+min),
                        numStart = _charStr.length - 10;
                    if(i==0&&indexTemp >=numStart){
                        indexTemp = _self(min, max, i, _self);
                    }
                    return indexTemp ;
                }, i);
        _str += _charStr[index];
    }
    return _str;
}

// 获取signature签名
base.get({
			url: "WeChat/getJsSDKSignature",
			data: {
				timestamp: timestamp,
				noncestr: noncestr,
				url: window.location.href // 注意传入的url一定要是客户端当前页面的完整路径,包含路径中带的参数,例如:http://XXX.com?type=1
			},
			success: function(res) {
				if (res.data.data) {
					jweixin.config({
						beta: true, // 必须这么写,否则wx.invoke调用形式的jsapi会有问题
						debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
						appId: base.appid, // 必填,企业微信的corpID
						timestamp: timestamp, // 必填,生成签名的时间戳
						nonceStr: noncestr, // 必填,生成签名的随机串
						signature: res.data.data.signature, // 必填,签名,见附录1
						jsApiList: [
							'selectEnterpriseContact' 
						] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
					});
					jweixin.ready(function(){
					    // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
					});
					jweixin.error(function(res){
					    // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
						console.log('error:',res);
						alert('jweixin.error='+res);
					});
				}

			},
			fail: function(res) {
				console.log('error:', res);
			}