python企业微信回调_python 微信企业号-回调模式接收微信端客户端发送消息并被动返回消息...

该代码示例展示了如何使用Python的Flask框架和WXBizMsgCrypt库,接收并验证微信企业号客户端发送的消息,然后进行解密并被动回复消息。主要涉及的函数包括VerifyURL用于验证URL,DecryptMsg用于解密接收到的消息,以及EncryptMsg用于加密响应消息。
摘要由CSDN通过智能技术生成

说明:此代码用于接收手机微信端发送的消息

#-*- 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 = '''

1348831860

1234567890123456

1

'''

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)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值