skyline-wechat-enterprise-sdk

Wechat cryptor service. base on wechat-enterprise-sdk 0.2.0

Usage no npm install needed!

<script type="module">
  import skylineWechatEnterpriseSdk from 'https://cdn.skypack.dev/skyline-wechat-enterprise-sdk';
</script>

README

微信企业号消息 Node SDK

项目启动

测试可能需要全局安装mocha

sudo npm install mocha -g

build可能需要全局安装babel

sudo npm install babel -g

开发中可使用的命令:

npm run build
npm run test
npm run watch

用法

在项目中引入:

npm i wechat-enterprise-sdk --save

然后在项目目录下建立config 目录并且在里面加入default.json 在default.json中加入

{
  "ENTERPRISE_WECHAT": {
    "corpid": "your corp id",
    "secret": "your corp secret",
    "token": "your token",
    "EncodingAESKey": "your EncodingAESKey"
  },
  //使用authAPI和suiteAuthAPI 需要填写这个属性,这个2个API供套件提供商使用
  "PROVIDER": {
    "corpid": "provider corpid",
    "providersecret": "provider secret"
  }"
}

API

var wechat = require('wechat-enterprise-sdk');

msgAPI

主动发送消息API

var msgAPI = wechat.msgAPI;

msgAPI.createChat

创建群聊方法

/**
  * 创建群聊的API
  * @param  string chatid   chatid
  * @param  string name     群聊名称
  * @param  string owner    owner id,企业号通讯录里面设置的id
  * @param  array  userlist 参与群聊的人
  * @return object<Thenjs>  Thenjs对象
  * @example
  * {
  * 	"errcode": "0",
  * 	"errmsg": "ok"
  * }
  */
msgAPI.createChat(chatid, name, owner, userlist)
.then((next, result) => {
    //result from wechat server @example
});

msgAPI.sendMsg

发送消息,单聊或群聊

/**
  * 发送信息的接口
  * @param  string sendToId 对个人发送消息就是微信通讯录里面设置的id,群聊则是groupid
  * @param  string senderId ge
  * @param  string msgType  config.js 中定义的vaild msgtype
  * @param  string chatType config.js 中定义的vaild chattype
  * @param  string content  text类型的消息是消息体,其它类型的消息是media id
  * @return object<Thenjs>
  * @example
  * {
  * 	"errcode": 0,
  * 	"errmsg": "ok"
  * }
  */
  msgAPI.sendMsg(sendToId, senderId, msgType, chatType, content)
  .then((next, result) => {
    //result from wechat server @example
  });

msgAPI.getChat

获取一个会话的详细信息

 /**
  * 获取一个会话的详细信息
  * @param  string chatid 单聊或者群聊
  * @return object<Thenjs>
  * @example
  * {
  * 	"errcode": 0,
  *  	"errmsg": "ok",
  *   "chat_info": {
  *   	"chatid": "235364212115767297",
  *    	"name": "企业应用中心",
  *     "owner": "zhangsan",
  *     "userlist": ["zhangsan", "lisi", "wangwu"]
  *    }
  * }
  */
  msgAPI.getChat(11211)
  .then((next, result) => {
    //result from wechat server @example
  });

msgAPI.modifyChat

修改会话信息

/**
  * 修改话题
  * @param  object postdata
  * {
  *   "chatid": "235364212115767297",
  *   "op_user": "lisi",
  *   "name": "企业应用中心", 非必需
  *   "owner": "zhangsan",  非必需
  *   "add_user_list": ["zhaoli"], 非必需
  *   "del_user_list": ["zhangsan"] 非必需
  * }
  * @return object<Thenjs>
  * @example
  * {
  * 	"errcode": 0,
  * 	"errmsg": "ok"
  * }
  */
  msgAPI.modifyChat(postdata)
  .then((next, result) => {
    //result from wechat server @example
  });

msgAPI.quitChat

退出话题

/**
  * 退出话题
  * @param  string chatid 群聊的chat id
  * @param  string userid 企业通讯录里面定义的user id,必需在要退出的群聊中
  * @return object<Thenjs>
  * @example
  * {
  * 	"errcode": 0,
  * 	"errmsg": "ok"
  * }
  */
  msgAPI.quitChat(chatid, userid)
  .then((next, result) => {
    //result from wechat server @example
  });

msgAPI.clearNotify

清除消息未读标记

/**
  * 清除消息标记
  * @param  string userid 操作者,需要清除标记的用户
  * @param  string type   single / group
  * @param  string id     企业通讯录中定义的user id / 群聊 group id,与操作者对话的人或者操作者所在的群聊
  * @return object<Thenjs>
  * @example
  * {
  * 	"errcode": 0,
  * 	"errmsg": "ok"
  * }
  */
  msgAPI.clearNotify(userid, type, id)
  .then((next, result) => {
    //result from wechat server @example
  });

msgAPI.muteChat

