LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

微信企業(yè)號(hào)開(kāi)發(fā)之如何建立連接(1)

admin
2014年12月2日 0:42 本文熱度 6254




文章簡(jiǎn)介:通過(guò)主動(dòng)調(diào)用模式、回調(diào)模式和JSAPI模式三種連接方式的結(jié)合,你可以在企業(yè)號(hào)中建立功能強(qiáng)大的移動(dòng)輕應(yīng)用,并依托微信數(shù)億活躍用戶,幫助企業(yè)方便、快捷地實(shí)現(xiàn)應(yīng)用的部署,并確保應(yīng)用的活躍度。

連接將使你的企業(yè)號(hào)更具價(jià)值,你可以使用以下三種方式,連接你的企業(yè)號(hào)及企業(yè)應(yīng)用:


1、企業(yè)應(yīng)用調(diào)用企業(yè)號(hào)提供的接口,管理或查詢(xún)企業(yè)號(hào)后臺(tái)所管理的資源、或給成員發(fā)送消息等,以下稱(chēng)主動(dòng)調(diào)用模式


2、企業(yè)號(hào)把用戶發(fā)送的消息或用戶觸發(fā)的事件推送給企業(yè)應(yīng)用,由企業(yè)應(yīng)用處理,以下稱(chēng)回調(diào)模式


3、用戶在微信中閱讀企業(yè)應(yīng)用下發(fā)的H5頁(yè)面,該頁(yè)面可以調(diào)用微信提供的原生接口,使用微信開(kāi)放的終端能力,以下稱(chēng)JSAPI模式


通過(guò)這三種連接方式的結(jié)合,你可以在企業(yè)號(hào)中建立功能強(qiáng)大的移動(dòng)輕應(yīng)用,并依托微信數(shù)億活躍用戶,幫助企業(yè)方便、快捷地實(shí)現(xiàn)應(yīng)用的部署,并確保應(yīng)用的活躍度。


一、主動(dòng)調(diào)用


1、簡(jiǎn)述


主動(dòng)調(diào)用是最基本的連接模式,當(dāng)你的應(yīng)用調(diào)用企業(yè)號(hào)時(shí),需使用https協(xié)議、Json數(shù)據(jù)格式、UTF8編碼,訪問(wèn)域名為https://qyapi.weixin.qq.com,數(shù)據(jù)包不需要加密


在每次主動(dòng)調(diào)用企業(yè)號(hào)接口時(shí)需要帶上AccessToken參數(shù)。AccessToken參數(shù)由CorpIDSecret換取。


CorpID是企業(yè)號(hào)的標(biāo)識(shí),每個(gè)企業(yè)號(hào)擁有一個(gè)唯一的CorpID;Secret是管理組憑證密鑰。


系統(tǒng)管理員可通過(guò)管理端的權(quán)限管理功能創(chuàng)建管理組,分配管理組對(duì)應(yīng)用、通訊錄、接口的訪問(wèn)權(quán)限。完成后,管理組即可獲得唯一的secret。系統(tǒng)管理員可通過(guò)權(quán)限管理查看所有管理組的secret,其他管理員可通過(guò)設(shè)置中的開(kāi)發(fā)者憑據(jù)查看。


當(dāng)企業(yè)應(yīng)用調(diào)用企業(yè)號(hào)接口時(shí),企業(yè)號(hào)后臺(tái)為根據(jù)此次訪問(wèn)的AccessToken,校驗(yàn)訪問(wèn)的合法性以及所對(duì)應(yīng)的管理組的管理權(quán)限以返回相應(yīng)的結(jié)果。


注:你應(yīng)該審慎配置管理組的權(quán)限,夠用即好,權(quán)限過(guò)大會(huì)增加誤操作可能性及信息安全隱患。


2、獲取AccessToken


AccessToken是企業(yè)號(hào)的全局唯一票據(jù),調(diào)用接口時(shí)需攜帶AccessToken。


AccessToken需要用CorpIDSecret來(lái)?yè)Q取,不同的Secret會(huì)返回不同的AccessToken。正 常情況下AccessToken有效期為7200秒,有效期內(nèi)重復(fù)獲取返回相同結(jié)果,并自動(dòng)續(xù)期。由于獲取access_token的api調(diào)用次數(shù)非常 有限,建議企業(yè)全局存儲(chǔ)與更新access_token,頻繁刷新access_token會(huì)導(dǎo)致api調(diào)用受限,影響自身業(yè)務(wù)



  • 請(qǐng)求說(shuō)明

