日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python企业微信回调_回调模式

發(fā)布時間:2023/12/10 python 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python企业微信回调_回调模式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

回調(diào)模式

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

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

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

開啟應用的回調(diào)模式

當你開啟應用的回調(diào)模式時,企業(yè)號會要求你填寫應用的URL、Token、EncodingAESKey三個參數(shù)。

URL是企業(yè)應用接收企業(yè)號推送請求的訪問協(xié)議和地址,支持http或https協(xié)議。

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

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

驗證URL、Token以及加密的詳細處理請參考后續(xù)'接收消息時的加解密處理'的章節(jié)。

驗證URL有效性

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

參數(shù)

描述

是否必帶

msg_signature

微信加密簽名,msg_signature結合了企業(yè)填寫的token、請求中的timestamp、nonce參數(shù)、加密的消息體

timestamp

時間戳

nonce

隨機數(shù)

echostr

加密的隨機字符串,以msg_encrypt格式提供。需要解密并返回echostr明文,解密后有random、msg_len、msg、$CorpID四個字段,其中msg即為echostr明文

首次校驗時必帶

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

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

使用回調(diào)模式

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

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

當接收成功后,http頭部返回200表示接收ok,其他錯誤碼一律當做失敗并發(fā)起重試

關于重試的消息排重,有msgid的消息推薦使用msgid排重。事件類型消息推薦使用FromUserName + CreateTime排重。

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

請求說明:

回調(diào)數(shù)據(jù)格式:

1.msg_encrypt為經(jīng)過加密的密文(消息明文格式參見 接收普通消息,事件明文格式參見 接收事件)

2.AgentID為接收的應用id,可在應用的設置頁面獲取

3.ToUserName為企業(yè)號的CorpID

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

被動響應給微信的數(shù)據(jù)格式:

timestamp

1.msg_encrypt為經(jīng)過加密的密文(消息明文格式參見 被動響應消息),算法參見附錄

2.MsgSignature為簽名,算法參見附錄

3.TimeStamp為時間戳,Nonce為隨機數(shù),由企業(yè)自行生成

接收消息時的加解密處理

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

1、解密函數(shù)

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

參數(shù)說明

參數(shù)

必須

說明

sMsgSignature

從回調(diào)URL中獲取的msg_signature參數(shù)

sTimeStamp

從回調(diào)URL中獲取的timestamp參數(shù)

sNonce

從回調(diào)URL中獲取的nonce參數(shù)

sPostData

從回調(diào)URL中獲取的整個post數(shù)據(jù)

sMsg

用于返回解密后的msg,以xml組織

返回說明

請參閱附錄加解密部分。

2、加密函數(shù)

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

參數(shù)說明

參數(shù)

必須

說明

sReplyMsg

返回的消息體原文

sTimeStamp

時間戳,調(diào)用方生成

sNonce

隨機數(shù),調(diào)用方生成

sEncryptMsg

用于返回的密文,以xml組織

返回說明

請參閱附錄加解密部分。

3、驗證URL函數(shù)

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

參數(shù)說明

參數(shù)

必須

說明

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,用于回包。注意,必須原樣返回,不要做加引號或其它處理

返回說明

請參閱附錄加解密部分。

獲取微信服務器的ip段

請求說明

Https請求方式: GET

參數(shù)說明

參數(shù)

必須

說明

access_token

調(diào)用接口憑證

返回結果

{

"ip_list": ["101.226.103.*", "101.226.62.*"]

}

總結

以上是生活随笔為你收集整理的python企业微信回调_回调模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。