设置成员新消息勿打扰

 /**
  * 设置新消息免打扰
  * @param  object userlist
  * {
  * 	'user_mute_list': [
  * 		{
  * 			userid: 'yinan',
  * 			status: 0
  * 		},
  * 		{
  * 			userid: 'huaqiao',
  * 			status: 1
  * 		}
  * 	]
  * }
  * 默认值为0, 0是关闭,1是打开
  * @return object<Thenjs>
  * @example
  * {
  * 	"errcode": 0,
  * 	"errmsg": "ok",
  * 	"invaliduser":["asdfjjj"]
  * }
  */
  msgAPI.muteChat(userlist)
  .then((next, result) => {
    //result from wechat server @example
    //这里如果全部是不合法的userid, 返回的数据结构和example有差别:
    //{"errcode":40031,"errmsg":"invalid userid list"}
  });

handlerAPI

被动响应微信消息API

var handlerAPI = wechat.handlerAPI;

handlerAPI.verifyURL

在设置微信消息回调的时候,对设置的URL进行验证时需要用到的方法

/**
  * 验证URL
  * @param  string msgSignature 签名串,对应URL参数的msg_signature
  * @param  string timestamp    时间戳,对应URL参数的timestamp
  * @param  string nonce        随机串,对应URL参数的nonce
  * @param  string echostr      解密后的echostr
  * @return array               ret: errercode, reply echo str
  */
  var result = handlerAPI.verifyURL(msgSignature, timestamp, nonce, echostr);
  expect(result[0]).to.equal(0);
  //result[1]的指既为解密后的原始值,直接响应给微信即可通过验证

handlerAPI.decryptMsg

设置微信消息回调链接成功后,所有的用户发给企业通讯录其他用户或者群聊中的消息都会发送给设置的回调的链接,此方法是对这些消息进行解密。

/**
  * 检验消息的真实性,并且获取解密后的明文
  * <ol>
  *    <li>利用收到的密文生成安全签名,进行签名验证</li>
  *    <li>若验证通过,则提取xml中的加密消息</li>
  *    <li>对消息进行解密</li>
  * </ol>
  * @param  string msgSignature get 到的消息签名
  * @param  string timestamp    默认为null,时间戳
  * @param  string nonce        随机字符串
  * @param  string postdata     post 的 xml
  * @param  string type         default 'message', 指定要解析的xml类型,如果值不为message则当作event解析
  * @return object<Thenjs>
  * @example
  * [
  * 	0,
  * 	{
  * 		"xml": {
  * 			"AgentType":"chat",
  * 			"ToUserName":"wx80850b023d7c38d9",
  * 			"ItemCount":"1",
  * 			"PackageId":"429496798487285866",
  * 			"Item": [
  * 				{
  * 					"FromUserName":"yinan",
  * 					"CreateTime":"1438850706",
  * 					"MsgType":"text",
  * 					"Content":"哈哈哈",
  * 					"MsgId":"6179816726305163297",
  * 					"Receiver": {
  * 						"Type":"single",
  * 						"Id":"huaqiao"
  * 					}
  * 				}
  * 			]
  * 		}
  * 	}
  * ]
  */
  handlerAPI.decryptMsg(msgSignature, timestamp = null, nonce, postdata)
  .then((next, result) => {
    // xml parsed result @example
    expect(result[0]).to.equal(0);
  });

membersAPI

成员/部门管理API

var membersAPI = wechat.membersAPI;

membersAPI.createDepartment

创建部门

membersAPI.updateDepartment

更新部门信息

membersAPI.deleteDepartment

删除部门,不可删除不为空的部门

membersAPI.getDepartment

获取部门信息

membersAPI.createMember

创建一个成员

membersAPI.updateMember

更新成员信息

membersAPI.deleteMember

删除成员

membersAPI.deleteMembers

批量删除成员

membersAPI.getMember

获取成员详细信息

membersAPI.getUserSimplelist

根据部门id获取部门下所有成员基本信息

membersAPI.getUserList

根据部门id获取部门下所有成员详细信息

membersAPI.inviteUser

向一个成员发送邀请,关注企业微信。优先微信邀请,如果成员信息中weixinid 为空则用邮件邀请,人应该以邮箱也为空则报错

authAPI

var authAPI = wechat.authAPI;

authAPI.getLoginInfo

获取企业管理员登陆信息

suiteAuthAPI

var suiteAuthAPI = new wechat.suiteAuthAPI(suiteid, suitesecret, ticket);

suiteAuthAPI.getPreAuthCode

获取预授权码

suiteAuthAPI.getSessionInfo

设置授权配置

suiteAuthAPI.getPermanentCode

获取企业号的永久授权码

suiteAuthAPI.getAuthInfo

获取企业号的授权信息

suiteAuthAPI.getAgent

获取企业号应用

suiteAuthAPI.setAgent

设置企业号应用

suiteAuthAPI.getCorpToken

获取企业号access_token