搜索
您的当前位置:首页企业微信开发

企业微信开发

来源:世旅网
1 前提准备工作
1 创建应用

企业微信分享是在应用下的,所以要先创建一个企业微信的应用,这个应用相当于微信上的公众号

2 进入应用获取秘钥

秘钥需要在企业微信管理员手机企业微信中才能查看到

3 配置js域名

网页授权功能域名是跟用户登录相关的,js-sdk域名是跟网页js功能相关的,比如 分享、获取当前企业微信用户上下文等

4 获取企业id

在企业微信管理后台下我的企业中可以查看到企业的企业id

5 获取企业微信秘钥

企业微信开发有多种秘钥,一种是企业微信的秘钥,相当于是整个企业的秘钥,一种是应用的秘钥

2 企业微信h5开发
1 获取企业微信的access_token

请求:

https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=企业微信id&corpsecret=企业微信秘钥

响应:

{
	"errcode": 0,
	"errmsg": "ok",
	"access_token": "企业微信秘钥",
	"expires_in": 7200
}
2 获取企业微信的js-api-ticket

请求:

https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=企业微信的access_token

响应:

{
	"errcode": 0,
	"errmsg": "ok",
	"ticket": "企业微信的js-api-ticket",
	"expires_in": 7200
}
3 获取应用 的access_token

请求:

https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=企业id&corpsecret=应用秘钥

响应:

{
	"errcode": 0,
	"errmsg": "ok",
	"access_token": "应用access_token",
	"expires_in": 7200    // 有效期两小时,不能频繁调用,需要将这个秘钥存起来
}

需要注意的是,需要先在应用中配置企业可信IP才能调用企业微信api接口,不然的话可能会出现IP异常调用错误的问题

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FxOnSaGy-1690192878025)(C:\Users\m1877\AppData\Roaming\Typora\typora-user-images\image-20230724151827113.png)]

4 获取应用的js-ticket

请求

https://qyapi.weixin.qq.com/cgi-bin/ticket/get?access_token=上面接口获取的的应用access_tokentype=agent_config

响应:

{
	"errcode": 0,
	"errmsg": "ok",
	"ticket": "应用的js-ticket",
	"expires_in": 7200
}
5 js初始化h5环境
$.ajax({
      type: "GET",
      url: "https://baidu.com/qywx/get_js_sign",
      data: "",
      success: function (result) {
        result = JSON.parse(result);
        init_wx_config(result);
      },
    });

// 初始化微信h5环境
function init_wx_config(data) {
    
		wx.config({
            beta: true, 
            appId: data.corpid, // 必填,企业微信的corpID
            timestamp: data.timestamp, // 必填,生成签名的时间戳
            nonceStr: data.noncestr, // 必填,生成签名的随机串
            signature: data.sign, // 必填,签名,见 附录-JS-SDK使用权限签名算法
            jsApiList: ["agentConfig"], // 必填,需要使用的JS接口列表,凡是要调用的接口都需要传进来
          });
        wx.ready(function (err) {
            console.log("微信sdk基础环境初始化成功");
            wxReady(data);
          });
    }


// 注册应用功能权限
 function wxReady(config) {
      console.log("执行企业微信初始化操作!", config);
      a = [];

      wx.agentConfig({
        beta: true,
        corpid: "企业id", // 必填,企业微信的corpid,必须与当前登录的企业一致
        agentid: 1000003, // 必填,企业微信的应用id (e.g. 1000247)
        timestamp: config.timestamp, // 必填,生成签名的时间戳
        nonceStr: config.noncestr, // 必填,生成签名的随机串
        signature: config.agent_sign, // 必填,签名,见附录-JS-SDK使用权限签名算法
        jsApiList: [
          // 所有用到的企微方法,都需要在这里注入权限,否则会无法调用
          "openUserProfile", // 打开用户信息
          "openEnterpriseChat", // 创建会话
          "openExistedChatWithMsg", // 打开会话并发送消息
          "updateEnterpriseChat", // 更新会话信息,修改群成员
          "selectExternalContact", // 选择外部联系人
          "getContext", // 获取群内容
          "getCurExternalChat", // 获取群id
          "sendChatMessage", // 给当前群发送消息
          "shareToExternalContact", // 分享给外部联系人
          "shareToExternalChat", // 分享内容到外部群
          "getCurExternalContact",
          "onMenuShareAppMessage",  // 分享给联系人
        ],
        success: function (res) {
          console.log("企微应用功能权限注册成功");

          // 分享功能配置
          wx.onMenuShareAppMessage({
            title: "aaa", // 分享标题
            desc: "bbb", // 分享描述
            link: "http://baidu.com", // 分享链接;在微信上分享时,该链接的域名必须与企业某个应用的可信域名一致
            imgUrl: "http://baidu.com/share.jpg", // 分享图标
            enableIdTrans: 1, // 是否开启id转译,不填默认为0
            success: function () {
              // 用户确认分享后执行的回调函数
            },
            error: function (res) {
              if (res.errMsg.indexOf("no permission") > 0) {
                alert("未agentConfig");
              }
            },
            cancel: function () {
              // 用户取消分享后执行的回调函数
            },
          });
    }

后续开发可以查看微信提供的js-sdk方法,如 获取外部联系人、分享消息、微信客服工具栏等功能, 上文主要记录企业微信h5初始化

6 python生成js签名
import hashlib

from sanic import Sanic
from sanic.response import JSONResponse, HTTPResponse
from sanic.request import Request
from sanic_cors import CORS

app = Sanic("js-sdk")

# 企业jsapi-ticket
jsapi_ticket = "企业微信的js_api_ticket"

# 应用js-api-ticket
agent_ticket = "应用js-ticket"

@app.get("/get_js_sign")
async def get_js_sign(request):
    noncestr = "abdgeTehgrafeRwf"
    url = "https://baidu.com"
    timestamp = int(time.time())
    sign_str = "jsapi_ticket={}&noncestr={}&timestamp={}&url={}".format(jsapi_ticket, noncestr, timestamp, url)
    agent_str = "jsapi_ticket={}&noncestr={}&timestamp={}&url={}".format(agent_ticket, noncestr, timestamp, url)

    sign = hashlib.sha1(sign_str.encode("utf-8")).hexdigest()
    agent_sign = hashlib.sha1(agent_str.encode("utf-8")).hexdigest()

    return JSONResponse({"noncestr": noncestr, "timestamp": timestamp, 
                         "sign": sign, "agent_sign": agent_sign})


3 微信客服开发

待更新

4 自建应用开发

待更新

因篇幅问题不能全部显示,请点此查看更多更全内容

Top