知识点
相关文章
更多最近更新
更多荐 使用python一步一步搭建微信公众平台(一)
2019-03-02 00:05|来源: 网路
最近无聊,想玩玩微信的公众平台,后来发现乐趣无穷啊~
使用的工具,python 新浪SAE平台,微信的公众平台
你需要先在微信的公众平台与新浪SAE平台上各种注册,微信平台注册的时候需要你拍张手持身份证的照片,还有几天的审核期
微信公众平台:http://mp.weixin.qq.com
新浪SAE:http://sae.sina.com.cn/
等待微信公众审核通过后,登录公众平台后,点击高级功能。将会看到需要提供一个接入信息:
微信接口配置
那么我们需要一个网址作为接口(这时就需要SAE上搭建Python的一个应用),Token呢,就是相当于我们和微信之间约定的“密码”,这里可以随便填写英文或者数字,但实测输入纯数字有时会有问题,所以还是字符串比较靠谱。
第一步,在SAE上搭建python的应用,在下图的应用里选择python应用。
填好二级域名和应用名称等,选择好语言。这里我们使用Python开发选择web应用。创建好应用之后,在代码管理中创建一个新的版本。而后我们可以选择编辑代码。能够实现在线编辑,根本用不着配置本地环境,SVN等等。当然像这种轻量级的应用在线编辑器就可以了,SVN的话还不如在线编辑好用
第二步,编写index.wsgi
因为我们使用的是web.py框架,因为其良好的xml解析,想了解web.py的童鞋可以移步 http://webpy.org/docs/0.3/tutorial.zh-cn
首先编写config.yaml
name: yangyanxing version: 1 libraries: - name: webpy version: "0.36" - name: lxml version: "2.3.4" ...
注意严格的缩进,差一个空格你就废了!而且调试的时候很不好发现问题。。。
接着我们继续编写index.wsgi
# coding: UTF-8 import os import sae import web from weixinInterface import WeixinInterface urls = ( '/weixin','WeixinInterface' ) app_root = os.path.dirname(__file__) templates_root = os.path.join(app_root, 'templates') render = web.template.render(templates_root) app = web.application(urls, globals()).wsgifunc() application = sae.create_wsgi_app(app)
简单解释一下,
from weixinInterface import WeixinInterface
这里我们需要再创建一个weixinInterface的py文件,你也可以将这个类写在index.wsgi文件中,只是这样看起来会乱乱的
新建一个weixinInterface.py文件,注意大小写,写入以下代码
# -*- coding: utf-8 -*- import hashlib import web import lxml import time import os import urllib2,json from lxml import etree 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="yangyanxing" #这里改写你在微信公众平台里输入的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验证,因为这里我们定义了templates_root为根目录下的templates,所以还要在根目录下创建一个目录templates的目录
1 | 开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,否则接入失败。 |
2 |
3 | signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。 |
4 |
5 | 加密/校验流程: |
6 | 1. 将token、timestamp、nonce三个参数进行字典序排序 |
7 | 2. 将三个参数字符串拼接成一个字符串进行sha1加密 |
8 | 3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信 |
因为微信是将验证信息GET发出去的,所以这里使用了GET方法来取得值并且返回相应用值
保存全部,现在回到微信的公众平台高级管理界面
在url里面填写你在新浪SAE里应用名称并且加上/weixin,如:http://XXXX.sinaapp.com/weixin token随便输入,只要注意更改weixinInterface.py中的token就行了,输入好了以后点击提交,如果没有什么问题的话就会通过验证!
第三步,新建一个简单的自动回复的方法,鹦鹉学舌,就是用户说什么,它也回复什么,没什么用,只是随便玩玩!
在weixinInterface.py里继续添加代码
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 return self.render.reply_text(fromUser,toUser,int(time.time()),u"我现在还在开发中,还没有什么功能,您刚才说的是:"+content)
这个def 是和上一个GET同级的,注意缩进
接着我们在templates目录下创建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>
注意这里的toUser与fromUser是刚才post的是相反的,因为这里的toUser也就是POST函数里的fromUser,这里的fromUser也就是POST函数里的toUser,msgType是text
全部保存,现在就在用你的个人微信关注一下你创建的公众微信号,然后随便输入些内容,如果没有什么问题,你将会收到一条鹦鹉学舌的回复内容!
接下来,我们利用有道的翻译api做一个翻译的小工具
使用python一步一步搭建微信公众平台(二)----搭建一个中英互译的翻译工具
使用python一步一步搭建微信公众平台(三)----添加用户关注后的欢迎信息与听音乐功能
使用python一步一步搭建微信公众平台(四)----将小黄鸡引入微信自动回复
使用python一步一步搭建微信公众平台(五)----使用mysql服务来记录用户的反馈
转自:http://my.oschina.net/yangyanxing/blog/159215
相关问答
更多-
#渭南师范学院#在渭师院学的教育学,出来想去教育培训机构,大家有什么好的能不能推[2023-06-28]
生理学和心理学了解运用如何?去什么地方不重要,重要的是能够运用到您的专业,来奠定你的职业方向!从事教学工作还是教务管理工作。 -
贵阳室内设计培训哪里设计的最好,[2022-04-06]
你去贵阳艺龙居室内设计学校啊,哪里就包就业,而且在哪学过的学员都很厉害,在装修行列中都很出名,还有小班教学,白天工作,晚上也可以来学,这是我的回答,希望能帮助你。 -
微信公众平台能使用Java开发吗[2022-09-14]
能使用的!微信 在安卓手机里可以使用,安装是用java 开发的,所以 可以用java开发 -
幼儿简笔画恐龙,一步一步的带步骤[2023-12-07]
先画身体,壮壮的! 还有‘恐龙'腿!要画粗一点哦。 紧跟着是尾巴!长一点。 添上眼睛和鼻子! 然后就是身上很有特色的恐龙背刺啦! 最后画上一棵树!不知它吃不吃树叶! -
python爬取微信好友运动步数[2022-05-22]
微信分享的url本身就有openid,伪造Request Headers然后拿到返回的信息就行了 -
微信公众平台开发有哪些要注意的?[2022-10-26]
微信公众平台开发注意事项: 一、微信公众平台开发是指为微信公众号进行业务开发,为移动应用、PC端网站、公众号第三方平台(为各行各业公众号运营者提供服务)的开发,请前往微信开放平台接入。 二、在申请到认证公众号之前,你可以先通过测试号申请系统,快速申请一个接口测试号,立即开始接口测试开发。 三、在开发过程中,可以使用接口调试工具来在线调试某些接口。 四、每个接口都有每日接口调用频次限制,可以在公众平台官网-开发者中心处查看具体频次。 五、在开发出现问题时,可以通过接口调用的返回码,以及报警排查指引(在公众平台 ... -
注册微信卡在这一步 怎么办?[2022-05-14]
检查下填写的手机号是否有误,如果有误则需要重新修改,如果还是没有建议重新开机 -
下载并安装Python 2.7.1 Mac OS X 64位/ 32位x86-64 / i386安装程序(适用于Mac OS X 10.6)或Python 2.7.1 Mac OS X 32位i386 / PPC安装程序(适用于Mac OS) X 10.3至10.6) 。 在OS X上安装virtualenv和pip的说明 这是我在OS X上安装virtualenv和pip : curl -O http://peak.telecommunity.com/dist/ez_setup.py sudo pytho ...