本文实例讲述了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相关内容感兴趣的读者可查看本站专题:《Python字符串操作技巧汇总》、《Python编码操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》及《Python入门与进阶经典教程》。
希望本文所述对大家Python程序设计有所帮助。
您可能感兴趣的文章:Python 网络编程起步(Socket发送消息)python实现给微信公众号发送消息的方法python模仿网页版微信发送消息功能Python定时发送消息的脚本:每天跟你女朋友说晚安python实现微信定时每天和女友发送消息python实现给微信指定好友定时发送消息python3+pyqt5+itchat微信定时发送消息的方法使用python3调用wxpy模块监控linux日志并定时发送消息给群组或好友基于Python实现定时自动给微信好友发送天气预报python实现微信每日一句自动发送给喜欢的人python实现的自动发送消息功能详解