用Python开发微信公众号

  快应用备案     |      2023-08-27
用Python开发微信公众号

今天看到一个教程。我用python开发了一个微信公众号。我觉得很有趣,所以我输入了代码来实现它。成功后,发现更好玩,所以记录下来,以备深入开发时使用。

基础背景介绍

首先,您必须拥有个人微信账号(无需自行注册),以方便测试和学习;

其次,你需要注册一个微信公众号。微信公众号不止一个,而且种类也很多。详情请参考官方说明。但是,当您只是测试和学习时,您无法注册公众号。 platform)使用微信提供的测试平台接口:

微信公众号说明:http://kf.qq.com/faq/120911VrYVrA130805byM32u.html

微信公众号注册网址:https://mp.weixin.qq.com/

免费测试公众平台:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

微信开发者文档:https://mp.weixin.qq.com/wiki?t=resource/res_mainid=mp1445241432

正文开始

注意:最好使用公网IP主机和注册的域名进行测试。本次测试使用的阿里云主机有公网IP,域名注册遇到了坑。该域名无法在北京阿里云上注册,因此未使用该域名。

接入微信公众平台

其实,微信api接口使用,这里主要是参考官网的说明部署的,步骤有点像曾经写过的一篇用zabbix实现微信报警的配置;想玩好了,除了要对使用的哪种语言本身熟悉,还要就是熟读微信的api接口文档了。

第一步:填写服务器配置nxinx

扫描登录微信免费测试平台,填写界面配置信息:

注意:微信公众号接口只支持80端口,因此在填写url时,我使用nginx在阿里云上做了一个web服务。

阿里云主机上nginx的主要部分配置如下:

第二步:验证消息的确来自微信服务器(即验证服务器地址的有效性):

开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址url上,GET请求携带4个参数:

1.signature:微信加密签名,签名将开发者填写的token参数与请求中的timestamp参数和nonce参数结合起来; 2.timestamp:时间戳; 3.nonce:随机数; 4.echostr:立即字符串;开发者通过检查签名来验证请求。如果确认这里的get请求来自微信服务器,请原样返回echostr参数的内容,访问才会生效,成功成为开发者,否则访问失败;

在阿里云主机上编写python代码,(以tonado框架为例)实现验证:

运行代码:

复制python wechat.py然后返回微信开发平台,填写界面配置信息后点击提交;一切正常,提交后显示配置成功;

接下来可以根据个人用户开发的公众号的需求以及微信的API文档来开发相关功能。

示例一:简单文本信息

个人用户关注公众号后,用户输入一个字符串,公众号回显什么字符串;

详情请参考微信API文档:消息管理部分

蟒蛇代码:

运行代码:

复制python wechat.py 然后,在微信公众平台上,找到测试号的二维码,扫描关注,第一次关注时,手机微信客户端会收到一条自动推送消息,会显示我喜欢蟒蛇。

然后,客户端发送一个字符串来测试echo 函数:

手机关注公众号后,打开对话框,随意输入字符,回显相同的内容,则说明测试成功(仅实现了文字回显,因为微信对于不同类型的信息有不同的配置要求,如接收或发送图片、音频、视频等)。

示例二:微信自带的图片消息收发

实现发送或接收图片信息的能力,修改部分代码,其他部分不变

运行后,回到手机微信客户端,发送笑脸等图片,如果有相同的图片回显则测试成功。

示例三:扫描公众号内部生成的带参数的二维码