本文實例講述了Python微信企業號開發之回調模式接收微信端客戶端發送消息及被動返回消息。分享給大家供大家參考,具體如下:
說明:此代碼用于接收手機微信端發送的消息
#-*- coding:utf-8 -*-from flask import Flask,requestfrom WXBizMsgCrypt import WXBizMsgCryptimport xml.etree.cElementTree as ETimport sysapp = 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 sEncryptMsgif __name__ == '__main__': app.run(host='0.0.0.0',port=6000,debug=True)希望本文所述對大家Python程序設計有所幫助。
新聞熱點
疑難解答