原创  flask 微信token校验 ,装上python wechat_sdk是不可能的,sdk还是要自己写的,我也很悲伤

分类:发现 2019-05-19T22:51:33    12人阅读   

你可以选择php啊 ,

# -*- coding:utf-8 -*-                             #中文编码

import sys

reload(sys)                                        #不加这部分好像处理中文还是会出问题

sys.setdefaultencoding('utf-8')

import time

from flask import Flask,request, make_response

import hashlib

import xml.etree.ElementTree as ET

app = Flask(__name__)

app.debug = True

@app.route('/')                                    #网址

def index():

   return 'Index Page'

@app.route('/weixin/', methods = ['GET', 'POST'] )

def wechat_auth():                                 #处理微信请求的处理函数,get方法用于认证,post方法取得微信转发的数据

if request.method == 'GET':

token='liyang'

data = request.args

signature = data.get('signature','')

timestamp = data.get('timestamp','')

nonce = data.get('nonce','')

echostr = data.get('echostr','')

s = [timestamp,nonce,token]

s.sort()

s = ''.join(s)

if (hashlib.sha1(s).hexdigest() == signature):

return make_response(echostr)

else:

rec = request.stream.read()                     #接收消息

xml_rec = ET.fromstring(rec)                    #用xml处理

tou = xml_rec.find('ToUserName').text

fromu = xml_rec.find('FromUserName').text

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

content = message_del(content)                   #调用处理程序

xml_rep = "%s0"

response = make_response(xml_rep % (fromu,tou,str(int(time.time())), content))

response.content_type='application/xml'

return response

def message_del(content):                              #次数是自定义的消息处理函数,自由发挥

   if "baidu" in content:

message = "www.baidu.com"

elif "金牛" in content:

message = "贪财好色小心眼"

else:

message = "我不知道!"

return message

if __name__ == '__main__':

   app.run()

                           

 

分享到: