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 相关文章推荐
python基于mysql实现的简单队列以及跨进程锁实例详解
Jul 07 Python
跟老齐学Python之传说中的函数编写条规
Oct 11 Python
Linux环境下MySQL-python安装过程分享
Feb 02 Python
Python通过poll实现异步IO的方法
Jun 04 Python
详解Python中映射类型(字典)操作符的概念和使用
Aug 19 Python
Python中多线程的创建及基本调用方法
Jul 08 Python
pycharm安装图文教程
May 02 Python
python生成lmdb格式的文件实例
Nov 08 Python
Python实现计算文件MD5和SHA1的方法示例
Jun 11 Python
Python爬取破解无线网络wifi密码过程解析
Sep 17 Python
基于python的selenium两种文件上传操作实现详解
Sep 19 Python
关于Keras模型可视化教程及关键问题的解决
Jan 24 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
PHP输出多个元素的排列或组合的方法
2017/03/14 PHP
PHP标准库(PHP SPL)详解
2019/03/16 PHP
由prototype_1.3.1进入javascript殿堂-类的初探
2006/11/06 Javascript
jQuery 行背景颜色的交替显示(隔行变色)实现代码
2009/12/13 Javascript
动态显示可输入的字数提示还可以输入的字数
2014/04/01 Javascript
js的回调函数详解
2015/01/05 Javascript
JS显示下拉列表框内全部元素的方法
2015/03/31 Javascript
快速学习AngularJs HTTP响应拦截器
2015/12/31 Javascript
jQGrid Table操作列中点击【操作】按钮弹出按钮层的实现代码
2016/12/05 Javascript
前端js弹出框组件使用方法
2020/08/24 Javascript
Vue.js render方法使用详解
2017/04/05 Javascript
Angular2中如何使用ngx-translate进行国际化
2017/05/21 Javascript
Vue下滚动到页面底部无限加载数据的示例代码
2018/04/22 Javascript
详解关于JSON.parse()和JSON.stringify()的性能小测试
2019/03/14 Javascript
javascript canvas API内容整理
2020/02/16 Javascript
python如何去除字符串中不想要的字符
2020/07/05 Python
python中利用h5py模块读取h5文件中的主键方法
2018/06/05 Python
浅谈numpy生成数组的零值问题
2018/11/12 Python
python读取几个G的csv文件方法
2019/01/07 Python
Numpy 理解ndarray对象的示例代码
2020/04/03 Python
matplotlib 曲线图 和 折线图 plt.plot()实例
2020/04/17 Python
利用CSS3的特性改变文本选中时的颜色
2013/09/11 HTML / CSS
诗普兰迪官方网站:Splendid
2018/09/18 全球购物
初级Java程序员面试题
2016/03/03 面试题
财务专业大学生职业生涯规划范文
2013/12/30 职场文书
生产厂长岗位职责
2014/02/21 职场文书
《美丽的公鸡》教学反思
2014/02/25 职场文书
2014年党员公开承诺书范文
2014/03/28 职场文书
业务员自荐信范文
2014/04/20 职场文书
出纳工作检讨书
2014/10/18 职场文书
工程技术员岗位职责
2015/04/11 职场文书
幼儿园门卫安全责任书
2015/05/08 职场文书
2015年教师见习期工作总结
2015/05/20 职场文书
Java后端 Dubbo retries 超时重试机制的解决方案
2022/04/14 Java/Android
nginx实现多geoserver服务的负载均衡
2022/05/15 Servers
springboot实现string转json json里面带数组
2022/06/16 Java/Android