网络编程
位置:首页>> 网络编程>> Python编程>> Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例

Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例

作者:偅唻姒後  发布时间:2023-09-20 13:29:27 

标签:Python,微信企业号

本文实例讲述了Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息。分享给大家供大家参考,具体如下:

说明:此代码用于接收手机微信端发送的消息


#-*- coding:utf-8 -*-
from flask import Flask,request
from WXBizMsgCrypt import WXBizMsgCrypt
import xml.etree.cElementTree as ET
import sys
app = Flask(__name__)
@app.route('/index',methods=['GET','POST'])
def index():
   sToken = 'Uxxxx'
   sEncodingAESKey = 'U2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
   sCorpID = 'wx1xxxxxxxxxxxxx'
   wxcpt=WXBizMsgCrypt(sToken,sEncodingAESKey,sCorpID)
   #获取url验证时微信发送的相关参数
   sVerifyMsgSig=request.args.get('msg_signature')
   sVerifyTimeStamp=request.args.get('timestamp')
   sVerifyNonce=request.args.get('nonce')
   sVerifyEchoStr=request.args.get('echostr')
   #
   sReqMsgSig = sVerifyMsgSig
   sReqTimeStamp = sVerifyTimeStamp
   sReqNonce = sVerifyNonce
   #
   sResqMsgSig = sVerifyMsgSig
   sResqTimeStamp = sVerifyTimeStamp
   sResqNonce = sVerifyNonce
   #验证url
   if request.method == 'GET':
       ret,sEchoStr=wxcpt.VerifyURL(sVerifyMsgSig, sVerifyTimeStamp,sVerifyNonce,sVerifyEchoStr)
       print type(ret)
       print type(sEchoStr)
       if (ret != 0 ):
           print "ERR: VerifyURL ret:" + ret
           sys.exit(1)
       return sEchoStr
   #接收客户端消息
   if request.method == 'POST':
       #sReqMsgSig = request.form.get('msg_signature')
       #sReqTimeStamp = request.form.get('timestamp')
       #sReqNonce = request.form.get('nonce')
       #赋值url验证请求相同的参数,使用上面注释掉的request.form.get方式获取时,测试有问题
           sReqMsgSig = sVerifyMsgSig
           sReqTimeStamp = sVerifyTimeStamp
           sReqNonce = sVerifyNonce
       sReqData = request.data
       print sReqData
       ret,sMsg=wxcpt.DecryptMsg( sReqData, sReqMsgSig, sReqTimeStamp, sReqNonce)
       if (ret != 0):
           print "ERR: VerifyURL ret:"
           sys.exit(1)
       #解析发送的内容并打印
       xml_tree = ET.fromstring(sMsg)
       content = xml_tree.find("Content").text
       print content
   #被动响应消息,将微信端发送的消息返回给微信端
   sRespData = '''<xml>
           <ToUserName><![CDATA[mycreate]]></ToUserName>
           <FromUserName><![CDATA[wx177d1233ab4b730b]]></FromUserName>
           <CreateTime>1348831860</CreateTime>
           <MsgType><![CDATA[text]]></MsgType>
           <Content><![CDATA[''' +content +''']]></Content>
           <MsgId>1234567890123456</MsgId>
           <AgentID>1</AgentID>
           </xml>'''
   ret,sEncryptMsg=wxcpt.EncryptMsg(sRespData, sReqNonce, sReqTimeStamp)
   if( ret!=0 ):
       print "ERR: EncryptMsg ret: " + ret
       sys.exit(1)
   return sEncryptMsg
if __name__ == '__main__':
   app.run(host='0.0.0.0',port=6000,debug=True)

希望本文所述对大家Python程序设计有所帮助。

来源:http://j99d99.blog.51cto.com/2828759/1831564

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com