Https請(qǐng)求方式: GET


https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=id&corpsecret=secrect



  • 參數(shù)說(shuō)明














參數(shù) 必須 說(shuō)明
corpid 企業(yè)Id
corpsecret 管理組的憑證密鑰


  • 權(quán)限說(shuō)明

每個(gè)secret代表了對(duì)應(yīng)用、通訊錄、接口的不同權(quán)限;不同的管理組擁有不同的secret。



  • 返回說(shuō)明

a)正確的Json返回結(jié)果:

  1.    "access_token""accesstoken000001"








參數(shù) 說(shuō)明
access_token 獲取到的憑證

b)錯(cuò)誤的Json返回示例:

  1.    "errcode": 43003, 
  2.    "errmsg""require https" 

3、主動(dòng)調(diào)用的頻率限制


當(dāng)你獲取到AccessToken時(shí),你的應(yīng)用就可以成功調(diào)用企業(yè)號(hào)后臺(tái)所提供的各種接口以管理或訪問(wèn)企業(yè)號(hào)后臺(tái)的資源或給企業(yè)號(hào)成員發(fā)消息。


為了防止企業(yè)應(yīng)用的程序錯(cuò)誤而引發(fā)企業(yè)號(hào)服務(wù)器負(fù)載異常,默認(rèn)情況下,每個(gè)企業(yè)號(hào)調(diào)用接口都有一定的頻率限制,當(dāng)超過(guò)此限制時(shí),調(diào)用對(duì)應(yīng)接口會(huì)收到相應(yīng)錯(cuò)誤碼。


以下是當(dāng)前默認(rèn)的頻率限制,企業(yè)號(hào)后臺(tái)可能會(huì)根據(jù)運(yùn)營(yíng)情況調(diào)整此閾值:



  • 基礎(chǔ)頻率

每企業(yè)調(diào)用單個(gè)cgi/api不可超過(guò)1000次/分,30000次/小時(shí)


每ip調(diào)用單個(gè)cgi/api不可超過(guò)2000次/分,60000次/小時(shí)


每ip獲取AccessToken不可超過(guò)300次/小時(shí)



  • 發(fā)消息頻率

每企業(yè)不可超過(guò)200次/分鐘;不可超過(guò)帳號(hào)上限數(shù)*30人次/天



  • 創(chuàng)建帳號(hào)頻率

每企業(yè)創(chuàng)建帳號(hào)數(shù)不可超過(guò)帳號(hào)上限數(shù)*3/月



二、回調(diào)模式


在回調(diào)模式下,企業(yè)不僅可以主動(dòng)調(diào)用企業(yè)號(hào)接口,還可以接收用戶的消息或事件。接收的信息使用XML數(shù)據(jù)格式、UTF8編碼,并以AES方式加密


企業(yè)號(hào)的每個(gè)應(yīng)用都有自己的回調(diào)模式開(kāi)關(guān)。在管理端開(kāi)啟并設(shè)置好相關(guān)參數(shù)后,此應(yīng)用的回調(diào)模式才生效。


針對(duì)加解密的處理,微信提供了各種語(yǔ)言的庫(kù),企業(yè)可以在附錄中下載。


1、開(kāi)啟應(yīng)用的回調(diào)模式


當(dāng)你開(kāi)啟應(yīng)用的回調(diào)模式時(shí),企業(yè)號(hào)會(huì)要求你填寫(xiě)應(yīng)用的URL、Token、EncodingAESKey三個(gè)參數(shù)。


URL是企業(yè)應(yīng)用接收企業(yè)號(hào)推送請(qǐng)求的訪問(wèn)協(xié)議和地址,支持http或https協(xié)議。


Token可由企業(yè)任意填寫(xiě),用于生成簽名。


EncodingAESKey用于消息體的加密,是AES密鑰的Base64編碼。


驗(yàn)證URL、Token以及加密的詳細(xì)處理請(qǐng)參考后續(xù)'接收消息時(shí)的加解密處理'的部分。



驗(yàn)證URL有效性


當(dāng)你提交以上信息時(shí),企業(yè)號(hào)將發(fā)送GET請(qǐng)求到填寫(xiě)的URL上,GET請(qǐng)求攜帶四個(gè)參數(shù),企業(yè)在獲取時(shí)需要做urldecode處理,否則會(huì)驗(yàn)證不成功。























