Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例

作者:偅唻姒後 时间:2023-09-20 13:29:27 

本文实例讲述了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程序设计有所帮助。

来源:http://j99d99.blog.51cto.com/2828759/1831564

标签:Python,微信企业号
0
投稿

猜你喜欢

  • 使用Python处理Excel表格的简单方法

    2023-12-07 08:05:04
  • bak文件怎么打开 2000w数据怎么打开?

    2024-01-12 19:30:43
  • mysql数据库索引损坏及修复经验分享

    2024-01-16 11:22:43
  • 跟老齐学Python之编写类之一创建实例

    2021-05-06 21:16:56
  • python学习之hook钩子的原理和使用

    2023-08-01 15:55:20
  • MySQL 有关MHA搭建与切换的几个错误log汇总

    2024-01-27 22:03:50
  • Python下载手机小视频的操作方法

    2022-11-16 02:40:55
  • python密码学库pynacl功能介绍

    2021-03-07 01:29:44
  • Python模拟登录和登录跳转的参考示例

    2023-07-29 07:09:47
  • Python的string模块中的Template类字符串模板用法

    2023-02-02 10:53:05
  • Python+tkinter编写一个最近很火的强制表白神器

    2022-10-25 07:42:10
  • python 中的 return 解析

    2023-11-03 13:21:47
  • JavaScript html5 canvas实现图片上画超链接

    2024-04-28 10:19:19
  • python装饰器常见使用方法分析

    2023-06-23 21:18:33
  • 小型分页的设计

    2011-08-18 18:32:26
  • Vue实现兄弟组件间的联动效果

    2024-05-10 14:19:32
  • python中urllib模块用法实例详解

    2022-02-05 13:23:33
  • JS获取页面窗口实际大小函数

    2008-01-28 13:18:00
  • XML文件的显示——CSS和XSL

    2007-10-15 18:48:00
  • 基于PyQT5制作一个课堂点名系统

    2023-10-08 20:52:13
  • asp之家 网络编程 m.aspxhome.com