Python实现企业微信应用API接收发送消息实例

  本文介绍如何使用Python实现企业微信应用API接收发送消息,包含API接口认证代码。

  运行环境:windows2012+Pythod3.9.2+Flask(pip install flask)

  效果如下

Python实现企业微信应用API接收发送消息实例

 

  首先去企业微信注册一个账号:https://work.weixin.qq.com/,注册好登录系统,建立应用。

Python实现企业微信应用API接收发送消息实例

 

建立好后点击应用进入,在功能区,接收消息,设置API接收

Python实现企业微信应用API接收发送消息实例

进入API接口设置和验证页面

Python实现企业微信应用API接收发送消息实例

填写好URL地址,保存即可。

 

下面为Python实现企业微信应用API接收发送消息实例的源代码。

from flask import Flask, request, redirect
from WXBizMsgCrypt import WXBizMsgCrypt
import xml.etree.cElementTree as ET
 
app = Flask(__name__)
 
@app.route('/', methods=['POST','GET'])
def index():
   sToken = "这里修改为企业微信应用API验证时的token值,如上图"#验证接口时的token值
   sEncodingAESKey = "这里修改为企业微信应用API验证时的EncodingAESKey,如上图"#验证接口时的ase加密key值
   sCorpID = "企业微信后台的企业ID"#我的企业->企业信息里面的->企业ID
 
   #这3个参数都是get提交
   sVerifyMsgSig=request.args.get("msg_signature")
   sReqTimeStamp=request.args.get("timestamp")
   sReqNonce=request.args.get("nonce")
   
   wxcpt=WXBizMsgCrypt(sToken,sEncodingAESKey,sCorpID)
 
   if request.method=="GET":#接口验证get请求
      sVerifyEchoStr=request.args.get("echostr")
      ret,sEchoStr=wxcpt.VerifyURL(sVerifyMsgSig, sReqTimeStamp,sReqNonce,sVerifyEchoStr)#信息验证
      if(ret==0):#验证成功返回解密后的sEchoStr
          return sEchoStr
      else:
          print("URL验证失败:" + str(ret))
          return "URL验证失败:" + str(ret)
   else:#用户发送的信息,POST请求
      sReqData=request.stream.read()
      ret,sMsg=wxcpt.DecryptMsg(sReqData, sVerifyMsgSig, sReqTimeStamp, sReqNonce)
      if(ret==0):
          #print("解密后信息")
          #print(sMsg)#接收到的XML格式参考文档:https://work.weixin.qq.com/api/doc/90000/90135/90239  ,注意返回给微信的xml格式除了文本,其他信息类型格式和接收到的有一点出入
          xml_tree = ET.fromstring(sMsg)
          MsgType=xml_tree.find("MsgType").text
          sRespData = "<xml>"
          sRespData+="<ToUserName>"+xml_tree.find("FromUserName").text+"</ToUserName>"
          sRespData+="<FromUserName>"+xml_tree.find("ToUserName").text+"</FromUserName>"
          sRespData+="<CreateTime>"+xml_tree.find("CreateTime").text+"</CreateTime>"
          sRespData+="<MsgId>"+xml_tree.find("CreateTime").text+"</MsgId>"
          sRespData+="<AgentID>"+xml_tree.find("AgentID").text+"</AgentID>"
          if(MsgType=="text"):#文本消息
              sRespData+="<MsgType>text</MsgType>"
              sRespData+="<Content><![CDATA["+xml_tree.find("Content").text+"]]></Content>"
          elif(MsgType=="image"):#图文信息
              sRespData+="<MsgType>image</MsgType>"
              sRespData+="<Image><MediaId><![CDATA["+xml_tree.find("MediaId").text+"]]></MediaId></Image>"
          #还有其他类型的信息,如语音信息(voice),视频信息(video),图文消息(news),返回的XML内容参考文档:https://work.weixin.qq.com/api/doc/90000/90135/90241
          else:
              print("消息类型错误"+MsgType)
              return ""
          sRespData+="</xml>"    
          ret,sEncryptMsg=wxcpt.EncryptMsg(sRespData, sReqNonce, sReqTimeStamp)
          if(ret==0):
             return sEncryptMsg
          else:
             print("加密信息失败")
             return "加密信息失败"
      else:
          print("URL信息解密出错:" + str(ret))
          return "信息解密出错:" + str(ret)
    
if __name__ == "__main__":
    app.run(host='0.0.0.0', port=80)

 

 

点击这里下载Python实现企业微信应用API接收发送消息实例源代码。里面的run.bat双击运行即可启动flask服务器(需要配置好Python环境变量。)

加支付宝好友偷能量挖...


原创文章,转载请注明出处:Python实现企业微信应用API接收发送消息实例

评论(0)Web开发网
阅读(25)喜欢(1)Pythond/PHP/apache/Perl