參數(shù) 描述 是否必帶
msg_signature 微信加密簽名,msg_signature結(jié)合了企業(yè)填寫(xiě)的token、請(qǐng)求中的timestamp、nonce參數(shù)、加密的消息體
timestamp 時(shí)間戳
nonce 隨機(jī)數(shù)
echostr 加密的隨機(jī)字符串,以msg_encrypt格式提供。需要解密并返回echostr明文,解密后有random、msg_len、msg、$CorpID四個(gè)字段,其中msg即為echostr明文 首次校驗(yàn)時(shí)必帶

企業(yè)通過(guò)參數(shù)msg_signature對(duì)請(qǐng)求進(jìn)行校驗(yàn),如果確認(rèn)此次GET請(qǐng)求來(lái)自企業(yè)號(hào),那么企業(yè)應(yīng)用對(duì)echostr參數(shù)解密并原樣返回echostr明文(不能加引號(hào)),則接入驗(yàn)證生效,回調(diào)模式才能開(kāi)啟。


后續(xù)回調(diào)企業(yè)時(shí)都會(huì)在請(qǐng)求URL中帶上以上參數(shù)(echostr除外),校驗(yàn)方式與首次驗(yàn)證URL一致。


2、使用回調(diào)模式


企業(yè)號(hào)在回調(diào)企業(yè)URL時(shí),會(huì)對(duì)消息體本身做AES加密,以XML格式POST到企業(yè)應(yīng)用的URL上;企業(yè)在被動(dòng)回復(fù)時(shí),也需要對(duì)數(shù)據(jù)加密,以XML格式返回給微信。企業(yè)的回復(fù)支持文本、圖片、語(yǔ)音、視頻、圖文等格式


微信服務(wù)器在五秒內(nèi)收不到響應(yīng)會(huì)斷掉連接,并且重新發(fā)起請(qǐng)求,總共重試三次。如果在調(diào)試中,發(fā)現(xiàn)員工無(wú)法收到響應(yīng)的消息,可以檢查是否消息處理超時(shí)。


關(guān)于重試的消息排重,有msgid的消息推薦使用msgid排重。事件類(lèi)型消息推薦使用FromUserName + CreateTime排重。


假如企業(yè)無(wú)法保證在五秒內(nèi)處理并回復(fù),可以直接回復(fù)空串,企業(yè)號(hào)不會(huì)對(duì)此作任何處理,并且不會(huì)發(fā)起重試。這種情況下,可以使用發(fā)消息接口進(jìn)行異步回復(fù)。


假設(shè)企業(yè)回調(diào)URL為http://api.3dept.com



  • 請(qǐng)求說(shuō)明:

http://api.3dept.com/?msg_signature=ASDFQWEXZCVAQFASDFASDFSS&timestamp=13500001234&nonce=123412323



  • 回調(diào)數(shù)據(jù)格式:
    1. <xml>  
    2.    <ToUserName><![CDATA[toUser]]</ToUserName> 
    3.    <AgentID><![CDATA[toAgentID]]</AgentID> 
    4.    <Encrypt><![CDATA[msg_encrypt]]</Encrypt> 
    5. </xml> 
1.msg_encrypt為經(jīng)過(guò)加密的密文
2.AgentID為接收的應(yīng)用id,可在應(yīng)用的設(shè)置頁(yè)面獲取
3.ToUserName為企業(yè)號(hào)的CorpID

企業(yè)需要對(duì)msg_signature進(jìn)行校驗(yàn),并解密msg_encrypt,得出msg的原文。



  • 回復(fù)給微信的數(shù)據(jù)格式:
    1. <xml> 
    2.    <Encrypt><![CDATA[msg_encrypt]]></Encrypt> 
    3.    <MsgSignature><![CDATA[msg_signature]]></MsgSignature> 
    4.    <TimeStamp>timestamp</TimeStamp> 
    5.    <Nonce><![CDATA[nonce]]></Nonce> 
    6. </xml> 

3、接收消息時(shí)的加解密處理


