首页 > 编程 > Python > 正文

Python微信公众号开发平台

2020-02-22 22:59:23
字体:
来源:转载
供稿:网友

 

上大学的时候,对微信公众号开发浅尝辄止的玩了一下,感觉还是挺有意思的。

//www.jb51.net/article/133677.htm后来服务器到期了,也就搁置了。由于发布web程序,使用PHP很顺手,就使用了PHP作为开发语言。但是其实微信公众号的开发和语言关联并不大,流程,原理上都是一致的。

快要做毕设了,想着到时候应该会部署一些代码到服务器上,进行长期的系统构建。所以趁着还是学生,就买了阿里云的学生机。买了之后,就想着玩点什么,于是微信公众号的开发,就又提上了日程。但是这次,我不打算使用PHP了,感觉局限性相对于Python而言,稍微有点大。

使用Python的话,可以灵活的部署一些爬虫类程序,和用户交互起来也会比较方便。可拓展性感觉也比较的高,于是就选它了。

服务器配置这部分属于是比较基础的,不太明白的可以看看我之前的那个博客,还算是比较的详细。今天就只是对核心代码做下介绍好了。

项目目录

root@aliyun:/var/www/html/wx/py# ls *.pyapi.py dispatcher.py robot.pyroot@aliyun:/var/www/html/wx/py# 

api.py

这个文件相当于是一个关卡,涉及token的验证,和服务的支持。

# -*- coding:utf-8 -*-    #中文编码import sysreload(sys) # 不加这部分处理中文还是会出问题sys.setdefaultencoding('utf-8')import timefrom flask import Flask, request, make_responseimport hashlibimport jsonimport xml.etree.ElementTree as ETfrom dispatcher import *app = Flask(__name__)app.debug = True@app.route('/') # 默认网址def index(): return 'Index Page'@app.route('/wx', methods=['GET', 'POST'])def wechat_auth(): # 处理微信请求的处理函数,get方法用于认证,post方法取得微信转发的数据 if request.method == 'GET': token = '你自己设置好的token' 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() # 接收消息 dispatcher = MsgDispatcher(rec) data = dispatcher.dispatch() with open("./debug.log", "a") as file:  file.write(data)  file.close() response = make_response(data) response.content_type = 'application/xml' return responseif __name__ == '__main__': app.run(host="0.0.0.0", port=80)

dispatcher.py

这个文件是整个服务的核心,用于识别用户发来的消息类型,然后交给不同的handler来处理,并将运行的结果反馈给前台,发送给用户。消息类型这块,在微信的开发文档上有详细的介绍,因此这里就不再过多的赘述了。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表