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处理字符串之isspace()方法的使用
May 19 Python
python装饰器初探(推荐)
Jul 21 Python
Python中装饰器学习总结
Feb 10 Python
tensorflow实现对图片的读取的示例代码
Feb 12 Python
pygame游戏之旅 添加游戏介绍
Nov 20 Python
Python实现查找最小的k个数示例【两种解法】
Jan 08 Python
python+opencv像素的加减和加权操作的实现
Jul 14 Python
关于初始种子自动选取的区域生长实例(python+opencv)
Jan 16 Python
Python输出指定字符串的方法
Feb 06 Python
快速解决jupyter notebook启动需要密码的问题
Apr 21 Python
Keras loss函数剖析
Jul 06 Python
python之PySide2安装使用及QT Designer UI设计案例教程
Jul 26 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
基于preg_match_all采集后数据处理的一点心得笔记(编码转换和正则匹配)
2014/01/31 PHP
php实现数组按指定KEY排序的方法
2015/03/30 PHP
PHP模拟post提交数据方法汇总
2016/02/16 PHP
PHP面向对象程序设计模拟一般面向对象语言中的方法重载(overload)示例
2019/06/13 PHP
全面理解面向对象的 JavaScript(来自ibm)
2013/11/10 Javascript
js中replace的用法总结
2013/12/27 Javascript
原生js和jquery中有关透明度设置的相关问题
2014/01/08 Javascript
原生js编写设为首页兼容ie、火狐和谷歌
2014/06/05 Javascript
jQuery获取对象简单实现方法小结
2014/10/30 Javascript
jquery中filter方法用法实例分析
2015/02/06 Javascript
JS中this上下文对象使用方式
2016/10/09 Javascript
基于Three.js插件制作360度全景图
2016/11/29 Javascript
IScroll5实现下拉刷新上拉加载的功能实例
2017/08/11 Javascript
jQuery图片加载失败替换默认图片方法汇总
2017/11/29 jQuery
vue监听input标签的value值方法
2018/08/27 Javascript
微信小程序学习笔记之文件上传、下载操作图文详解
2019/03/29 Javascript
js图片查看器插件用法示例
2019/06/22 Javascript
聊聊鉴权那些事(推荐)
2019/08/22 Javascript
基于 Vue 的 Electron 项目搭建过程图文详解
2020/07/22 Javascript
Python实现各种排序算法的代码示例总结
2015/12/11 Python
老生常谈Python进阶之装饰器
2017/05/11 Python
Python使用三种方法实现PCA算法
2017/12/12 Python
python实现pdf转换成word/txt纯文本文件
2018/06/07 Python
深入浅析Python的类
2018/06/22 Python
浅谈numpy生成数组的零值问题
2018/11/12 Python
浅谈Python中函数的定义及其调用方法
2019/07/19 Python
Python人工智能之路 jieba gensim 最好别分家之最简单的相似度实现
2019/08/13 Python
Python selenium模拟手动操作实现无人值守刷积分功能
2020/05/13 Python
python实现控制台输出颜色
2021/03/02 Python
大学生职业生涯十年规划书范文
2014/09/17 职场文书
2014国庆节标语口号
2014/09/19 职场文书
2014年党建工作汇报材料
2014/10/27 职场文书
财产分割协议书范本
2014/11/03 职场文书
自我检讨书范文
2015/01/28 职场文书
小学运动会报道稿
2015/07/22 职场文书
MySQL创建管理子分区
2022/04/13 MySQL