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常用web框架简单性能测试结果分享(包含django、flask、bottle、tornado)
Aug 25 Python
Python学生成绩管理系统简洁版
Apr 05 Python
python实现输入数字的连续加减方法
Jun 22 Python
python调用c++ ctype list传数组或者返回数组的方法
Feb 13 Python
python实现列表的排序方法分享
Jul 01 Python
HTML的form表单和django的form表单
Jul 25 Python
详解python播放音频的三种方法
Sep 23 Python
pytorch动态网络以及权重共享实例
Jan 06 Python
Python如何获取Win7,Win10系统缩放大小
Jan 10 Python
Python @property原理解析和用法实例
Feb 11 Python
python turtle工具绘制四叶草的实例分享
Feb 14 Python
高考要来啦!用Python爬取历年高考数据并分析
Jun 03 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 header函数的常用http头设置
2015/06/25 PHP
php实现socket推送技术的示例
2017/12/20 PHP
JavaScript 10件让人费解的事情
2010/02/15 Javascript
JQuery 操作select标签实现代码
2010/05/14 Javascript
13个绚丽的Jquery 界面设计网站推荐
2010/09/28 Javascript
基于jquery可配置循环左右滚动例子
2011/09/09 Javascript
Js 导出table内容到Excel的简单实例
2013/11/19 Javascript
非jQuery实现照片散落桌子上,单击放大的LightBox效果
2014/11/28 Javascript
jQuery实现为图片添加镜头放大效果的方法
2015/06/25 Javascript
jQuery插件扩展extend的简单实现原理
2016/06/24 Javascript
原生JS版和jquery版实现checkbox的全选/全不选/点选/行内点选(Mr.Think)
2016/10/29 Javascript
基于jQuery实现表格的排序
2016/12/02 Javascript
原生js实现键盘控制div移动且解决停顿问题
2016/12/05 Javascript
JavaScript图片处理与合成总结
2018/03/04 Javascript
jquery实现直播视频弹幕效果
2020/02/25 jQuery
Postman如何实现参数化执行及断言处理
2020/07/28 Javascript
[02:22]《新闻直播间》2017年08月14日
2017/08/15 DOTA
跟老齐学Python之深入变量和引用对象
2014/09/24 Python
Python的面向对象思想分析
2015/01/14 Python
Python 爬虫学习笔记之正则表达式
2016/09/21 Python
OpenCV里的imshow()和Matplotlib.pyplot的imshow()的实现
2019/11/25 Python
Python基于进程池实现多进程过程解析
2020/04/30 Python
Pandas对DataFrame单列/多列进行运算(map, apply, transform, agg)
2020/06/14 Python
Python lambda表达式原理及用法解析
2020/08/18 Python
css3绘制天猫logo实现代码
2012/11/06 HTML / CSS
如何用Lucene索引数据库
2016/02/23 面试题
请说出以下代码输出什么
2013/08/30 面试题
铁路工务反思材料
2014/02/07 职场文书
投标承诺书怎么写
2014/05/24 职场文书
精神文明建设先进个人事迹材料
2014/12/24 职场文书
明确岗位职责
2015/02/14 职场文书
增值税发票丢失证明
2015/06/19 职场文书
致运动员赞词
2015/07/22 职场文书
红领巾广播站广播稿
2015/08/19 职场文书
使用react-virtualized实现图片动态高度长列表的问题
2021/05/28 Javascript
Spring 使用注解开发
2022/05/20 Java/Android