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私有属性和方法实例分析
Jan 15 Python
python中使用mysql数据库详细介绍
Mar 27 Python
python制作一个桌面便签软件
Aug 09 Python
举例讲解Python中的list列表数据结构用法
Mar 12 Python
基于Python log 的正确打开方式
Apr 28 Python
使用Python获取网段IP个数以及地址清单的方法
Nov 01 Python
Python爬取豆瓣视频信息代码实例
Nov 16 Python
Python3操作YAML文件格式方法解析
Apr 10 Python
python3中TQDM库安装及使用详解
Nov 18 Python
python 实现客户端与服务端的通信
Dec 23 Python
用pip给python安装matplotlib库的详细教程
Feb 24 Python
有趣的二维码:使用MyQR和qrcode来制作二维码
May 10 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
支持oicq头像的留言簿(一)
2006/10/09 PHP
php使用CURL伪造IP和来源实例详解
2015/01/15 PHP
php常用表单验证类用法实例
2015/06/18 PHP
10条php编程小技巧
2015/07/07 PHP
laravel 实现关闭CSRF(全部关闭、部分关闭)
2019/10/21 PHP
jQuery EasyUI API 中文文档 - ValidateBox验证框
2011/10/06 Javascript
利用javascript打开模态对话框(示例代码)
2014/01/11 Javascript
jquery实现点击页面回到顶部
2016/11/23 Javascript
微信小程序 使用canvas制作K线实例详解
2017/01/12 Javascript
JS 组件系列之BootstrapTable的treegrid功能
2017/06/16 Javascript
详细分析jsonp的原理和实现方式
2017/11/20 Javascript
详解如何使用webpack打包JS
2018/06/21 Javascript
vue结合axios与后端进行ajax交互的方法
2018/07/06 Javascript
解析原来浏览器原生支持JS Base64编码解码
2019/08/12 Javascript
微信小程序获取用户信息及手机号(后端TP5.0)
2019/09/12 Javascript
JavaScript计算出两个数的差值
2020/03/19 Javascript
Python学习笔记_数据排序方法
2014/05/22 Python
Python使用xlrd读取Excel格式文件的方法
2015/03/10 Python
Python中的zipfile模块使用详解
2015/06/25 Python
python实现用户登录系统
2016/05/21 Python
浅谈Scrapy框架普通反爬虫机制的应对策略
2017/12/28 Python
python ddt实现数据驱动
2018/03/14 Python
解决pycharm运行时interpreter为空的问题
2018/10/29 Python
python 实现数字字符串左侧补零的方法
2018/12/04 Python
python 定时任务去检测服务器端口是否通的实例
2019/01/26 Python
详解python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
2019/08/27 Python
python求绝对值的三种方法小结
2019/12/04 Python
使用opencv将视频帧转成图片输出
2019/12/10 Python
Python接口自动化测试框架运行原理及流程
2020/11/30 Python
一款利用html5和css3实现的3D滚动特效的教程
2015/01/04 HTML / CSS
生产厂长岗位职责
2014/02/21 职场文书
材料专业毕业生求职信
2014/02/26 职场文书
维修工先进事迹
2014/05/29 职场文书
大学生自荐材料范文
2014/12/30 职场文书
2015年学校教育教学工作总结
2015/04/22 职场文书
乡镇安全生产月活动总结
2015/05/08 职场文书