微信企業號第三方應用開發[一]——創建套件

注:文中綠色部分為摘自微信官方文檔

?

第三方應用提供給企業的是一個應用,但是應用必須在套件下創建,所以第一步是要創建套件。

?

  

注冊成為應用提供商,必須輸入以下信息:

信息項要求及說明
企業Logo應用提供商的企業Logo,小于2M,640*640,背景為白色
企業簡稱使用對外宣傳的企業簡稱,能代表企業的名字,2-16個字
企業簡介描述企業所提供的服務,4-120個字
企業官網應用服務商的企業官網

注冊條件:a)擁有一個已經過認證的企業號 b)用系統管理員身份進行申請

摘自http://qydev.weixin.qq.com/wiki/index.php?title=%E5%BA%94%E7%94%A8%E6%8F%90%E4%BE%9B%E5%95%86%E6%B3%A8%E5%86%8C%E5%BA%94%E7%94%A8 

?

符合以上條件后,登錄微信第三方應用官網,選擇“服務商登錄”

?

?登陸后界面如下,選擇添加應用套件

?

創建應用套件

開發者完成注冊之后,即可創建應用套件。應用套件是第三方應用授權的主體,接口的開發都與應用套件息息相關,請開發者仔細閱讀下方內容。

?

基本信息:

信息項要求及說明
應用套件Logo應用套件的Logo,小于2M,640*640,在授權頁會被用于展示。
應用套件名稱應用套件的名稱,2-16個字
介紹網站介紹該應用套件網站或者頁面
應用套件介紹描述該應用套件所提供的服務,4-120個字
授權方式使用方式目前有兩種:線上自助注冊授權使用和服務商輔助授權使用。
服務行業該應用套件所服務的行業對象,一個套件只能屬于一個服務行業。
套件標簽套件提供的服務類型,如OA辦公、CRM、HR、ERP等。一個套件只能擁有一個標簽。

注意:

1)你應謹慎選擇所填寫的行業和標簽,行業是指可使用該套件企業所屬的行業。當應用套件達到一定的活躍度后(授權企業數和日活躍用戶數),會自動在企業號第三方官網進行推薦,套件所在的分類將基于所設置的行業和標簽。

2)授權方式的作用在于區分應用套件是否可以直接從企業號第三方官網發起授權,線上自助注冊授權使用是指該應用套件可以直接從企業號第三方官網發起授權,而不跳轉服務商網站,該類型的應用套件還可以支持移動端發起應用套件授權;服務商輔助授權使用是指該應用套件必須跳轉服務商網站,從服務商網站發起應用套件的授權,該類型的應用套件不支持移動端發起應用套件授權。

3)你可以創建或者選擇其他開發者已創建的標簽。你應該謹慎選擇套件標簽,用戶往往會在企業號中通過標簽查找相關聯的套件。

?

開發信息:

套件參數內容說明
發起授權域名在該域名下發起的授權請求才可被通過,企業點擊授權鏈接時,企業號會檢查該域名是否已登記。
授權完成回調域名在第三方應用授權流程中,授權成功后會回調該域名,返回臨時code。你需用此code換取永久授權碼,請盡量將此域名與發起授權域名保持一致。
系統事件接收URL系統將會把此套件的授權變更事件以及ticket參數推送給此URL,ticket說明詳見API接口說明。(填寫URL時需要正確響應微信驗證URL的請求,具體說明請閱讀“回調模式”)
Token可任意填寫,用于生成簽名,校驗回調請求的合法性。后續所有托管的企業產生的回調消息都使用該值來解密。
EncodingAESKey回調消息加解密參數,是AES密鑰的Base64編碼,用于解密回調消息內容對應的密文。后續所有托管的企業產生的回調消息都使用該值來解密。
應用套件ID應用套件的編號,相關的接口調用需要使用,由系統生成,不可更改。
應用套件secret應用套件的密鑰,相關的接口調用需要使用。
白名單IP列表應用套件調用企業號第三方應用API時的合法IP列表,只有白名單內的IP才能正常調用企業號API,后續IP若有修改,需要及時進行列表更新。

創建完成之后,系統會告知開發者該應用套件的Suiteid和Suitesecret。(詳見第三方應用接口說明)

摘自http://qydev.weixin.qq.com/wiki/index.php?title=%E5%BA%94%E7%94%A8%E6%8F%90%E4%BE%9B%E5%95%86%E6%B3%A8%E5%86%8C%E5%BA%94%E7%94%A8

?

進入創建套件頁面,填寫基本資料

?

點擊下一步,填寫開發資料

?

