python

超轻量级php框架startmvc

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

更新时间:2020-05-06 10:12:01 作者:startmvc
本文实例讲述了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 微信企业号 回调模式 接收 端客户端消息 返回消息