如何用Python开发微信公众号后台:SAE、Git与Python环境配置指南
通过本系列文章,我们将介绍如何使用Python开发微信公众号后台。

主要工具:SAE+微信公众号+Git+Python本地环境(最好安装Git并配置Python IDE,如Pycharm)
1.工人想做好自己的工作
首先简单介绍一下一些准备工作。
1.1 微信公众号
第一步,注册个人微信公众号(个人号不支持认证)。按照给定的流程并填写所需的信息来完成申请。如果您已有账户,可以直接登录。
登录后,您可以在左栏中看到自动回复功能:
在一般使用中,我们可以通过设置关键字来实现一些基本的自动回复功能,但这样的关键字回复远远不能满足我们的实际需求。比如我们要实现一个查快递的功能,就必须调用express接口,针对不同用户的不同输入,给出不同的输出结果。在这种情况下,关键字回复就显得毫无用处了。所以我们选择了开发者模式。
在基础配置中,我们只需要修改URL、Token、EncodingAESKey这三个配置即可。由于我们还没有配置好自己的服务器,所以微信公众号的设置这里会暂停,直到我们有服务器并获取地址为止。稍后回来填写即可。 1.2 安全事故
这次我们使用新浪云作为我们的服务器。新用户注册登录后,将获得一定的云豆折扣。老用户十块钱的押金就足够我们完成很多学习任务了。
进入控制台后选择云应用并创建新应用。
输入二级域名和应用程序名称(必填),在下面的运行环境中选择Python2.7 - 空应用程序。
成功创建应用程序后,您将获得一些相应的配置数据和密钥。当然,这些内容这次不会用到。主要用到的是登录账号和安全密码。
SAE平台的代码版本控制分为Git和SVN。您可以在两者之间自由选择。这次我们选择使用Git来上传代码。
1.3 git
对于Windows系统,如果您的计算机上安装了Github Desktop,它应该附带Git Bash和Git Shell等工具。如果您之前没有安装过Git相关软件,可以搜索Git并安装Git for Windows。
当你第一次接触 Git 时,它可能会很复杂。它功能非常强大,但使用起来很麻烦。初学者可能会在绕了一圈之后感到困惑。然而,在这个构建过程中,我们实际上只需要使用四五个极其简单的命令。 ,所以完全不用担心Git,不要让Git成为你拒绝迈出第一步的障碍。 (有关 SAE 代码管理的详细信息,请参阅#git)
现在让我们进入真正的开发阶段吧!
2.将窗户纸刺破
还记得大学一年级的时候,公众号才刚刚兴起。当时我兴致勃勃地注册了一个账号,设置了很多关键词自动回复,坚持推送了好几天的图文消息。但是当我真正开始研发User模式的时候,当我真正想调用一些接口的时候,我发现我似乎该学的都学了,该用的都用了,但就是串不起来,无法串起来。没有做出我想要的东西(当时用的好像是PHP),公众号之类的东西从此就被搁置了,一直拖到现在。这两天尝试了一下Python服务器配置,发现只是一层窗户纸而已。事实上,当我戳它时它就会破裂。不再像以前那样纠结和复杂。
2.1 服务器配置和Token认证
由于我们之前在SAE平台上创建了一个空的应用程序,因此我们需要做一些基本的配置工作。这次我们选择使用web.py(Python 2.7)来构建服务器。如果本地没有web.py库,可以通过pip命令(pip install web.py)安装。
之后我们需要创建一个项目并编辑基本代码如下。
config.yaml
name: wxpytest
version: 1
libraries:
- name: webpy
version: "0.36"
- name: lxml
version: "2.3.4"
...
index.wsgi
# coding: UTF-8
importos
importsae
import web
fromweixinInterface 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)
这两部分是web.py的基本配置文件。之后我们需要开始编写代码来实现微信公众平台的功能。
新建weixinInterface.py
# -*- coding: utf-8 -*-
importhashlib
import web
importlxml
import time
importos
classWeixinInterface:
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="token" #这里改写你在微信公众平台里输入的token
#字典序排序
list=[token,timestamp,nonce]
list.sort()
sha1=hashlib.sha1()
map(sha1.update,list)
hashcode=sha1.hexdigest()
#sha1加密算法
#如果是来自微信的请求,则回复echostr
ifhashcode == signature:
returnechostr
写完这三部分代码,我们就实现了最简单的微信平台认证配置。这三部分代码中唯一需要修改的是token字段,需要和你在微信平台输入的token保持一致。 (后面有机会我会详细写一下具体的认证过程,这次只列出实现过程,需要注意的是,对于认证token,我们只需要使用GET方法即可,后续的消息需要使用 POST 方法。)
这时候我们需要将代码上传到SAE平台,然后在微信平台上进行认证请求。
右键文件根目录,打开Git Bash,依次输入以下命令。在此过程中可能会要求您输入 SAE 用户名和安全密码,只需按照提示操作即可。
gitinit
git remote add sae https://git.sinacloud.com/yourapp
git add .
git commit -m 'your commit message'
git push sae master:1
然后返回公众平台的开发者页面,填写URL并填写与代码中token一致的Token。 EncodingAESKey是随机生成的,然后点击提交进行认证。如果上述步骤没有操作错误,则该步骤可以认证成功。