關于"系統事件接收URL"的填寫?

系統事件接收URL支持$CORPID$模板,調用時會將$CORPID$替換成企業號的corpid,所以"系統事件接收URL"可以寫成

http://AAA.com/api/weixin/callback.do?corpid=$CORPID$

?

驗證URL有效性

當你提交以上信息時,企業號將發送GET請求到填寫的URL上,GET請求攜帶四個參數,企業在獲取時需要做urldecode處理,否則會驗證不成功。

參數描述是否必帶
msg_signature微信加密簽名,msg_signature結合了企業填寫的token、請求中的timestamp、nonce參數、加密的消息體
timestamp時間戳
nonce隨機數
echostr加密的隨機字符串,以msg_encrypt格式提供。需要解密并返回echostr明文,解密后有random、msg_len、msg、$CorpID四個字段,其中msg即為echostr明文首次校驗時必帶

企業通過參數msg_signature對請求進行校驗,如果確認此次GET請求來自企業號,那么企業應該對echostr參數解密并原樣返回echostr明文(不能加引號,不能帶bom頭,不能帶換行符)則接入驗證生效,回調模式才能開啟。

摘自http://qydev.weixin.qq.com/wiki/index.php?title=%E5%9B%9E%E8%B0%83%E6%A8%A1%E5%BC%8F?

?

"系統事件接收URL"響應的代碼如下

/*** 微信回調響應* @author:leap* @MethodName: callback * @Description: * @param req* @param res* @date:2016年8月25日*/@RequestMapping(value="callback")@ResponseBodypublic void callback(HttpServletRequest req, ServletResponse res){/** url中$CORPID$模板替換后的corpid **/String corpid = req.getParameter("corpid");/** url中的簽名 **/String msgSignature = req.getParameter("msg_signature");/** url中的時間戳 **/String timestamp = req.getParameter("timestamp");/** url中的隨機字符串 **/String nonce = req.getParameter("nonce");/** 創建套件時驗證回調url有效性時傳入**/String echostr = req.getParameter("echostr");WxAuthorizeLogic wxAuthorizeLogic = new WxAuthorizeLogic();String result = "";try {if(!Utils.isBlank(echostr)){    /** 驗證回調url有效性* 響應需對echostr參數解密并原樣返回echostr明文(不能加引號,不能帶bom頭,不能帶換行符)*/String verifyURLResult = wxAuthorizeLogic.verifyURL(msgSignature, timestamp, nonce, echostr, corpid);res.getWriter().write(verifyURLResult);    }else {//其他操作
            }} catch (Exception e) {e.printStackTrace();}}

?

