WEBAPP开发之python+web.py 搭建微信公众平台
白羽 2018-08-13 来源 :网络 阅读 2146 评论 0

摘要:本文将带你了解python+web.py 搭建微信公众平台,希望本文对大家学WEBAPP有所帮助。

        本文将带你了解python+web.py 搭建微信公众平台,希望本文对大家学WEBAPP有所帮助。、


公众号平台指导网址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1472017492_58YV5

配置python开发环境就不再细说。 
windows xp x86用户可参考://blog.csdn.net/qinmin5527/article/details/50902099

1.web环境配置

安装web.py环境 
web.py是一个轻量级的python web框架,官网地址://webpy.org/ 
linux下安装:(这里我用的是树莓派),windows用户参见文章开头的地址。

sudo apt-get install python-webpy

1

安装python-lxml: 
微信使用XML格式文件进行数据交换,需要使用lxml来解析

sudo apt-get install python-lxml

1

2.微信公众平台开发

首先放几个地址: 
开发者文档 : //mp.weixin.qq.com/wiki/home/index.html 
接口测试号申请://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login 
接口调试工具://mp.weixin.qq.com/debug/ 
一开始平台还没有搭好的时候可以申请一个测试号,权限基本都有,方便调试。

建议开始之前浏览一下开发者文档中的接入指南。 
微信要求的服务器配置如下图。可以看出,有两个必填项:URL,Token。其中URL就不必说了,服务器的地址(这里我申请了花生壳二级域名,放链接://hsk.oray.com/)。Token相当于你与微信约定的密码,一会微信会使用这个Token去连接你的服务器。随便填一串字符串就可以(要记下来)。


然后上代码: 
(下面import的模块有些没有用到,不过没什么影响,自己判断吧)

# -*- coding: utf-8 -*-'''【功能】1.响应微信发送的Token验证2.接收用户文本信息【更新日期】2016.03.17'''import osimport web              #web.pyimport timeimport datetimeimport hashlib          #hash加密算法from lxml import etree  #xml解析import requests         #http请求import jsonimport codecs#===================微信公众账号信息================================#把微信开发页面中的相关信息填进来,字符串格式my_appid = '******************'my_secret = '*****************************'#========匹配URL的正则表达式,url/将被WeixinInterface类处理===========urls = ( '/','WeixinInterface' )#===================微信权限交互====================================def _check_hash(data):'''    响应微信发送的GET请求(Hash校验)    :param data: 接收到的数据    :return: True or False,是否通过验证    '''signature=data.signature  #加密签名timestamp=data.timestamp  #时间戳nonce=data.nonce          #随机数#自己的tokentoken="qinminraspberrypi"   #这里改写你在微信公众平台里输入的token#字典序排序list=[token,timestamp,nonce]list.sort()   #拼接成一个字符串进行sha1加密,加密后与signature进行对比sha1=hashlib.sha1()map(sha1.update,list)hashcode=sha1.hexdigest() #sha1加密算法#如果是来自微信的请求,则回复echostrif hashcode == signature:return Truereturn False#=====================微信+HTTP server===============================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 _reply_text(self, toUser, fromUser, msg):'''        回复文本消息        :param fromUser:        :param toUser:        :param msg:要发送到的消息,文本格式        :return:        '''return self.render.reply_text(toUser, fromUser, int(time.time()),msg + '\n\ntime: ' + now_time)#加入时间戳def _recv_text(self, fromUser, toUser, xml):'''        接收到文本消息,自动回复        :param fromUser:        :param toUser:        :param xml:收到的xml文件        :return:        '''#提取xml中Content文本信息content = xml.find('Content').textreply_msg = contentreturn self._reply_text(fromUser, toUser, u'你刚才说的是:' + reply_msg )def GET(self): #get,从指定的资源请求数据#获取输入参数data = web.input()if _check_hash(data):return data.echostr #微信发来的随机字符串,若验证通过,则返回echostrdef POST(self): #post,向指定的资源提交数据str_xml = web.data() #获得post来的数据xml = etree.fromstring(str_xml)#进行XML解析msgType=xml.find("MsgType").text #消息类型,包括text/event/image/voice/location/link等fromUser=xml.find("FromUserName").texttoUser=xml.find("ToUserName").text#对不同类型的消息分别处理:if msgType == 'text':return self._recv_text(fromUser, toUser, xml)#=====================启动app========================================if __name__ == "__main__":app = web.application(urls,globals())app.run()


然后在你的py文件同级目录下新建一个templates文件夹,在文件夹中新建一个xml文件:reply_text.xml,写入以下代码:

$def with (toUser,fromUser,createTime,content)<xml><ToUserName><![CDATA[$toUser]]></ToUserName><FromUserName><![CDATA[$fromUser]]></FromUserName><CreateTime>$createTime</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[$content]]></Content></xml>


   

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之WebApp频道!

本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 1
看完这篇文章有何感觉?已经有1人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved