最近在作企业号第三方应用开发,不过因为微信的接口文档写的不详细,并且比较混乱,走了很多弯路,如今就主要开发流程总结一下,以便新手朋友作个参考,有什么问题或者不对的地方但愿你们能够指出,谢谢。php
本文主要介绍的是第三方应用建立和企业号受权安装第三方应用,受权成功以后的接口调用就按照微信的具体功能开发文档开发就能够了,这部分仍是挺详细的。api
下面介绍具体流程:安全
1.建立套件和应用服务器
1.1建立套件微信
套件简单点理解就至关于应用的主体,也能够把他看成应用的分类,能够建立多个套件,每一个套件也能够建立多个应用,建立套件以下图:ide
点击添加应用套件,填写基本信息,比较特殊的是受权方式,受权方式有两种:网站
1)线上自助注册受权使用:指的是经过微信第三方应用平台点击跳转到应用服务商的受权形式;ui
2)服务商辅助受权使用:指的是经过应用服务商的网站跳转到微信接口的受权形式。加密
能够根据须要自行选择。url
以下图:
点击下一步,其余信息按照要求填写就能够,可是系统事件接受URL须要验证后才能保存,详细接口说明,请点击“回调模式”查看,简单验证代码以下:
1 string signature = CommonHelper.QueryString("msg_signature"); //微信加密签名 2 string timestamp = CommonHelper.QueryString("timestamp"); //时间戳 3 string nonce = CommonHelper.QueryString("nonce"); //随机数 4 string echostr = CommonHelper.QueryString("echostr"); //随机字符串 5 if (string.IsNullOrEmpty(signature) || string.IsNullOrEmpty(timestamp) || string.IsNullOrEmpty(nonce) || string.IsNullOrEmpty(echostr)) { return null; } 6 WXBizMsgCrypt wxMsgCrypt = new WXBizMsgCrypt(Token, EncodingAESKey, WeChatApiConfig.CorpID); //微信提供的加解密类 7 string sEchoStr = ""; 8 int code = wxMsgCrypt.VerifyURL(signature, timestamp, nonce, echostr, ref sEchoStr);
这里用到了微信提供的加解密类,请点击“加解密库下载与返回码”,将会跳转到微信接口具体页面
以下图:
配置开发信息须要注意以下问题:
(1) 首先点击“Token”和“EncodingAESKey”下面的“随机生成”按钮,对应生成密钥;
(2) 而后配置“系统事件接收URL”,填写写好的回调路径(如:http://www.你的域名.com/你的回调路径),具体回调代码编写请参考接口“回调接口”,须要用到步骤一所设置的参数
(3) 根据自身需求填写其余项目,而后点击“提交”按钮,会验证“系统事件接收URL”,须要用到步骤二的设置,不然没法保存
1.2 建立应用
进入套件里面添加建立应用,弹出以下页面:
点击开始建立应用按钮,填写基本信息,这里logo要按照标准,还有截图至少要上传3张,要清晰,大小不能超过5M,不然审核不会经过的,以下图:
点击下一步,填写开发信息,以下图:
CallbackURL 用来接受消息;
业务设置URL 设置须要验证,验证方式跟建立套件的系统事件接收URL是同样的,不然没法保存。设置成功以后,安装应用后的企业号能够经过这个连接直接快捷登陆到服务商后台。如下列出主要代码:
1 WeChatApiHelper apiHelper = new WeChatApiHelper(CommonApi.Token, CommonApi.EncodingAESKey, CommonApi.suiteId, CommonApi.suiteSecret); 2 string auth_code = CommonHelper.QueryString("auth_code"); //服务商须要在套件中的应用设置“业务设置URL” 回调,返回auth_code(oauth2.0受权企业号管理员登陆产生的code) 3 if (!string.IsNullOrEmpty(auth_code)) 4 { 5 WeChatUserHelper userHelper = new WeChatUserHelper(); 6 //获取应用提供商凭证 微信接口连接:http://qydev.weixin.qq.com/wiki/index.php?title=%E8%8E%B7%E5%8F%96%E5%BA%94%E7%94%A8%E6%8F%90%E4%BE%9B%E5%95%86%E5%87%AD%E8%AF%81 7 ProviderAccessToken pAccessToken = apiHelper.GetProviderToken(); 8 if (pAccessToken != null && !string.IsNullOrEmpty(pAccessToken.provider_access_token)) 9 { 10 //获取企业号登陆用户信息 微信接口连接:http://qydev.weixin.qq.com/wiki/index.php?title=%E8%8E%B7%E5%8F%96%E4%BC%81%E4%B8%9A%E5%8F%B7%E7%99%BB%E5%BD%95%E7%94%A8%E6%88%B7%E4%BF%A1%E6%81%AF 11 WeChatLoginInfoModel resultModel = userHelper.GetLoginInfo(pAccessToken.provider_access_token, auth_code); 12 Response.Write(resultModel); 13 } 14 } 15 if (Request.InputStream != null && Request.InputStream.Length > 0) 16 { 17 //验证经过接受消息 18 } 19 else 20 { 21 //第一次验证 22 string signature = CommonHelper.QueryString("msg_signature"); //微信加密签名 23 string timestamp = CommonHelper.QueryString("timestamp"); //时间戳 24 string nonce = CommonHelper.QueryString("nonce"); //随机数 25 string echostr = CommonHelper.QueryString("echostr"); //随机字符串 26 if (string.IsNullOrEmpty(signature) || string.IsNullOrEmpty(timestamp) || string.IsNullOrEmpty(nonce) || string.IsNullOrEmpty(echostr)) { return null; } 27 WXBizMsgCrypt wxMsgCrypt = new WXBizMsgCrypt(Token, EncodingAESKey, WeChatApiConfig.CorpID); //微信提供的加解密类 28 string sEchoStr = ""; 29 int code = wxMsgCrypt.VerifyURL(signature, timestamp, nonce, echostr, ref sEchoStr); 30 sEchoStr = apiHelper.CheckSignature(); 31 Response.Write(sEchoStr); 32 }
点击提交,到如今建立应用就完成了
2. 企业号管理员受权流程
2.1 从企业号的第三方官网发起
这种方式比较简单,按照微信接口说明作就能够了,不用特殊说明,点击跳转微信接口
2.2 从应用提供商网站发起受权
本文重点介绍这种方式,主要分红几个步骤:
1)企业进入应用提供商网站
指的是,企业系统管理员进入应用提供商网站,如www.ABC.com。
2)获取预受权码
预受权码是应用套件实现受权托管的安全凭证,经过suite_id,suite_secret和suite_ticket获取,相关接口为get_pre_auth_code。其中,suite_ticket由企业号服务器按期每10分钟推送到套件注册的callbackurl上 点击查看详情
3)应用提供商引导企业系统管理员进入应用套件受权页
应用提供商能够在本身的网站中放置“微信企业号应用受权”的入口,引导企业号管理员进入应用套件受权页。网址为:
https://qy.weixin.qq.com/cgi-bin/loginpage?suite_id=$suite_id$&pre_auth_code=$pre_auth_code$&redirect_uri=$redirect_uri$&state=$state$
该网址中应用提供商须要提供suite_id、预受权码、受权完成回调URI和state
4)企业号管理员确认并赞成受权托管给应用提供商
企业号管理员进入套件受权页后,设置受权内容,确认并赞成将本身的企业号应用或通信录受权托管给应用提供商,完成受权流程。
5)受权成功,返回临时受权码
受权流程完成后,会进入回调URI,并在URI参数中返回临时受权码、过时时间以及state参数(redirect_uri?auth_code=xxx&expires_in=1200&state=xx)
6)利用临时受权码获取永久受权码以及受权信息
在获得临时受权码后,应用提供商可使用临时受权码换取永久受权码以及受权信息,后续能够经过永久受权码调用企业号相关API(能调用哪些API,取决于用户将哪些权限集受权给了应用提供商)。
具体获取接口,请点击查看详情