最近在做企業號第三方應用開發,不過由於微信的接口文檔寫的不詳細,而且比較混亂,走了不少彎路,現在就主要開發流程總結一下,以便新手朋友做個參考,有什么問題或者不對的地方希望大家可以指出,謝謝。
本文主要介紹的是第三方應用創建和企業號授權安裝第三方應用,授權成功之后的接口調用就按照微信的具體功能開發文檔開發就可以了,這部分還是挺詳細的。
下面介紹具體流程:
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)應用提供商引導企業系統管理員進入應用套件授權頁
應用提供商可以在自己的網站中放置“微信企業號應用授權”的入口,引導企業號管理員進入應用套件授權頁。網址為:
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,取決於用戶將哪些權限集授權給了應用提供商)。
具體獲取接口,請點擊查看詳情