C#开发微信门户及使用(17)-微信集团号的通信录管理支付之部门管理

 前边一篇小说集团号的片段基础音讯,以及介绍怎么着布署集团号的回调格局贯彻和商号号服务器进行互换的桥梁。本篇主要仍旧持续介绍集团号的开支工作的举办,介绍微信公司号通信录管理支付功效,介绍其中协会机构内部如何得到和管制单位的新闻等情节。

 1、公司团体的创造和陈设

率先大家得以在小卖部号的保管后台里面创立一个社团单位,里面创设一些部门和人口列表,方便我们付出和运用。

诸如创立一个华盛顿爱奇迪的根结构,然后在其中在创制一些社团机构,如下图所示。

图片 1

然后给社团结构根节点“圣地亚哥爱奇迪”伸张一个管理员权限,将来再付出接口里面也就足以拔取这么些管理员所属的权力Secret值进行调用了。

图片 2

CorpID是商家号的标识,每个商家号具备一个唯一的CorpID;Secret是管理组凭证密钥。
系统管理员可经过管理端的权位管理功用创设管理组,分配管理组对使用、通信录、接口的拜访权限。完成后,管理组即可取得唯一的secret。系统管理员可通过权限管理查看所有管理组的secret,其他管理员可透过安装中的开发者凭据查看。

我的商家号的创立者和“斯德哥尔摩爱奇迪”协会协会的社团者是不一样的,由于Secret是管理组凭证密钥,由此管理者负责差异的集体单位管理以来,自己的管住Secret值可能就差别了。若是大家须要调用接口,就须要用到这一个属于自己权力级其他Secret值,如下图所示。

图片 3

 假若不是合作社号的奠基人,那么可能无法改改里面的部分权力分配,只可以查看。

图片 4

2、API访问的大局唯一票据AccessToken的拿走

和民众号一致,大家调用公司号API的率先步也是需要先取得访问的票证AccessToken。那一个单子是全局性的,有肯定的时效和频率控制,由此必要万分的展开缓存,无法每便调用都去刷新获取。

商家号获取访问票据的主要性的逻辑代码如下所示,其紧要的就是须求选择CEO的Secret值去获取相应的口令,那样它就可见清楚管理的是尤其社团结构的了。

        /// <summary>
        /// 获取每次操作微信API的Token访问令牌
        /// </summary>
        /// <param name="corpid">企业Id</param>
        /// <param name="corpsecret">管理组的凭证密钥</param>
        /// <returns></returns>
        public string GetAccessTokenNoCache(string corpid, string corpsecret)
        {
            var url = string.Format("https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={0}&corpsecret={1}",
                                    corpid, corpsecret);

            HttpHelper helper = new HttpHelper();
            string result = helper.GetHtml(url);
            string regex = "\"access_token\":\"(?<token>.*?)\"";

            string token = CRegex.GetText(result, regex, "token");
            return token;
        }

微信集团号的认证如下所示:

当集团应用调用公司号接口时,集团号后台为基于此次做客的AccessToken,校验访问的合法性以及所对应的管理组的管理权限以回到相应的结果。

*注:你应当兢兢业业配置管理组的权杖,够用即好,权限过大会扩充误操作可能性及新闻安全隐患。*

AccessToken是商店号的大局唯一票据,调用接口时需指导AccessToken。AccessToken须求用CorpIDSecret来换取,分裂的Secret会重返差其他AccessToken。常规状态下AccessToken有效期为7200秒,有效期内再一次获取再次回到相同结果,并机关续期。由于得到access_token的api调用次数极度有限,提出集团全局存储与更新access_token,频仍刷新access_token会导致api调用受限,影响自身业务

 

2、通讯录管理之部门音讯的保安

有了第四节里面的拜访票据,我们就足以选用API来做过多业务了,包括公司结构的获取、创设、删除等等功效。

成立机关的合法接口定义如下所示。

  • 恳请表达

Https请求情势: POST

https://qyapi.weixin.qq.com/cgi-bin/department/create?access_token=ACCESS_TOKEN

恳请包结构体为:

{
   "name": "邮箱产品组",
   "parentid": "1"
}
  • 参数表达
参数 必须 说明
access_token 调用接口凭证
name 部门名称。长度限制为1~64个字符
parentid 父亲部门id。根部门id为1

 

  • 回去结果

{
   "errcode": 0,
   "errmsg": "created",
   "id": 2
}

基于上边的有的接近的接口定义表达,大家先来定义下协会部门单位数据的爱惜接口,然后在逐年落到实处和调用。

        #region 部门管理
        /// <summary>
        /// 创建部门。
        /// 管理员须拥有“操作通讯录”的接口权限,以及父部门的管理权限。
        /// </summary>
        CorpDeptCreateJson CreateDept(string accessToken, string name, string parentId);

        /// <summary>
        /// 更新部门。
        /// 管理员须拥有“操作通讯录”的接口权限,以及该部门的管理权限。
        /// </summary>
        CommonResult DeleteDept(string accessToken, int id);

        /// <summary>
        /// 删除部门.
        /// 管理员须拥有“操作通讯录”的接口权限,以及该部门的管理权限。
        /// </summary>
        CorpDeptListJson ListDept(string accessToken);

        /// <summary>
        /// 获取部门列表.
        /// 管理员须拥有’获取部门列表’的接口权限,以及对部门的查看权限。
        /// </summary>
        CommonResult UpdateDept(string accessToken, int id, string name); 
        #endregion

