最近在做企业号第三方应用开发,不过由于微信的接口文档写的不详细,而且比较混乱,走了不少弯路,现在就主要开发流程总结一下,以便新手朋友做个参考,有什么问题或者不对的地方希望大家可以指出,谢谢。
本文主要介绍的是第三方应用创建和企业号授权安装第三方应用,授权成功之后的接口调用就按照微信的具体功能开发文档开发就可以了,这部分还是挺详细的。
下面介绍具体流程:
1.创建套件和应用
1.1创建套件
套件简单点理解就相当于应用的主体,也可以把他当作应用的分类,可以创建多个套件,每个套件也可以创建多个应用,创建套件如下图:
点击添加应用套件,填写基本信息,比较特殊的是授权方式,授权方式有两种:
1)线上自助注册授权使用:指的是通过微信第三方应用平台点击跳转到应用服务商的授权形式;
2)服务商辅助授权使用:指的是通过应用服务商的网站跳转到微信接口的授权形式。
可以根据需要自行选择。
如下图:
点击下一步,其他信息按照要求填写就可以,但是系统事件接受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)应用提供商引导企业系统管理员进入应用套件授权页
应用提供商可以在自己的网站中放置“微信企业号应用授权”的入口,引导企业号管理员进入应用套件授权页。网址为:
该网址中应用提供商需要提供suite_id、预授权码、授权完成回调URI和state
4)企业号管理员确认并同意授权托管给应用提供商
企业号管理员进入套件授权页后,设置授权内容,确认并同意将自己的企业号应用或通讯录授权托管给应用提供商,完成授权流程。
5)授权成功,返回临时授权码
授权流程完成后,会进入回调URI,并在URI参数中返回临时授权码、过期时间以及state参数(redirect_uri?auth_code=xxx&expires_in=1200&state=xx)
6)利用临时授权码获取永久授权码以及授权信息
在得到临时授权码后,应用提供商可以使用临时授权码换取永久授权码以及授权信息,后续可以通过永久授权码调用企业号相关API(能调用哪些API,取决于用户将哪些权限集授权给了应用提供商)。
具体获取接口,请点击查看详情