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编写的微博应用
Oct 17 Python
详细解析Python当中的数据类型和变量
Apr 25 Python
离线安装Pyecharts的步骤以及依赖包流程
Apr 23 Python
Python更新数据库脚本两种方法及对比介绍
Jul 27 Python
在python中使用正则表达式查找可嵌套字符串组
Oct 24 Python
Python实现PS滤镜中马赛克效果示例
Jan 20 Python
python实现寻找最长回文子序列的方法
Jun 02 Python
pyqt弹出新对话框,以及关闭对话框获取数据的实例
Jun 18 Python
Python+pyplot绘制带文本标注的柱状图方法
Jul 08 Python
python 画出使用分类器得到的决策边界
Aug 21 Python
python找出列表中大于某个阈值的数据段示例
Nov 24 Python
python百行代码实现汉服圈图片爬取
Nov 23 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
smarty巧妙处理iframe中内容页的代码
2012/03/07 PHP
PHP父类调用子类方法的代码例子
2014/04/09 PHP
PHP Ajax JavaScript Json获取天气信息实现代码
2016/08/17 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
2017/09/17 PHP
小型js框架veryide.librar源代码
2009/03/05 Javascript
jquery中选择块并改变属性值的方法
2013/07/31 Javascript
js动态给table添加/删除tr的方法
2013/08/02 Javascript
angularjs学习笔记之双向数据绑定
2015/09/26 Javascript
在AngularJS中如何使用谷歌地图把当前位置显示出来
2016/01/25 Javascript
基于Node.js实现nodemailer邮件发送
2016/01/26 Javascript
AngularJS 2.0新特性有哪些
2016/02/18 Javascript
使用vue实现点击按钮滑出面板的实现代码
2017/01/10 Javascript
Js中async/await的执行顺序详解
2017/09/22 Javascript
ReactNative 之FlatList使用及踩坑封装总结
2017/11/29 Javascript
JavaScript实现微信红包算法及问题解决方法
2018/04/26 Javascript
JavaScript创建对象方式总结【工厂模式、构造函数模式、原型模式等】
2018/12/19 Javascript
Angular(5.2-&gt;6.1)升级小结
2018/12/27 Javascript
微信小程序自定义带价格显示日历效果
2018/12/29 Javascript
解决angular 使用原生拖拽页面卡顿及表单控件输入延迟问题
2020/04/21 Javascript
javascript实现前端成语点击验证
2020/06/24 Javascript
[00:09]DOTA2全国高校联赛 精彩活动引爆全场
2018/05/30 DOTA
[52:44]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第一场 6.3
2018/06/04 DOTA
Python 安装setuptools和pip工具操作方法(必看)
2017/05/22 Python
Python实现删除排序数组中重复项的两种方法示例
2019/01/31 Python
Python3 实现减少可调用对象的参数个数
2019/12/20 Python
Python中如何添加自定义模块
2020/06/09 Python
python判断是空的实例分享
2020/07/06 Python
adidas美国官网:adidas US
2016/09/21 全球购物
KIKO MILANO俄罗斯官网:意大利领先的化妆品和护肤品品牌
2021/01/09 全球购物
新西兰最大、占有率最高的综合性药房:PharmacyDirect药房中文网
2020/11/03 全球购物
《骆驼和羊》教学反思
2014/02/27 职场文书
校庆接待方案
2014/03/18 职场文书
从事会计工作年限证明
2015/06/23 职场文书
有关浪费资源的建议书
2015/09/14 职场文书
《你在为谁工作》心得体会(共8篇)
2016/01/20 职场文书
导游词之无锡丝业博物馆
2019/11/12 职场文书