1、引用weixin-1.2.0.js 一定使用线上引用,npm install引用的报agentConfig is not a function;
2、vue ts在public -> index 中引用 < scri pt src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
后
后在跳转小程序vue文件中要定义 declare let wx: any; 否则项目运行及打包都报错Cannot find name ‘wx’ ;
3、跳转小程序必须先成功调用agentConfig,调用 wx.agentConfig需要引入 jwxwork sdk <script src="https://open.work.weixin.qq.com/wwopen/js/jwxwork-1.0.0.js"></script>
4、请求签名传的url不能转义、不加参数;
5、常遇错误代码:
4.1 40093 jsapi签名错误(检查签名和URL是否正确)
4.2 80001 可信域名不正确,或者无ICP备案(登录企微后台检查)
6、not allow to cross corp (跳转小程序报错)
登录企微后台检查企微应用是否关联小程序
7、数据请求注意异步影响,确保签名数据拿到后才执行下一步操作;
Vue中代码示例如下:
async toxiaochengxu(){
let url = window.location.href.split(’?’)[0];
axios.get(${process.env.VUE_APP_BASE_API}wx/ticket
,{
params: {
url:url
}}
).then(response => {
if(response.status == 200){
let qiyeData = response.data.data;
wx.config({
beta: true,// 必须这么写,否则wx.invoke调用形式的jsapi会有问题
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: qiyeData.appId, // 必填,企业微信的corpID
timestamp: qiyeData.timestamp, // 必填,生成签名的时间戳
nonceStr: qiyeData.nonceStr, // 必填,生成签名的随机串
signature: qiyeData.signature,// 必填,签名,见 附录-JS-SDK使用权限签名算法
jsApiList: [‘ready’,‘agentConfig’] // 必填,需要使用的JS接口列表,凡是要调用的接口都需要传进来
});
wx.ready(function(){
wx.checkJsApi({
jsApiList: [‘agentConfig’,‘launchMiniprogram’], // 需要检测的JS接口列表
success:function(res) {
axios.get( ${process.env.VUE_APP_BASE_API}wx/ticket
,{
params: { url:url, agent:1 }
}
).then(response2 => {
if(response2.status == 200){
let yingyongData = response2.data.data;
wx.agentConfig({
corpid: yingyongData.appId, // 必填,企业微信的corpid,必须与当前登录的企业一致
agentid: yingyongData.agentId, // 必填,企业微信的应用id (e.g. 1000247)
timestamp: yingyongData.timestamp, // 必填,生成签名的时间戳
nonceStr: yingyongData.nonceStr, // 必填,生成签名的随机串
signature: yingyongData.signature,// 必填,签名,见附录-JS-SDK使用权限签名算法
jsApiList: [‘launchMiniprogram’], //必填,传入需要使用的接口名称
success: function(res) {
wx.invoke(‘launchMiniprogram’, {
“appid” : “”, // 需跳转的小程序appid
“path” : “”, // 所需跳转的小程序内页面路径及参数。非必填
}, function(res) {
if(res.err_msg == “launchMiniprogram:ok”) {
// 正常
console.log(‘正常’);
} else {
// 错误处理
}
}
);
},
fail: function(res) {
if(res.errMsg.indexOf(‘function not exist’) > -1){
alert(‘版本过低请升级’)
}
}
});
}
})
}
});
});
}
});
}
html中代码示例如下:
function toxiaochengxu(){
let url = window.location.href.split(’?’)[0];
let yingyongData = {};
let qiyeData = {};
$.ajax(
{
url: “http://ss.libang.dgtis.com/wxportal-api/wx/ticket”,
type: “get”,
dataType: “json”,
data: { url: url },
success: function (result) {
console.log(result);
qiyeData = result.data;
wx.config({
beta: true,// 必须这么写,否则wx.invoke调用形式的jsapi会有问题
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: qiyeData.appId, // 必填,企业微信的corpID
timestamp: qiyeData.timestamp, // 必填,生成签名的时间戳
nonceStr: qiyeData.nonceStr, // 必填,生成签名的随机串
signature: qiyeData.signature,// 必填,签名,见 附录-JS-SDK使用权限签名算法
jsApiList: [‘ready’,‘agentConfig’] // 必填,需要使用的JS接口列表,凡是要调用的接口都需要传进来
});
$.ajax(
{
url: “http://ss.libang.dgtis.com/wxportal-api/wx/ticket”,
type: “get”,
dataType: “json”,
data: { url: url,agent:1 },
success: function (result) {
console.log(result);
yingyongData = result.data;
wx.ready(function(){
wx.checkJsApi({
jsApiList: [‘agentConfig’,‘launchMiniprogram’], // 需要检测的JS接口列表
success: function(res) {
wx.agentConfig({
corpid: yingyongData.appId, // 必填,企业微信的corpid,必须与当前登录的企业一致
agentid: yingyongData.agentId, // 必填,企业微信的应用id (e.g. 1000247)
timestamp: yingyongData.timestamp, // 必填,生成签名的时间戳
nonceStr: yingyongData.nonceStr, // 必填,生成签名的随机串
signature: yingyongData.signature,// 必填,签名,见附录-JS-SDK使用权限签名算法
jsApiList: [‘launchMiniprogram’], //必填,传入需要使用的接口名称
success: function(res) {
wx.invoke(‘launchMiniprogram’, {
“appid” : “”, // 需跳转的小程序appid
“path” : “”, // 所需跳转的小程序内页面路径及参数。非必填
}, function(res) {
if(res.err_msg == “launchMiniprogram:ok”) {
// 正常
console.log(‘正常’)
console.log(‘launchMiniprogram:ok’)
} else {
// 错误处理
}
}
);
},
fail: function(res) {
if(res.errMsg.indexOf(‘function not exist’) > -1){
alert(‘版本过低请升级’)
}
}
});
}
});
});
},
error: function (xhr, status, p3, p4) {
}
});
},
error: function (xhr, status, p3, p4) {
}
});
}