微信公众号开发(二)连接微信平台
- 前言:之前的一篇文章里介绍了如何配置服务器且安装好了Java 1.8、Python 2.7和Web.py框架,再次提醒,不同的软件版本有可能有不同的步骤,这一点上有很多坑,请读者注意。如果遗忘,可以再去看一下上一篇文章:https://blog.csdn.net/hydz8023/article/details/107493911。
- 这篇文章将介绍如果将你的服务器跟微信连接起来。首先需要一个公众号,因为我的目的是需要做模板消息,所以我拥有一个服务号,订阅号不支持模板消息功能。
- 如果没有公众号,微信提供测试号功能,可以方便开发者在开发环境进行测试。申请地址:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login&token=1910898396&lang=zh_CN
- 现在正式开始连接服务器。
1)打开公众号后台,在网页左边点开 开发—>基本配置。
![在这里插入图片描述]()
2)启用公众号开发功能,很简单,跟着网页上指引走就可以了,不在赘述。启用后显示如下:
![在这里插入图片描述]()
你将拥有一个开发者ID。
3)配置服务器
我的服务器已经配好,大概是这样。
![在这里插入图片描述]()
点击修改配置,进入配置页面。
![在这里插入图片描述]()
至于接入步骤,这里是官方的文档:https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Access_Overview.html。
简单来说,就是微信将会发送一个get请求到你填写的URL,在你的地址中进行校验,校验通过则原样返回给微信。即表示连接成功。
首先,你需要编写服务器代码来接收并解析校验请求。
vim handle.py //创建handle.py文件,并按i进入编辑模式
# -*- coding: utf-8 -*-
# filename: handle.py
import hashlib
import web
class Handle(object):
def GET(self):
try:
data = web.input()
print(data)
if len(data) == 0:
return "hello, this is handle view"
signature = data.signature
timestamp = data.timestamp
nonce = data.nonce
echostr = data.echostr
token = "weixin" #请按照公众平台官网\基本配置中信息填写
list = [token, timestamp, nonce]
list.sort()
str = list[0] + list[1]+list[2]
print(str)
hashcode = hashlib.sha1(str.encode('utf-8')).hexdigest()
print("handle/GET func: hashcode, signature: ", hashcode, signature)
if hashcode == signature:
return echostr
else:
return ""
except (Exception, Argument):
return Argument
上面的token变量即是你公众号中的Token,可以自己设定,但两个要一样。
vim main.py //进入上篇文章编写的main.py文件,并修改其内容。
# -*- coding: utf-8 -*-
# filename: main.py
import web
from handle import Handle
urls = (
'/wx', 'Handle',
)
if __name__ == '__main__':
app = web.application(urls, globals())
app.run()
然后":wq"命令保存退出之后。执行python main.py 80命令,即表示在80端口进行监听,微信服务器的连接只能通过http或者https,也就是只能通过80端口和443端口。
现在可以测试连接了。
在基本配置界面,URL填写http://IP地址/wx。
Token填写weixin或者你自定的token,记得要在代码里修改。
EncodingAESKey随机即可,加密暂时可以选明文。
然后点击提交按钮。
如果一切顺利,则会连接成功。
如果连接不上,则需要判断了。
4)问题解析
如果你的监听程序正常运行的话,当你的80端口被访问的时候,如果你在刚运行python命令的时候,在按ctrl+z退出前,控制台会有输出信息。

如果出现这个,则表示服务器有收到get请求,那么应该是你的处理代码不对,请查看代码。如果没有收到get请求,那就是请求未到达你的服务器。需要检查整个通讯过程了。
后记:这是我作为一个新手在研究微信公众号开发过程中蹚的各种坑,做个笔记,也希望对别人有点用处。





浙公网安备 33010602011771号