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 将字符串转换成字典dict
Mar 24 Python
Python实现二分法算法实例
Feb 02 Python
使用Python的urllib2模块处理url和图片的技巧两则
Feb 18 Python
python 中split 和 strip的实例详解
Jul 12 Python
详解Django+Uwsgi+Nginx的生产环境部署
Jun 25 Python
python实现列表的排序方法分享
Jul 01 Python
Django Rest framework频率原理与限制
Jul 26 Python
对django 模型 unique together的示例讲解
Aug 06 Python
python图形绘制奥运五环实例讲解
Sep 14 Python
Python 解决相对路径问题:&quot;No such file or directory&quot;
Jun 05 Python
python使用nibabel和sitk读取保存nii.gz文件实例
Jul 01 Python
python利用 keyboard 库记录键盘事件
Oct 16 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多功能图片处理类分享(php图片缩放类)
2014/03/14 PHP
php输出反斜杠的实例方法
2019/09/19 PHP
jquery移除button的inline onclick事件(已测试及兼容浏览器)
2013/01/25 Javascript
JavaScript的null和undefined区别示例介绍
2014/09/15 Javascript
js实现点击添加一个input节点
2014/12/05 Javascript
JavaScript编写页面半透明遮罩效果的简单示例
2016/05/09 Javascript
jQuery控制li上下循环滚动插件用法实例(附demo源码下载)
2016/05/28 Javascript
Node.js Sequelize如何实现数据库的读写分离
2016/10/23 Javascript
详解如何使用PM2将Node.js的集群变得更加容易
2017/11/15 Javascript
手写Node静态资源服务器的实现方法
2018/03/20 Javascript
VueJs组件之父子通讯的方式
2018/05/06 Javascript
简述vue状态管理模式之vuex
2018/08/29 Javascript
javacript replace 正则取字符串中的值并替换【推荐】
2018/09/13 Javascript
浅谈KOA2 Restful方式路由初探
2019/03/14 Javascript
Node.js+Express+Mysql 实现增删改查
2019/04/03 Javascript
了解JavaScript函数中的默认参数
2019/05/30 Javascript
详解JavaScript匿名函数和闭包
2020/07/10 Javascript
浅谈vue中使用编辑器vue-quill-editor踩过的坑
2020/08/03 Javascript
[43:35]TI4 循环赛第二日Liquid vs Fnatic
2014/07/11 DOTA
[02:31]2014DOTA2国际邀请赛2009专访:干爹表现出乎意料 看好DK杀回决赛
2014/07/20 DOTA
[00:52]DOTA2齐天大圣预告片
2016/08/13 DOTA
[52:10]LGD vs Optic Supermajor小组赛D组胜者组决赛 BO3 第二场 6.3
2018/06/04 DOTA
使用django-suit为django 1.7 admin后台添加模板
2014/11/18 Python
浅谈django中的认证与登录
2016/10/31 Python
Python查询IP地址归属完整代码
2017/06/21 Python
Python可视化mhd格式和raw格式的医学图像并保存的方法
2019/01/24 Python
linux环境中没有网络怎么下载python
2019/07/07 Python
Pytest框架之fixture的详细使用教程
2020/04/07 Python
Css3新特性应用之视觉效果实例
2016/12/12 HTML / CSS
白兰氏健康Mall:BRAND’S
2017/11/13 全球购物
Hotels.com英国:全球领先的酒店住宿提供商
2019/01/24 全球购物
《充气雨衣》教学反思
2014/04/07 职场文书
绿色环保标语
2014/06/12 职场文书
解除劳动合同协议书范本2014
2014/09/25 职场文书
企业2014年度工作总结
2014/12/10 职场文书
病危通知单
2015/04/17 职场文书