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 相关文章推荐
打开电脑上的QQ的python代码
Feb 10 Python
python文件写入实例分析
Apr 08 Python
在Python下尝试多线程编程
Apr 28 Python
Python实现文件按照日期命名的方法
Jul 09 Python
浅析Python中的getattr(),setattr(),delattr(),hasattr()
Jun 14 Python
Python实现注册、登录小程序功能
Sep 21 Python
解决Python一行输出不显示的问题
Dec 03 Python
Python之NumPy(axis=0 与axis=1)区分详解
May 27 Python
PyQt QListWidget修改列表项item的行高方法
Jun 20 Python
Python使用Opencv实现图像特征检测与匹配的方法
Oct 30 Python
python模拟斗地主发牌
Apr 22 Python
python实现计算器简易版
Dec 17 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
Syphon 秘笈
2021/03/03 冲泡冲煮
php中突破基于HTTP_REFERER的防盗链措施(stream_context_create)
2011/03/29 PHP
解析htaccess伪静态的规则
2013/06/18 PHP
php版微信自定义回复功能示例
2016/12/05 PHP
PHP接入微信H5支付的方法示例
2019/10/28 PHP
PHP设计模式之装饰器(装饰者)模式(Decorator)入门与应用详解
2019/12/13 PHP
jQuery使用$.ajax进行异步刷新的方法(附demo下载)
2015/12/04 Javascript
js和jquery分别验证单选框、复选框、下拉框
2015/12/17 Javascript
如何使用Bootstrap的modal组件自定义alert,confirm和modal对话框
2016/03/01 Javascript
javascript实现数字倒计时特效
2016/03/30 Javascript
第三章之Bootstrap 表格与按钮功能
2016/04/25 Javascript
AngularJS框架的ng-app指令与自动加载实现方法分析
2017/01/04 Javascript
vue中使用axios post上传头像/图片并实时显示到页面的方法
2018/09/27 Javascript
Node.js中的不安全跳转如何防御详解
2018/10/21 Javascript
详解如何创建并发布一个 vue 组件
2018/11/08 Javascript
Vue中的情侣属性$dispatch和$broadcast详解
2019/03/07 Javascript
Vue最新防抖方案(必看篇)
2019/10/30 Javascript
[00:16]热血竞技场
2019/03/06 DOTA
python字符串替换的2种方法
2014/11/30 Python
简单介绍Python的Django框架的dj-scaffold项目
2015/05/30 Python
实例解析Python的Twisted框架中Deferred对象的用法
2016/05/25 Python
Python基础知识_浅谈用户交互
2017/05/31 Python
python与sqlite3实现解密chrome cookie实例代码
2018/01/20 Python
python3实现单目标粒子群算法
2019/11/14 Python
PYcharm 激活方法(推荐)
2020/03/23 Python
python爬取天气数据的实例详解
2020/11/20 Python
详解CSS3中使用gradient实现渐变效果的方法
2015/08/18 HTML / CSS
html5 Canvas画图教程(3)—canvas出现1像素线条模糊不清的原因
2013/01/09 HTML / CSS
学前班教师的自我鉴定
2013/12/05 职场文书
三年大学生活自我鉴定
2014/01/21 职场文书
解除合同协议书
2014/04/17 职场文书
社区党支部公开承诺书
2015/04/29 职场文书
2015初中团支部工作总结
2015/07/21 职场文书
患者身份识别制度
2015/08/06 职场文书
村党总支部公开承诺书2016
2016/03/25 职场文书
基于Redis6.2.6版本部署Redis Cluster集群的问题
2022/04/01 Redis