搭建微信公众号后台 上传代码 1. 新建main.py文件,复制如下代码: plaintext coding: utf8 filename: main.py import web from handle import Handle urls ( '/wx', 'Handle', ) if name 'main': app web.application(urls, globals()) app.run() 2. 新建handle.py文件,复制如下代码: plaintext coding: utf8 filename: handle.py import hashlib import web import receive import time import os class Handle(object): def init(self): self.approot os.path.dirname(file) self.templatesroot os.path.join(self.approot, 'templates') self.render web.template.render(self.templatesroot) def GET(self): try: data web.input() if len(data) 0: return "hello, this is handle view" signature data.signature timestamp data.timestamp nonce data.nonce echostr data.echostr token "此处内容与公众号基本配置里Token字段取值保持一致" list [token, timestamp, nonce] list.sort() s list[0] + list[1] + list[2] hashcode hashlib.sha1(s.encode('utf8')).hexdigest() print( "handle/GET func: hashcode, signature: ", hashcode, signature) if hashcode signature: return echostr else: return echostr except (Exception) as Argument: return Argument def POST(self): try: webData web.data() print("Handle Post webdata is:n", webData) 打印消息体日志 recMsg receive.parsexml(webData) if isinstance(recMsg, receive.Msg) and recMsg.MsgType 'text': toUser recMsg.FromUserName fromUser recMsg.ToUserName content "欢迎" + str(recMsg.Content) print('Reply message info:n') print('toUser ', toUser) print('fromUser ', fromUser) print('content ', content) return self.render.replytext(toUser, fromUser, int(time.time()), content) else: print("不支持的消息类型:",recMsg.MsgType) return "success" except (Exception) as Argment: return Argment 3. 新建receive.py文件,复制如下代码: plaintext