企業(yè)可以直接使用微信提供的庫(kù)進(jìn)行加解密的處理,目前提供的有c++/python/php/java/c#等語(yǔ)言版本。代碼提供了解密、加密、驗(yàn) 證URL三個(gè)接口,企業(yè)可根據(jù)自身需要下載(參見(jiàn)附錄)。以下為庫(kù)函數(shù)的使用說(shuō)明(以c++為例),更詳細(xì)的加解密方案請(qǐng)參考附錄。


1)解密函數(shù)

  1. int DecryptMsg(const string &sMsgSignature, const string &sTimeStamp, const string &sNonce, const string &sPostData, string &sMsg); 


  • 參數(shù)說(shuō)明


























參數(shù) 必須 說(shuō)明
sMsgSignature 從回調(diào)URL中獲取的msg_signature參數(shù)
sTimeStamp 從回調(diào)URL中獲取的timestamp參數(shù)
sNonce 從回調(diào)URL中獲取的nonce參數(shù)
sPostData 從回調(diào)URL中獲取的整個(gè)post數(shù)據(jù)
sMsg 用于返回解密后的msg,以xml組織


  • 返回說(shuō)明

請(qǐng)參閱附錄加密部分。


2)加密函數(shù)

  1. int EncryptMsg(const string &sReplyMsg, const string &sTimeStamp, const string &sNonce, string &sEncryptMsg); 


  • 參數(shù)說(shuō)明






















參數(shù) 必須 說(shuō)明
sReplyMsg 返回的消息體原文
sTimeStamp 時(shí)間戳,調(diào)用方生成
sNonce 隨機(jī)數(shù),調(diào)用方生成
sEncryptMsg 用于返回的密文,以xml組織


  • 返回說(shuō)明

請(qǐng)參閱附錄加密部分。


3)驗(yàn)證URL函數(shù)

  1. int VerifyURL(const string &sMsgSignature, const string &sTimeStamp, const string &sNonce, const string &sEchoStr, string &sReplyEchoStr); 


  • 參數(shù)說(shuō)明


























參數(shù) 必須 說(shuō)明
sMsgSignature 從回調(diào)URL中獲取的msg_signature參數(shù)
sTimeStamp 從回調(diào)URL中獲取的timestamp參數(shù)
sNonce 從回調(diào)URL中獲取的nonce參數(shù)
sEchoStr 從回調(diào)URL中獲取的echostr參數(shù)。注意,此參數(shù)必須是urldecode后的值
sReplyEchoStr 解密后的echostr,用于回包。注意,必須原樣返回,不要做加引號(hào)或其它處理


  • 返回說(shuō)明

請(qǐng)參閱附錄加密部分。



三、Weixin JS接口


Weixin JS接口是微信為你的H5應(yīng)用提供開(kāi)放原生能力的接口,你的應(yīng)用可以利用這些接口使用更多的微信原生能力和微信的操控能力, 以使得你的應(yīng)用有更強(qiáng)大的智能,更好的用戶體驗(yàn)。


除了以下章節(jié)所描述的各類(lèi)接口。拍照、上傳圖片、掃碼、微信支付、地理位置上報(bào)等更多的接口已經(jīng)或正在抓緊開(kāi)放中,更多信息也請(qǐng)參考微信相關(guān)網(wǎng)站了解.


1、隱藏微信中網(wǎng)頁(yè)右上角按鈕


企業(yè)號(hào)在有需要時(shí)(如不需要用戶分享某個(gè)頁(yè)面),可在網(wǎng)頁(yè)中通過(guò)JavaScript代碼隱藏網(wǎng)頁(yè)右上角按鈕。




  • 接口調(diào)用代碼(JavaScript)
  1. function onBridgeReady(){ 
  2.  WeixinJSBridge.call('hideOptionMenu'); 
  3.  
  4. if (typeof WeixinJSBridge == "undefined"){ 
  5.     if( document.addEventListener ){ 
  6.         document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false); 
  7.     }else if (document.attachEvent){ 
  8.         document.attachEvent('WeixinJSBridgeReady', onBridgeReady);  
  9.         document.attachEvent('onWeixinJSBridgeReady', onBridgeReady); 
  10.     } 
  11. }else
  12.     onBridgeReady(); 


  • 返回說(shuō)明

隱藏底部導(dǎo)航欄沒(méi)有返回值。(需要顯示請(qǐng)把hideOptionMenu換成showOptionMenu)


2、隱藏微信中網(wǎng)頁(yè)底部導(dǎo)航欄


