Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例
作者:偅唻姒後 时间:2023-09-20 13:29:27
本文实例讲述了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
标签:Python,微信企业号
0
投稿
猜你喜欢
使用Python处理Excel表格的简单方法
2023-12-07 08:05:04
bak文件怎么打开 2000w数据怎么打开?
2024-01-12 19:30:43
mysql数据库索引损坏及修复经验分享
2024-01-16 11:22:43
跟老齐学Python之编写类之一创建实例
2021-05-06 21:16:56
python学习之hook钩子的原理和使用
2023-08-01 15:55:20
MySQL 有关MHA搭建与切换的几个错误log汇总
2024-01-27 22:03:50
Python下载手机小视频的操作方法
2022-11-16 02:40:55
python密码学库pynacl功能介绍
2021-03-07 01:29:44
Python模拟登录和登录跳转的参考示例
2023-07-29 07:09:47
Python的string模块中的Template类字符串模板用法
2023-02-02 10:53:05
Python+tkinter编写一个最近很火的强制表白神器
2022-10-25 07:42:10
python 中的 return 解析
2023-11-03 13:21:47
JavaScript html5 canvas实现图片上画超链接
2024-04-28 10:19:19
python装饰器常见使用方法分析
2023-06-23 21:18:33
小型分页的设计
2011-08-18 18:32:26
Vue实现兄弟组件间的联动效果
2024-05-10 14:19:32
python中urllib模块用法实例详解
2022-02-05 13:23:33
JS获取页面窗口实际大小函数
2008-01-28 13:18:00
XML文件的显示——CSS和XSL
2007-10-15 18:48:00
基于PyQT5制作一个课堂点名系统
2023-10-08 20:52:13