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使用xmlrpc实例讲解
Dec 17 Python
从零学python系列之新版本导入httplib模块报ImportError解决方案
May 23 Python
python使用pil生成图片验证码的方法
May 08 Python
python从入门到精通(DAY 1)
Dec 20 Python
django rest framework之请求与响应(详解)
Nov 06 Python
python中验证码连通域分割的方法详解
Jun 04 Python
Django 连接sql server数据库的方法
Jun 30 Python
python编辑用户登入界面的实现代码
Jul 16 Python
python将txt等文件中的数据读为numpy数组的方法
Dec 22 Python
对Python3 序列解包详解
Feb 16 Python
使用keras实现非线性回归(两种加激活函数的方式)
Jul 05 Python
用Python创建简易网站图文教程
Jun 11 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
php遍历目录输出目录及其下的所有文件示例
2014/01/27 PHP
php switch语句多个值匹配同一代码块应用示例
2014/07/29 PHP
一键生成各种尺寸Icon的php脚本(实例)
2017/02/08 PHP
初学prototype,发个JS接受URL参数的代码
2006/09/25 Javascript
基于jquery的用鼠标画出可移动的div
2012/09/06 Javascript
5秒后跳转效果(setInterval/SetTimeOut)
2013/05/03 Javascript
判断滚动条到底部的JS代码
2013/11/04 Javascript
javascript计算星座属相(十二生肖属相)示例代码
2014/01/09 Javascript
jQuery操作表单常用控件方法小结
2015/03/23 Javascript
字符串反转_JavaScript
2016/04/28 Javascript
jQuery自制提示框tooltip改进版
2016/08/01 Javascript
ThinkJS中如何使用MongoDB的CURD操作
2016/12/13 Javascript
canvas实现图像放大镜
2017/02/06 Javascript
js实现会跳动的日历效果(完整实例)
2017/10/18 Javascript
微信小程序实现通过js操作wxml的wxss属性示例
2018/12/06 Javascript
详解jQuery-each()方法
2019/03/13 jQuery
浅谈javascript中的prototype和__proto__的理解
2019/04/07 Javascript
Vue.js标签页组件使用方法详解
2019/10/19 Javascript
[01:00:26]Ti4主赛事胜者组第一天 EG vs NEWBEE 1
2014/07/19 DOTA
微信跳一跳游戏python脚本
2020/04/01 Python
python 中文件输入输出及os模块对文件系统的操作方法
2018/08/27 Python
pandas.DataFrame删除/选取含有特定数值的行或列实例
2018/11/07 Python
python utc datetime转换为时间戳的方法
2019/01/15 Python
python实现自动化上线脚本的示例
2019/07/01 Python
Django框架 querySet功能解析
2019/09/04 Python
长青弘远的面试题
2012/06/09 面试题
用Python匹配HTML tag的时候,<.*>和<.*?>有什么区别
2012/11/04 面试题
小学语文国培感言
2014/03/04 职场文书
小学母亲节活动方案
2014/03/14 职场文书
小学生操行评语大全
2014/04/22 职场文书
护士节策划方案
2014/05/19 职场文书
2014单位领导班子四风对照检查材料思想汇报
2014/09/25 职场文书
2015年计生协会工作总结
2015/04/24 职场文书
通过Qt连接OpenGauss数据库的详细教程
2021/06/23 PostgreSQL
python套接字socket通信
2022/04/01 Python
MyBatis在注解上使用动态SQL方式(@select使用if)
2022/07/07 Java/Android