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


Posted in Python onAugust 21, 2017

本文实例讲述了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 相关文章推荐
sqlalchemy对象转dict的示例
Apr 22 Python
python进阶教程之函数对象(函数也是对象)
Aug 30 Python
Python使用urllib模块的urlopen超时问题解决方法
Nov 08 Python
python开发之thread实现布朗运动的方法
Nov 11 Python
Python实现绘制双柱状图并显示数值功能示例
Jun 23 Python
python多线程调用exit无法退出的解决方法
Feb 18 Python
python实现五子棋游戏
Jun 18 Python
Django Rest framework三种分页方式详解
Jul 26 Python
Python获取百度热搜的完整代码
Apr 07 Python
python入门之算法学习
Apr 22 Python
Python基础之tkinter图形化界面学习
Apr 29 Python
Django模型层实现多表关系创建和多表操作
Jul 21 Python
Python编程实现微信企业号文本消息推送功能示例
Aug 21 #Python
Python编程之微信推送模板消息功能示例
Aug 21 #Python
使用Python写一个贪吃蛇游戏实例代码
Aug 21 #Python
virtualenv实现多个版本Python共存
Aug 21 #Python
基于Python对象引用、可变性和垃圾回收详解
Aug 21 #Python
python 垃圾收集机制的实例详解
Aug 20 #Python
python 实现tar文件压缩解压的实例详解
Aug 20 #Python
You might like
DEDE采集大师官方留后门的删除办法
2011/01/08 PHP
比较好用的PHP防注入漏洞过滤函数代码
2012/04/11 PHP
PHP使用PHPExcel删除Excel单元格指定列的方法
2016/07/06 PHP
详解PHP防止盗链防止迅雷下载的方法
2017/04/26 PHP
PHP给源代码加密的几种方法汇总(推荐)
2018/02/06 PHP
IE php关于强制下载文件的代码
2008/08/23 Javascript
File文件控件,选中文件(图片,flash,视频)即立即预览显示
2009/04/09 Javascript
jquery $.ajax相关用法分享
2012/03/16 Javascript
jQuery语法高亮插件支持各种程序源代码语法着色加亮
2013/04/27 Javascript
js实现带搜索功能的下拉框实时搜索实时匹配
2013/11/05 Javascript
javascript常用函数(1)
2015/11/04 Javascript
jQuery增加与删除table列的方法
2016/03/01 Javascript
教你用javascript实现随机标签云效果_附代码
2016/03/16 Javascript
js仿支付宝多方框输入支付密码效果
2016/09/27 Javascript
Angular4学习笔记之新建项目的方法
2017/07/18 Javascript
layui中layer前端组件实现图片显示功能的方法分析
2017/10/13 Javascript
Element Table的row-class-name无效与动态高亮显示选中行背景色
2018/11/30 Javascript
NodeJS模块与ES6模块系统语法及注意点详解
2019/01/04 NodeJs
详解JavaScript 的执行机制
2020/09/18 Javascript
python判断windows隐藏文件的方法
2014/03/21 Python
Python单例模式实例分析
2015/01/14 Python
浅谈PyQt5 的帮助文档查找方法,可以查看每个类的方法
2019/06/25 Python
python3.x+pyqt5实现主窗口状态栏里(嵌入)显示进度条功能
2019/07/04 Python
用Python实现BP神经网络(附代码)
2019/07/10 Python
Python PyInstaller库基本使用方法分析
2019/12/12 Python
pycharm sciview的图片另存为操作
2020/06/01 Python
Python变量格式化输出实现原理解析
2020/08/06 Python
python3中TQDM库安装及使用详解
2020/11/18 Python
基于CSS3实现图片模糊过滤效果
2015/11/19 HTML / CSS
利用CSS3动画实现圆圈由小变大向外扩散的效果实例
2018/09/10 HTML / CSS
党校自我鉴定范文
2013/10/02 职场文书
民生工作实施方案
2014/05/31 职场文书
工会主席事迹材料
2014/06/03 职场文书
大专生找工作自荐书
2014/06/10 职场文书
家庭教育教师培训学习体会
2016/01/14 职场文书
java设计模式--三种工厂模式详解
2021/07/21 Java/Android