最近学习Python,发现可以使用python来开发微信公众平台,就想尝试一下。因为微信公众平台的开发者模式需要用到服务器,自己的电脑不可能整天开着,所以拿自己电脑当服务器有点不太现实,所以我选择了将应用部署到了BAE上,其实部署到SAE上也是可以的。
首先申请一个微信公众号以及一个bae账号。在bae上创建一个python-web应用。使用SVN将应用内容CheckOut到本地会看到
然后对index.py进行编辑,输入以下代码
#coding:utf-8 from bottle import * import hashlib import xml.etree.ElementTree as ET import urllib2 import json import time app=Bottle() @app.get("/") def checkSignature(): token="shgweixin" signature=request.GET.get('signature',None) timestamp=request.GET.get('timestamp',None) nonce=request.GET.get('nonce',None) echostr=request.GET.get('echostr',None) tmpList=[token,timestamp,nonce] tmpList.sort() tmpstr="%s%s%s"%tuple(tmpList) hashstr=hashlib.sha1(tmpstr).hexdigest() if hashstr==signature: return echostr else: return False def parse_msg(): recvmsg=request.body.read() root=ET.fromstring(recvmsg) msg={} for child in root: msg[child.tag]=child.text return msg @app.post("/")
'''
这边的代码是为了是公众号自动回复用户发送的消息
''' def response_msg(): msg=parse_msg() echostr="""因为用到了bottle的框架,所以需要下载bottle.py放在同一目录下"""%(msg['FromUserName'],msg['ToUserName'],time.time(),"text",msg['Content']) return echostr if __name__=="__main__": debug(True) run(app,host='127.0.0.1',port=8080,reloader=True) else: from bae.core.wsgi import WSGIApplication application = WSGIApplication(app) %s
然后COMMIT,在bae中选择快捷发布,将新的应用发布到网上。
在微信公众平台管理中选择“开发者中心”-->“修改配置”,填写相应的内容
url:百度云服务器上的域名
token:用于验证的内容(需要个代码段中token内容一致)
之后点击提交,没有错误之后,开发者模式就启用了。
这时候可以向公众号发送消息,公众号会回复一样的内容。如果发送消息提示“该公众号暂时无法提供服务,请稍后再试”那就说明代码有一定的问题,需要修改。