如创制单位的接口达成如下所示,主要就是打造URL和POST的数据包,然后统一调用并赢得再次来到数据,转换为具体的Json对象实体即可。其他接口的完毕形式接近,不在赘述。

        /// <summary>
        /// 创建部门。
        /// 管理员须拥有“操作通讯录”的接口权限,以及父部门的管理权限。
        /// </summary>
        public CorpDeptCreateJson CreateDept(string accessToken, string name, string parentId)
        {
            string urlFormat = "https://qyapi.weixin.qq.com/cgi-bin/department/create?access_token={0}";
            var data = new
            {
                name = name,
                parentId = parentId
            };
            var url = string.Format(urlFormat, accessToken);
            var postData = data.ToJson();

            CorpDeptCreateJson result = CorpJsonHelper<CorpDeptCreateJson>.ConvertJson(url, postData);
            return result;
        }

CorpDeptCreateJson
对象实体类的定义如下所示,大家根本是根据再次来到结果开展定义的。

    /// <summary>
    /// 创建部门的返回结果
    /// </summary>
    public class CorpDeptCreateJson : BaseJsonResult
    {
        /// <summary>
        /// 返回的错误消息
        /// </summary>
        public CorpReturnCode errcode { get; set; }

        /// <summary>
        /// 对返回码的文本描述内容
        /// </summary>
        public string errmsg { get; set; }

        /// <summary>
        /// 创建的部门id。
        /// </summary>
        public int id { get; set; }
    }

 

 3、部门管理的API调用

 下边小节介绍了何等封装部门管理的API,那么大家封装好了相应的接口和接口落成,如何在实质上条件之中进行调用处理的吧,为了有利于我创立一个小的Winform程序来测试对应API的职能,如下所示。

图片 5

下边大家来介绍一下调用的代码和功能展现。

        private void btnCreateDeleteDept_Click(object sender, EventArgs e)
        {
            ICorpAddressBookApi bll = new CorpAddressBookApi();
            string name = "测试部门";
            CorpDeptCreateJson json = bll.CreateDept(token, name, "2");
            if (json != null)
            {
                Console.WriteLine("创建了部门:{0}, ID:{1}", name, json.id);

                //更新部门信息
                name = "测试部门修改名称";
                CommonResult result = bll.UpdateDept(token, json.id, name);
                if(result != null)
                {
                    Console.WriteLine("修改部门名称:{0} {1}", (result.Success ? "成功" : "失败"), result.ErrorMessage);
                }

                //删除部门
                result = bll.DeleteDept(token, json.id);
                if (result != null)
                {
                    Console.WriteLine("删除部门名称:{0} {1}", (result.Success ? "成功" : "失败"), result.ErrorMessage);
                }
            }

        }

        /// <summary>
        /// 获取部门列表
        /// </summary>
        private void btnListDept_Click(object sender, EventArgs e)
        {
            ICorpAddressBookApi bll = new CorpAddressBookApi();
            CorpDeptListJson list = bll.ListDept(token);
            foreach (CorpDeptJson info in list.department)
            {
                string tips = string.Format("{0}:{1}", info.name, info.id);
                Console.WriteLine(tips);
            }
        }

图片 6

 

 

只要对这一个《C#支付微信门户及使用》种类感兴趣,可以关心自身的别样小说,体系随笔如下所示:

C#支付微信门户及采纳(25)-微信集团号的客户端管住成效

C#开发微信门户及利用(24)-微信小店货架音讯保管

C#付出微信门户及使用(23)-微信小店商品管理接口的包装和测试

C#支出微信门户及运用(22)-微信小店的开销和利用

C#支付微信门户及应用(21)-微信集团号的音信和事件的收取处理及解密 

C#开发微信门户及使用(20)-微信集团号的食谱管理

C#开发微信门户及运用(19)-微信公司号的音讯发送(文本、图片、文件、语音、视频、图文新闻等)

C#开发微信门户及运用(18)-微信企业号的通信录管理支付之成员管理

C#开发微信门户及应用(17)-微信公司号的通信录管理支付之部门管理

C#付出微信门户及选拔(16)-微信集团号的布局和拔取

C#支出微信门户及利用(15)-微信菜单伸张扫一扫、发图片、发地理地方作用

 C#支出微信门户及应用(14)-在微信菜单中动用重定向获取用户数量

C#支付微信门户及选取(13)-使用地理地点扩大相关应用

C#开发微信门户及利用(12)-使用语音处理

C#支出微信门户及使用(11)–微信菜单的有余表现格局介绍

C#支出微信门户及运用(10)–在管理连串中一头微信用户分组新闻

C#支付微信门户及应用(9)-微信门户菜单管理及提交到微信服务器

C#开发微信门户及使用(8)-微信门户应用管理连串机能介绍

C#开发微信门户及运用(7)-微信多客服功用及支付集成

C#付出微信门户及应用(6)–微信门户菜单的治本操作

C#支付微信门户及选择(5)–用户分组音讯保管

C#开发微信门户及利用(4)–关切用户列表及详细音信管理

C#付出微信门户及使用(3)–文本新闻和图文新闻的答问

C#支出微信门户及运用(2)–微信音讯的拍卖和回应

C#付出微信门户及利用(1)–开首应用微信接口

 

相关文章