企業(yè)號(hào)在有需要時(shí)(如認(rèn)為用戶在該頁(yè)面不會(huì)用到瀏覽器前進(jìn)后退功能),可在網(wǎng)頁(yè)中通過(guò)JavaScript代碼隱藏網(wǎng)頁(yè)底部導(dǎo)航欄。




  • 接口調(diào)用代碼(JavaScript)
  1. function onBridgeReady(){ 
  2.    WeixinJSBridge.call('hideToolbar'); 
  3.  
  4. if (typeof WeixinJSBridge == "undefined"){ 
  5.     if( document.addEventListener ){ 
  6.         document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false); 
  7.     }else if (document.attachEvent){ 
  8.         document.attachEvent('WeixinJSBridgeReady', onBridgeReady);  
  9.         document.attachEvent('onWeixinJSBridgeReady', onBridgeReady); 
  10.     } 
  11. }else
  12.     onBridgeReady(); 


  • 返回說(shuō)明

隱藏底部導(dǎo)航欄沒(méi)有返回值。(需要顯示頂部導(dǎo)航欄,請(qǐng)把hideToolbar換成showToolbar)


3、網(wǎng)頁(yè)獲取用戶網(wǎng)絡(luò)狀態(tài)


為了方便開(kāi)發(fā)者根據(jù)用戶的網(wǎng)絡(luò)狀態(tài)來(lái)提供不同質(zhì)量的服務(wù),企業(yè)號(hào)可以在企業(yè)號(hào)內(nèi)部的網(wǎng)頁(yè)中使用JavaScript代碼調(diào)用來(lái)獲取網(wǎng)絡(luò)狀態(tài)。



  • 接口調(diào)用代碼(JavaScript)
  1. function onBridgeReady(){ 
  2.  WeixinJSBridge.invoke('getNetworkType',{}, 
  3.         function(e){ 
  4.             WeixinJSBridge.log(e.err_msg); 
  5.         }); 
  6.  
  7. if (typeof WeixinJSBridge == "undefined"){ 
  8.     if( document.addEventListener ){ 
  9.         document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false); 
  10.     }else if (document.attachEvent){ 
  11.         document.attachEvent('WeixinJSBridgeReady', onBridgeReady);  
  12.         document.attachEvent('onWeixinJSBridgeReady', onBridgeReady); 
  13.     } 
  14. }else
  15.     onBridgeReady(); 


  • 返回說(shuō)明

獲取用戶網(wǎng)絡(luò)狀態(tài)的返回值如下:

  1. network_type:wifi wifi網(wǎng)絡(luò) 
  2. network_type:edge 非wifi,包含3G/2G 
  3. network_type:fail 網(wǎng)絡(luò)斷開(kāi)連接 
  4. network_type:wwan(2g或者3g) 

4、關(guān)閉當(dāng)前網(wǎng)頁(yè)窗口


在微信內(nèi)置瀏覽器中被訪問(wèn)的網(wǎng)頁(yè),可使用該JavaScript代碼關(guān)閉當(dāng)前網(wǎng)頁(yè)。


主要使用場(chǎng)景: 微信用戶在企業(yè)號(hào)會(huì)話中點(diǎn)擊外鏈到達(dá)企業(yè)號(hào)的網(wǎng)頁(yè),在用戶完成操作后,企業(yè)號(hào)(網(wǎng)頁(yè)方)可調(diào)用此接口關(guān)閉當(dāng)前網(wǎng)頁(yè)窗口,使用戶返回會(huì)話。



  • 接口調(diào)用代碼(JavaScript)
  1. WeixinJSBridge.invoke('closeWindow',{},function(res){ 
  2.  
  3.     //alert(res.err_msg); 
  4.  
  5. }); 


  • 返回說(shuō)明









返回值 說(shuō)明
err_msg 關(guān)閉成功返回“close_window:ok”,關(guān)閉失敗返回“close_window:error”。


該文章在 2014/12/2 0:42:57 編輯過(guò)
關(guān)鍵字查詢(xún)
相關(guān)文章
正在查詢(xún)...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專(zhuān)業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車(chē)隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類(lèi)企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷(xiāo)售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
天天天澡天天天碰青青视频 | 亚洲激情视频欧美专区 | 中文字幕v亚洲日本在线电影 | 香蕉对碰碰97级久久久 | 亚洲三级视频专区 | 午夜在线亚洲免费 |