项目开始
主要工具:SAE+微信公众号+Git+Python本地环境(最好已经安装好了Git并配置好了Python IDE,比如Pycharm)
整理后的文章地址(带图):http://note.youdao.com/noteshare?id=9d21f38bbcfd4d3fe701800a78f65f0b&sub=5499A5D0234641D3AA9C1AAC72F4286E
第一步:重新申请QQ号1573562512
第二步:注册微信公众平台——测试号
使用邮箱1573562512,密码同邮箱Q——J
公众号是独立于微信的,需要单独注册然后对微信进行绑定,
所以你如果不注册而是直接用你的微信号直接去登陆公众号平台是无法登陆的。
由于微信公众平台的限制,我们普通开发者申请的一般就是订阅号,测试情况下是不能测试的高级接口的,所以我们可以申请测试号来,测试我们的程序
在申请到认证公众号之前,你可以先通过测试号申请系统,快速申请一个接口测试号,立即开始接口测试开发。
进入后台->开发者工具->公众平台测试账号->进入
微信公众平台:http://mp.weixin.qq.com
测试号需要配置url、token、测试号接口
如果url、token配置成功后,那么可以再打开基本配置:
第三步:创建新浪云计算平台应用——服务器搭建
新浪SAE:http://sae.sina.com.cn/
1.我们先申请一个账号:直接访问http://sae.sina.com.cn我是使用微博账号登陆的
2.进入管理系统
点击云应用
点击创建新应用
如果url、token配置成功后,那么可以再打开基本配置:
启动服务器
创建Python应用,二级域名——见下面补充
利用微信公众平台提供的消息接口,搭建自己的消息处理服务器,消息的处理和回复将更加灵活,以期给订阅用户提供更加定制化和个性化的信息。
4、在SAE上创建Python应用
在新浪云上搭建的服务器中编辑代码,来实现微信更多的功能
上面提到需要注册SAE,同时创建一个SAE应用。
这样做的目的是对于没有服务器的同学,通过申请新浪SAE来调用他们的服务器地址
创建应用后,通过新浪云内嵌的在线编辑器来编辑代码
代码结构
config.yaml:调用webpy包
index.wsgi:
index.wsgi中的代码:
相当于我们的服务器地址被架设在http://1.myseasite.applinzi.com/weixin,这也就是微信后台所需要提供的服务器地址
weixinInterface.py
注意,不是上面所提到的WeixinInterface,有大小写区别(当然你可以随便起一个喜欢的名字)
这个文件中将调用名为后者即WeixinInterface的类
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import hashlib
import web
import time
import os
web.config.debug = True
class WeixinInterface:
def __init__(self):
self.app_root = os.path.dirname(__file__)
self.templates_root = os.path.join(self.app_root, 'templates')
self.render = web.template.render(self.templates_root)
def GET(self):
#获取输入参数
data = web.input()
signature=data.signature
timestamp=data.timestamp
nonce=data.nonce
echostr = data.echostr
#自己的token
token="myseasite" #这里改写你在微信公众平台里输入的token
#字典序排序
list=[token,timestamp,nonce]
list.sort()
sha1=hashlib.sha1()
map(sha1.update,list)
hashcode=sha1.hexdigest()
#sha1加密算法
#如果是来自微信的请求,则回复echostr
if hashcode == signature:
return echostr
# 即GET方法就是进行token验证的,因为微信是将验证信息GET发出去的
# 那下面的POST方法就是
def POST(self):
str_xml = web.data() #获得post来的数据
xml = etree.fromstring(str_xml)#进行XML解析
content=xml.find("Content").text#获得用户所输入的内容
msgType=xml.find("MsgType").text
fromUser=xml.find("FromUserName").text
toUser=xml.find("ToUserName").text
if type(content).__name__ == "unicode":
content = content.encode('UTF-8')
Nword = youdao(content)
return self.render.reply_text(fromUser,toUser,int(time.time()),Nword)
# return self.render.reply_text(fromUser,toUser,int(time.time()),u"我现在还在开发中,还没有什么功能,您刚才说的是:"+content)
def youdao(word):
qword = urllib2.quote(word)
baseurl = r'http://fanyi.youdao.com/openapi.do?keyfrom=yourAppName&key=yourAppKey&type=data&doctype=json&version=1.1&q='
url = baseurl+qword
resp = urllib2.urlopen(url)
fanyi = json.loads(resp.read())
##根据json是否返回一个叫“basic”的key来判断是否翻译成功
if 'basic' in fanyi.keys():
##下面是你自已来组织格式
trans = u'%s:\n%s\n%s\n网络释义:\n%s'%(fanyi['query'],''.join(fanyi['translation']),''.join(fanyi['basic']['explains']),''.join(fanyi['web'][0]['value']))
return trans
else:
return u'对不起,您输入的单词%s无法翻译,请检查拼写'% word
【 参考】