
最近很无聊,想玩微信公众平台,后来发现乐趣无穷〜
使用的工具python开发微信公众平台,python新浪SAE平台,微信公众平台
您需要先在微信的公共平台和新浪SAE平台上注册. 在微信平台上注册时,您需要拍摄照片和几天的审核期
微信公众平台:
新浪SAE:
等待微信公众审批后,登录公众平台并点击高级功能. 您将看到需要提供访问信息:

微信界面配置
然后,我们需要一个URL作为接口(在这种情况下,我们需要在SAE上构建一个Python应用程序). 令牌相当于我们与微信之间商定的“密码”. 您可以在此处填写英文或数字,但是有时实际输入的纯数字会出现问题,因此字符串更可靠.

第一步是在SAE上构建python应用程序,然后在下面的应用程序中选择python应用程序.

填写二级域名和应用程序名称等,然后选择一种好的语言. 在这里,我们使用Python开发和选择Web应用程序. 创建应用程序后,在代码管理中创建一个新版本. 然后,我们可以选择编辑代码. 实现编辑,无需配置本地环境,SVN等. 当然,如此轻巧的应用程序编辑器就足够了python开发微信公众平台,SVN不如编辑好.
第二步是编写index.wsgi
由于我们使用了web.py框架,由于它具有良好的xml解析能力,我们希望了解web.py的童鞋可以移动
先写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方法,该方法基于微信公众平台对令牌验证的要求,因为在这里我们将templates_root定义为根目录中的模板,因此我们还必须在根目录模板目录下创建一个目录<<
开发人员通过检查签名来验证请求. 如果确认GET请求来自微信服务器,请直接返回echostr参数内容,则访问将生效,否则访问将失败.
签名将开发人员填写的令牌参数与请求中的timestamp参数和nonce参数结合在一起.

加密/验证过程:
1. 按字典顺序对令牌,时间戳和随机数参数进行排序
2. 将三个参数字符串拼接为一个字符串以进行sha1加密
3. 可以将开发人员获得的加密字符串与签名进行比较,以识别请求源自微信
由于微信发送了验证信息GET,所以这里我们使用GET方法获取值并返回相关的应用程序值
全部保存,现在回到微信公众平台高级管理界面

在URL中,在Sina SAE中填写您的应用程序名称并添加/ weixin,例如: 令牌可以自由输入,只要您注意在weixinInterface.py中更改令牌,输入后单击“确定”,如果没问题,将通过验证!
第三步是创建一个简单的自动回复方法,即鹦鹉学习舌头,也就是说,用户所说的话,它也会响应,这是没有用的,只是随便玩!

继续在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)
此定义与上一个GET处于同一级别,请注意缩进
接下来,我们在模板目录中创建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与刚才的帖子相反,因为此处的toUser也是POST函数中的fromUser,这里的fromUser也是POST函数中的toUser,msgType是文本
保存所有内容,现在您正在使用个人微信关注您创建的公共微信,然后输入一些内容. 如果没有问题,您会收到鹦鹉学习舌头的回复!
接下来,我们使用有道翻译API制作翻译工具
使用Python逐步构建微信公众平台(二)----构建用于汉英翻译的翻译工具
使用Python逐步构建微信公众平台(3)-在用户关注后添加欢迎信息和音乐收听功能
使用Python逐步构建微信公众平台(四)----将一只小黄鸡引入微信自动回复中
使用Python逐步构建微信公众平台(5)----使用mysql服务记录用户反馈
参考文章: %E5%88%A9%E7%94%A8sae%E6%90%AD%E5%BB%BA%E5%BE%AE%E4%BF%A1%E5%85%AC%E4 %BC%97%E5%B9%B3%E5%8F%B0%EF%BC%88%E4%B8%80%EF%BC%89web-py%E5%AE%9E%E7%8E%B0%E7 %9A%84sae-hello-world /
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-165213-1.html
一起去追求公平公义