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备案(登录企微后台检查)

Python 通过企业微信小程序发信息 企业微信调用小程序_签名算法


Python 通过企业微信小程序发信息 企业微信调用小程序_小程序_02

6、not allow to cross corp (跳转小程序报错)
登录企微后台检查企微应用是否关联小程序

Python 通过企业微信小程序发信息 企业微信调用小程序_Python 通过企业微信小程序发信息_03

Python 通过企业微信小程序发信息 企业微信调用小程序_小程序_04

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