python flask 微信_python3 flask 微信公众号消息接收测试代码

# -*- coding:utf-8 -*-

fromflask import Flaskfromflask import request

import hashlib

import time

import re

import xml.etree.ElementTreeasET

app=Flask(__name__)

@app.route("/")

def index():return "Hello World!"@app.route("/wechat", methods=["GET","POST"])

def weixin():if request.method == "GET": # 判断请求方式是GET请求

my_signature= request.args.get('signature') # 获取携带的signature参数

my_timestamp= request.args.get('timestamp') # 获取携带的timestamp参数

my_nonce= request.args.get('nonce') # 获取携带的nonce参数

my_echostr= request.args.get('echostr') # 获取携带的echostr参数

# my_token= request.args.get('token')

print(my_signature)

print(my_timestamp)

print(my_nonce)

print(my_echostr)

# print(my_token)

token= '123456'# 一定要跟刚刚填写的token一致

# 进行字典排序

data=[token,my_timestamp ,my_nonce ]

data.sort()

# 拼接成字符串,进行hash加密时需为字符串

data= ''.join(data)

#创建一个hash对象

s=hashlib.sha1()

#对创建的hash对象更新需要加密的字符串

s.update(data.encode("utf-8"))

#加密处理

mysignature=s.hexdigest()

print("handle/GET func: mysignature, my_signature:", mysignature, my_signature)

# 加密后的字符串可与signature对比,标识该请求来源于微信if my_signature ==mysignature:returnmy_echostrelse:return ""

else:

# 解析xml

xml=ET.fromstring(request.data)

toUser= xml.find('ToUserName').text

fromUser= xml.find('FromUserName').text

msgType= xml.find("MsgType").text

createTime= xml.find("CreateTime")

# 判断类型并回复if msgType == "text":

content= xml.find('Content').text

content=content+"已收到"

returnreply_text(fromUser, toUser, content)else:return reply_text(fromUser, toUser, "我只懂文字")

def reply_text(to_user, from_user, content):"""以文本类型的方式回复请求""" return """

{}

""".format(to_user, from_user, int(time.time() * 1000), content)

if __name__ == "__main__":

app.run(host='0.0.0.0', port=879)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值