当前位置:首页 > 基于SAE与微信公众平台的校园信息化服务系统(课室保修模块)-ky
基于SAE与微信公众平台的校园信息化服务
一、微信接口配置-编写config.yaml
开发语言使用python实现,使用pythonweb框架:webpy编写网页应用,因此需要修改应用配置文件就爱如调用webpy的相关信息。微信接口使用xml,需要调用SAE自带的lxml库,具体如下:
Name: computer@scnu Version:1 Libraries: -name:webpy Version:”0.36” -name:lxml Version:”2.3.4”
二、微信接口配置-编写index.wsgi
使用index.wsgi文件中的接入地址来实现网络请求的服务地址的转换,提供微信通信与认证、故障查询、故障排查和故障上报四个功能,实现代码如下:
#coding:utf-8 import os import sae import web urls = ( ‘/’,’About’ ‘/wxauth’,’wxauth’ ‘/issues’,’Issues’ ‘/guide’,’GuideBook’ ‘/tellus’,’TellUs’ )
三、微信通讯与认证
微信通讯与认证模块(wxauth)主要完成与微信公众服务平台的交互,包括报文的分析和认证,其中认证的部分实现方式为:使用webpy服务获取微信交互的web报文,对报文中的时间戳(timestamp)、随机数(nonce)和本地的token进行字典排序后,进行SHA-1签名,与报文中的签名(signature)进行对比,如果两者一致,则说明报文是合法报文,返回报文中的echostr给系统其他xml解析模块。实现代码如下:
#coding:utf-8 import hashlib import web class wxauth:
def GET_wxechostr(self): #获取输入参数 wxdata = web.input() signature = wxdata.signature nonce = wxdata.timestamp echostr = wxdata.echostr token = “本地 token” #字典序排序 list = [token, timestamp, nonce] list.sort() map(sha1.update,list) hashcode = sha1.hexdigest() #验证签名正确性 If hashcode == signature: Return echostr
四、对用户上传的content内容进行分词处理
分词处理调用SAE的分词接口:http://segment.sae.sina.com.cn/urlclient.php?parameters 其中的分词属性参数因简化考虑不需要接口提供。对本文应用场景的样例:“一课南座401投影仪坏了。”进行分词的代码如下:
chinese_text = “一课南座401投影仪坏了”
_SEGMENT_BASE_URL = ‘http://segment.sae.sina.com.cn/urlclient.php’
payload = urllib.urlencode(*(‘context’,Chinese_text),+)
args = urllib.urlencode(*(‘word_tag’,0),(‘encoding’,’UTF-8’),+)
url = _SEGMENT_BASE_URL + ‘?’ + args
result – urllib2.urlopen(url,payload).read()
五、使用共享数据库-共享MySQL
共享 MySQL 服务是新浪云基于 MySQL-5.6 开发的一个共享数据库服务,您仅需几秒钟即可获得一个包括主从节点、高可用服务、自动备份、在线扩容以及监控等各种管理功能的 MySQL 服务。
不同于 独享MySQL ,创建一个共享 MySQL 数据库并不会创建新的 mysql-server(mysqld) 实例,而只是在已有的mysql-server 集群里选择一个实例,然后在这个实例上调用 CREATE DATABASE app_$APPNAME 创建一个新的 database 供您使用。 六、
新浪云的PHP运行环境提供了标准的 MySQL 、 MySQLI 和 PDO 模块来连接数据库,支持所有MYSQL的特性,您可以使用您习惯的方式来操作数据库。
以下是一些和共享MySQL数据库服务相关的预定义常量,你可以直接引用这些参数来连接数据库:
用户名 : SAE_MYSQL_USER 密 码 : SAE_MYSQL_PASS 主库域名 : SAE_MYSQL_HOST_M 从库域名 : SAE_MYSQL_HOST_S 端 口 : SAE_MYSQL_PORT 数据库名 : SAE_MYSQL_DB
使用方法,以MySQL模块为例:
// 连主库$db=mysql_connect(SAE_MYSQL_HOST_M.':'.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);
// 连从库// $db = mysql_connect(SAE_MYSQL_HOST_S.':'.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);
if ($db) {
mysql_select_db(SAE_MYSQL_DB, $db);
// ...}
?>
共分享92篇相关文档