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赋值操作方法分享
Mar 23 Python
pygame学习笔记(3):运动速率、时间、事件、文字
Apr 15 Python
Python使用multiprocessing实现一个最简单的分布式作业调度系统
Mar 14 Python
pygame实现俄罗斯方块游戏
Jun 26 Python
对python:print打印时加u的含义详解
Dec 15 Python
Pandas读取并修改excel的示例代码
Feb 17 Python
Python通用函数实现数组计算的方法
Jun 13 Python
Python基于WordCloud制作词云图
Nov 29 Python
Django与pyecharts结合的实例代码
May 13 Python
Python持续监听文件变化代码实例
Jul 22 Python
详解利用python识别图片中的条码(pyzbar)及条码图片矫正和增强
Nov 17 Python
Python如何实现感知器的逻辑电路
Dec 25 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
thinkphp连贯操作实例分析
2014/11/22 PHP
thinkPHP中验证码的简单使用方法
2015/12/26 PHP
php实现多维数组排序的方法示例
2017/03/23 PHP
JavaScript类和继承 prototype属性
2010/09/03 Javascript
CSS+jQuery实现的一个放大缩小动画效果
2013/09/24 Javascript
js对象内部访问this修饰的成员函数示例
2014/04/27 Javascript
js的touch事件的实际引用
2014/10/13 Javascript
jQuery实现仿腾讯微博滑出效果报告每日天气的方法
2015/05/11 Javascript
js将滚动条滚动到指定位置的简单实现方法
2016/06/25 Javascript
js获取指定字符前/后的字符串简单实例
2016/10/27 Javascript
jQuery中 $ 符号的冲突问题及解决方案
2016/11/04 Javascript
JS中使用textPath实现线条上的文字
2017/12/25 Javascript
解决linux下node.js全局模块找不到的问题
2018/05/15 Javascript
详解如何为你的angular app构建一个第三方库
2018/12/07 Javascript
mpvue微信小程序多列选择器用法之省份城市选择的实现
2019/03/07 Javascript
JS div匀速移动动画与变速移动动画代码实例
2019/03/26 Javascript
微信小程序一周时间表功能实现
2019/10/17 Javascript
微信小程序 wx.getUserInfo引导用户授权问题实例分析
2020/03/09 Javascript
JavaScript forEach中return失效问题解决方案
2020/06/01 Javascript
Python查找函数f(x)=0根的解决方法
2015/05/07 Python
python读取word文档的方法
2015/05/09 Python
python实现单链表中删除倒数第K个节点的方法
2018/09/28 Python
在pycharm中python切换解释器失败的解决方法
2018/10/29 Python
当x.equals(y)等于true时,x.hashCode()与y.hashCode()可以不相等,这句话对不对
2015/05/02 面试题
迟到检讨书900字
2014/01/14 职场文书
小区门卫管理制度
2014/01/29 职场文书
幼儿园中秋节活动方案
2014/02/06 职场文书
资源工程专业毕业生求职信
2014/02/27 职场文书
党员公开承诺书内容
2014/05/20 职场文书
护理专业求职信
2014/06/15 职场文书
小学关爱留守儿童活动方案
2014/08/25 职场文书
学习三严三实对照检查材料思想汇报
2014/09/22 职场文书
导游词之河姆渡遗址博物馆
2019/10/10 职场文书
导游词之无锡梅园
2019/11/28 职场文书
《家庭教育》读后感3篇
2019/12/18 职场文书
Django migrate报错的解决方案
2021/05/20 Python