最近在做企业号第三方应用开发,不过由于微信的接口文档写的不详细,而且比较混乱,走了不少弯路,现在就主要开发流程总结一下,以便新手朋友做个参考,有什么问题或者不对的地方希望大家可以指出,谢谢。
本文主要介绍的是第三方应用创建和企业号授权安装第三方应用,授权成功之后的接口调用就按照微信的具体功能开发文档开发就可以了,这部分还是挺详细的。
下面介绍具体流程:
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.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=获取应用提供商凭证
- 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=获取企业号登录用户信息
- 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,取决于用户将哪些权限集授权给了应用提供商)。
具体获取接口,请
来源: http://www.cnblogs.com/jkqnb/p/6649759.html