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进行稳定可靠的文件操作详解
Dec 31 Python
举例讲解Python中字典的合并值相加与异或对比
Jun 04 Python
python时间日期函数与利用pandas进行时间序列处理详解
Mar 13 Python
Python自定义函数实现求两个数最大公约数、最小公倍数示例
May 21 Python
python 利用栈和队列模拟递归的过程
May 29 Python
Python DataFrame一列拆成多列以及一行拆成多行
Aug 06 Python
Python使用itchat模块实现简单的微信控制电脑功能示例
Aug 26 Python
Python3 字典dictionary入门基础附实例
Feb 10 Python
Python交互环境下打印和输入函数的实例内容
Feb 16 Python
Python reques接口测试框架实现代码
Jul 28 Python
python递归函数用法详解
Oct 26 Python
python 用pandas实现数据透视表功能
Dec 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
兼容firefox,chrome的网页灰度效果
2011/08/08 PHP
如何在旧的PHP系统中使用PHP 5.3之后的库
2015/12/02 PHP
php生成与读取excel文件
2016/10/14 PHP
php常用正则函数实例小结
2016/12/29 PHP
Prototype最新版(1.5 rc2)使用指南(1)
2007/01/10 Javascript
基础的prototype.js常用函数及其用法
2007/03/10 Javascript
Js-$.extend扩展方法使方法参数更灵活
2013/01/15 Javascript
JQuery入门——移除绑定事件unbind方法概述及应用
2013/02/05 Javascript
jQuery方法简洁实现隔行换色及toggleClass的使用
2013/03/15 Javascript
如何使用jquery动态加载js,css文件实现代码
2013/04/03 Javascript
关于jQuery新的事件绑定机制on()的使用技巧
2013/04/26 Javascript
JavaScript中的对象和原型(一)
2016/08/12 Javascript
js获取腾讯视频ID的方法
2016/10/03 Javascript
Javascript中this绑定的3种方法与比较
2016/10/13 Javascript
微信小程序开发之圆形菜单 仿建行圆形菜单实例
2016/12/12 Javascript
Bootstrap CSS布局之按钮
2016/12/17 Javascript
web.js.字符串与正则表达式操作
2017/05/13 Javascript
JavaScript中运算符规则和隐式类型转换示例详解
2017/09/06 Javascript
详解javascript常用工具类的封装
2018/01/30 Javascript
解决npm安装Electron缓慢网络超时导致失败的问题
2018/02/06 Javascript
Vue中对比scoped css和css module的区别
2018/05/17 Javascript
vue.js+elementUI实现点击左右箭头切换头像功能(类似轮播图效果)
2019/09/05 Javascript
Vue实现input宽度随文字长度自适应操作
2020/07/29 Javascript
详解Vue的组件中data选项为什么必须是函数
2020/08/17 Javascript
写了个监控nginx进程的Python脚本
2012/05/10 Python
Mac 上切换Python多版本
2017/06/17 Python
在python2.7中用numpy.reshape 对图像进行切割的方法
2018/12/05 Python
举例讲解Python常用模块
2019/03/08 Python
学子宴答谢词
2014/01/25 职场文书
股权投资意向书
2014/04/01 职场文书
员工安全生产责任书
2014/07/22 职场文书
2015新年联欢晚会开场白
2014/12/14 职场文书
公司慰问信范文
2015/03/23 职场文书
2015年店长工作总结范文
2015/04/08 职场文书
2016年国陪研修感言
2015/11/18 职场文书
2019最新公司租房合同(例文)
2019/07/18 职场文书