微信公众号开发(二)连接微信平台

  • 前言:之前的一篇文章里介绍了如何配置服务器且安装好了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请求,那就是请求未到达你的服务器。需要检查整个通讯过程了。
后记:这是我作为一个新手在研究微信公众号开发过程中蹚的各种坑,做个笔记,也希望对别人有点用处。

posted @ 2020-07-22 14:45  想不出名字2333  阅读(57)  评论(0)    收藏  举报