之前看微信公众平台提供的开发者文档看得我迷迷糊糊,网上搜了不少发现并没有符合我需求相关的资料,最后在自己的服务器上一顿操作下来总算是解决了这个问题。
关于服务器上的编辑代码是比较蛋疼的,所以我使用的FileZilla(某度软件中心普通下载就行)把我的python文件上传到服务器上。或者直接在服务器的命令行下vi编写,我不是很习惯命令行vi编辑,所以装了一个CentOS的图形化界面(用惯了windows的通病)
步骤1. 申请一个阿里云服务器,学生价9.9/月对于学生党而言还是很划算的,不像某鹅厂现在已经没有学生价了。。
步骤2. 为你的服务器装上python,我申请的是CentOS7,好像直接pip install python 就可以了
步骤3. 装上web.py , flask等插件 也是pip install web.py pip install flask就行
步骤4. 创建一个main.py 文件,代码如下:
# -*- coding: utf-8 -*-
# filename: main.py
import web
urls = (
'/wx', 'Handle',
)
class Handle(object):
def GET(self):
return "hello, this is a test"
if __name__ == '__main__':
app = web.application(urls, globals())
app.run()
# -*- coding: utf-8 -*-
import hashlib
import web
class Handle(object):
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()
sha1 = hashlib.sha1()
map(sha1.update, list)
hashcode = sha1.hexdigest()
print "handle/GET func: hashcode, signature: ", hashcode, signature
if hashcode == signature:
return echostr
else:
return ""
except Exception, Argument:
return Argument
http://0.0.0.0:80/
Traceback (most recent call last):
File "main.py", line 12, in
app.run()
File "/usr/lib/python2.7/site-packages/web/application.py", line 313, in run
root 9768 9593 0 09:27 ? 00:00:00 /usr/bin/python /usr/share/system-config-printer/applet.py
root 18667 9681 0 11:38 ? 00:00:00 /usr/bin/python2.7 /var/www/main.py
root 19984 18966 0 11:55 pts/0 00:00:00 python main.py 80
root 29735 18966 0 14:32 pts/0 00:00:00 grep --color=auto python
# ps -ef|grep python
这里显示出我的进程(不一定和我的一样,总之找到占用80端口的进程kill掉就行)
root 9768 9593 0 09:27 ? 00:00:00 /usr/bin/python /usr/share/system-config-printer/applet.py
root 18667 9681 0 11:38 ? 00:00:00 /usr/bin/python2.7 /var/www/main.py
root 19984 18966 0 11:55 pts/0 00:00:00 python main.py 80
root 29735 18966 0 14:32 pts/0 00:00:00 grep --color=auto python
看到中间这俩在运行main.py 应该就是这俩货了,直接kill掉
然后再试一次
sudo python main.py 80
这次应该没问题啦 返回微信公众号 url填写 http://你的阿里云提供的公网IP/wx Token填写handle.py里面的Token
提交就没问题啦