/*** 微信授權邏輯* @author:leap* @Description: * @date:2016年8月30日*/
public class WxAuthorizeLogic {
/*** 驗證回調URL有效性* @author:leap* @MethodName: verifyURL * @Description: * @param msgSignature url中的簽名* @param timestamp url中的時間戳* @param nonce url中的隨機字符串* @param echostr 回顯字符串* @param corpid 用于創建解密類* @return 返回解密后的明文字符串* @throws AesException* @date:2016年8月30日*/public String verifyURL(String msgSignature, String timestamp, String nonce, String echostr, String corpid) throws AesException{//注意創建解密對象時使用的是CORP_ID而不是SUITE_IDWXBizMsgCrypt wxBizMsgCrypt = new WXBizMsgCrypt(WXBase.SUITE_TOKEN, WXBase.SUITE_ENCODING_AES_KEY, corpid);String result = wxBizMsgCrypt.VerifyURL(msgSignature, timestamp, nonce, echostr);logger.info("VerifyURLResult=" + result);return result;}}

?其中類WXBizMsgCrypt由官方提供

?

java庫(2014年9月24日更新,點擊下載)

注意事項:

1.com\qq\weixin\mp\aes目錄下是用戶需要用到的接入企業微信的接口,其中WXBizMsgCrypt.java文件提供的WXBizMsgCrypt類封裝了用戶接入企業微信的三個接口,其它的類文件用戶用于實現加解密,用戶無須關心。sample.java文件提供了接口的使用示例。

2.WXBizMsgCrypt封裝了VerifyURL, DecryptMsg, EncryptMsg三個接口,分別用于開發者驗證回調url、接收消息的解密以及開發者回復消息的加密過程。使用方法可以參考Sample.java文件。

3.請開發者使用jdk1.6或以上的版本。針對org.apache.commons.codec.binary.Base64,需要導入jar包commons-codec-1.9(或commons-codec-1.8等其他版本),我們有提供,官方下載地址:

http://commons.apache.org/proper/commons-codec/download_codec.cgi

4.異常java.security.InvalidKeyException:illegal Key Size的解決方案:

在官方網站下載JCE無限制權限策略文件(請到官網下載對應的版本, 例如JDK7的下載地址:http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html?):

下載后解壓,可以看到local_policy.jar和US_export_policy.jar以及readme.txt。如果安裝了JRE,將兩個jar文件放到%JRE_HOME% \lib\security目錄下覆蓋原來的文件,如果安裝了JDK,將兩個jar文件放到%JDK_HOME%\jre\lib\security目錄下覆蓋原來文件。

摘自http://qydev.weixin.qq.com/wiki/index.php?title=%E5%8A%A0%E8%A7%A3%E5%AF%86%E5%BA%93%E4%B8%8B%E8%BD%BD%E4%B8%8E%E8%BF%94%E5%9B%9E%E7%A0%81

?***紅字部分是必要操作,不可忽略***

?


?

[目錄]

[上一篇]?微信企業號第三方應用開發[前言]

[下一篇]微信企業號第三方應用開發[二]——創建應用

?


消息:新博客地址?blog.leapmie.com,以后的更新都會在新博客首發,感謝支持~(園子視情況更新)


?

轉載于:https://www.cnblogs.com/leap/p/5748950.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/395385.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/395385.shtml
英文地址,請注明出處:http://en.pswp.cn/news/395385.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

advanced east_SpriteKit Advanced —如何構建2,5D游戲(第二部分)

advanced eastby Luke Konior盧克科尼爾(Luke Konior) SpriteKit Advanced —如何構建2,5D游戲(第二部分) (SpriteKit Advanced — How to build a 2,5D game (Part II)) 介紹 (Intro) This article shows how to write basic shaders in the SpriteKit. It’s split into two…

html原生上傳,一個基于HTML5及原生JS的文件上傳組件--JohnUploader

運行效果圖一、組件介紹基本特點基于HTML5的FileReader和FormData可以完成多文件選擇,并預覽完成文件的異步上傳原生XHR對象,適配多瀏覽器代碼class JohnUploader{url;fileField;vollay;/**** param url 文件上傳的地址* param fileField 一個"文件…

[20170617]vim中調用sqlplus.txt

[20170617]vim中調用sqlplus.txt --//以前寫過一篇emacs下調用sqlplus的文章,一直想學emacs,受限制自己掌握vim,對學習它沒有興趣,原鏈接如下: --//http://blog.itpub.net/267265/viewspace-1309032/ --//實際上vim也有插件連接數據庫,我覺得不好用,一直沒這樣用. --//今天在整…

centos redis驗證_centos7中安裝、配置、驗證、卸載redis

本文介紹在centos7中安裝、配置、驗證、卸載redis等操作,以及在使用redis中的一些注意事項。一 安裝redis1 創建redis的安裝目錄利用以下命令,切換到/usr/local路徑cd /usr/local鍵入以下命令,新建一個redis目錄,用于放置redis軟件…

實習生解雇_我們解雇了我們的頂尖人才。 我們做出的最佳決定。

實習生解雇by Jonathan Solrzano-Hamilton喬納森索洛薩諾漢密爾頓(JonathanSolrzano-Hamilton) 我們解雇了我們的頂尖人才。 我們做出的最佳決定。 (We fired our top talent. Best decision we ever made.) “You will never be able to understand any of what I’ve create…

微信企業號第三方應用開發[二]——創建應用

在應用套件里添加應用 當你創建完應用套件后,需要在套件配置應用,應用的信息填寫如下。 基本信息: 信息項要求及說明應用Logo應用的Logo,小于2M,640*640,在授權頁會被用于展示。應用名稱應用的名稱&#xf…

es6新增的html標簽,javascript – 如何導入已在html中的標簽中定義的es6模塊?

我可以在我的html文件me.html中定義一個模塊:import Atom from ./atom.js;console.log("definition of getAtom")export default function getAtom(){return new Atom(atom);}console.log("exported getAtom")另見>是否可以將該“匿名”模塊…

jQ效果:簡單的手風琴效果

實現效果如圖所示&#xff1a; html結構&#xff1a; <div class"item_box box10"><div class"item_box_wp"><div class"voice_2"><ul><li class"li1" id"li1"><div class"fold"…

golang 日志分析_容器日志采集利器:Filebeat深度剖析與實踐

在云原生時代和容器化浪潮中&#xff0c;容器的日志采集是一個看起來不起眼卻又無法忽視的重要議題。對于容器日志采集我們常用的工具有filebeat和fluentd&#xff0c;兩者對比各有優劣&#xff0c;相比基于ruby的fluentd&#xff0c;考慮到可定制性&#xff0c;我們一般默認選…

機器學習做自動聊天機器人_建立聊天機器人需要什么? 讓我們找出答案。

機器學習做自動聊天機器人by Vanco Stojkov通過Vanco Stojkov 建立聊天機器人需要什么&#xff1f; 讓我們找出答案。 (What does it take to build a chatbot? Let’s find out.) Without any delay, the image below shows what we are building:沒有任何延遲&#xff0c;下…

UVA 11582 Colossal Fibonacci Numbers!【數學】

大一剛開始接觸ACM就買了《算法競賽入門經典》這本書&#xff0c;當時只能看懂前幾章&#xff0c;而且題目也沒做&#xff0c;粗鄙地以為這本書不適合自己。等到現在快大三了再回過頭來看&#xff0c;發現劉老師還是很棒的&#xff01; 扯遠了。。。 題意&#xff1a;問f[a^b]%…

Codeforces 919D Substring (拓撲圖DP)

手動博客搬家: 本文發表于20180716 10:53:12, 原地址https://blog.csdn.net/suncongbo/article/details/81061500 給定一個\(n\)個點\(m\)條邊的有向圖&#xff08;不一定無環&#xff09;&#xff0c;每個點上有一個小寫字母。要找一條路徑&#xff0c;使得路徑上出現次數最多…

layui自定義查詢條件html頁面,Layui的數據表格+springmvc實現搜索功能的例子_飛雲_前端開發者...

如下所示&#xff1a;主要在前端頁面加&#xff1a;搜索ID&#xff1a;useridcontent搜索在reload:function () {var keyWord$("#keyWord").val();var keyType$("#key_type option:selected").val();table.reload(contenttable,{method:post,where:{keyWor…

mysql+keepalived 雙主熱備高可用

理論介紹&#xff1a;我們通常說的雙機熱備是指兩臺機器都在運行&#xff0c;但并不是兩臺機器都同時在提供服務。當提供服務的一臺出現故障的時候&#xff0c;另外一臺會馬上自動接管并且提供服務&#xff0c;而且切換的時間非常短。MySQL雙主復制&#xff0c;即互為Master-Sl…

java ldap userpassword 解密_Spring Boot中使用LDAP來統一管理用戶信息

LDAP簡介LDAP(輕量級目錄訪問協議&#xff0c;Lightweight Directory Access Protocol)是實現提供被稱為目錄服務的信息服務。目錄服務是一種特殊的數據庫系統&#xff0c;其專門針對讀取&#xff0c;瀏覽和搜索操作進行了特定的優化。目錄一般用來包含描述性的&#xff0c;基于…

第三章之枚舉、注解

2019-01-22內容&#xff1a;枚舉、注解一、自定義一個枚舉類1 public class TestSeason {2 3 public static void main(String[] args) {4 Season spring Season.Spring;5 System.out.println(spring);6 }7 }8 public class Season {9 //將屬性定…

html打開后默認瀏覽器頁面,使用VBA打開默認瀏覽器中的html頁面?

您可以使用Windows API函數ShellExecute來執行此操作&#xff1a;Option ExplicitPrivate Declare Function ShellExecute _Lib "shell32.dll" Alias "ShellExecuteA" ( _ByVal hWnd As Long, _ByVal Operation As String, _ByVal Filename As String, _Op…

數據科學r語言_您應該為數據科學學習哪些語言?

數據科學r語言Data science is an exciting field to work in, combining advanced statistical and quantitative skills with real-world programming ability. There are many potential programming languages that the aspiring data scientist might consider specializi…

Linux平臺不同解壓縮命令的使用方法

作者&#xff1a;郭孝星 微博&#xff1a;郭孝星的新浪微博 郵箱&#xff1a;allenwells163.com 博客&#xff1a;http://blog.csdn.net/allenwells github&#xff1a;https://github.com/AllenWell 一 .tar 解包 tar xvf FileName.tar 打包 tar cvf FileName.tar DirName 注意…

unity中怎么做河流_【干貨】工作中怎么做工業設計的?(一)

最近在找工作&#xff0c;一直在看招聘信息。看到工業設計工資還是蠻高的。應屆畢業生一般是4-6K&#xff0c;1-3年工作經驗是6-8K&#xff0c;3年以后的差不多是8K以上了。我沒有嫉妒羨慕恨&#xff0c;發誓&#xff0c;真的沒有。工業設計已經被重視&#xff0c;未來的道路會…