今天看到篇教程,是用python开发微信公众号的,觉得有意思,就敲代码实现了一下,成功后更觉得好玩,故记录,方便开发深入时使用。

基础背景介绍

首先得有个人微信号(没有自行注册),为方便测试学习;

其次,还要注册微信公众号,微信公众号不止一种,是分多种的,具体详情见官方说明,但仅测试学习时可先不注册公众号,(需要用个人微信号扫描登陆测试公众平台)利用微信提供的测试平台接口即可:

微信公众号说明:kf.qq.com/faq/120911VrY

微信公众号注册站点:mp.weixin.qq.com/

免费测试公众平台:mp.weixin.qq.com/debug/

微信开发者文档:mp.weixin.qq.com/wiki?

正文开始

说明:最好使用公网ip主机和备案的域名进行测试,本文测试使用的阿里云主机有公网ip,域名备案遇到坑了,买了域名无法在北京阿里云上备案,所以没有使用域名。

接入微信公众平台

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

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

扫描登陆免费的微信测试平台,填写接口配置信息:


v2-2e34983aa142d9411587f0890e8778ac_hd.jpg


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

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


v2-2b0ee5033394286f178544ec8bd57b77_hd.jpg


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

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

1. signature:微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数;
2.timestamp:时间戳;
3.nonce:随机数;
4.echostr:随即字符串;

开发者通过检验signature对请求进行校验,若确认此处get请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败;

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


v2-174d1baef73759f381a49e7811ec0ae3_hd.jpg


v2-2a07e40b049d29149f69aebd68cf7037_hd.jpg


运行代码:

python wechat.py


然后,回到微信开发平台,在填写完接口配置信息后,点击提交;一切正常,提交后会显示配置成功;


v2-a8c9f0d7da24661977643d26ce106d87_hd.jpg


下面,就可以根据个人用户关注开发的公众号所要实现哪些需求和微信的api文档开发相关功能了。

示例一:简单文本信息

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

具体还要参考微信api文档:消息管理部分

python代码:

v2-fd26fb1ef3c400f29fed3d9ba5cf9bc1_hd.jpg


v2-9a4e1ebd657e4a9d53efe9ea7ce1792f_hd.jpg


v2-c2dbc3b6ad7afeb9504e8070165ad741_hd.jpg


v2-0c9c4826ef7c062d553877492ef2f546_hd.jpg


运行代码:

python wechat.py

然后,在微信公众平台上,找到测试号二维码,扫描关注后,首次关注时,手机微信客户端就会收到自动推送的信息,即显示i like python。

然后,客户端发送字符串测试回显功能:


v2-eb07519e127638e9ebc37125ea7c4b01_hd.jpg


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

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

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


v2-9c3d38c7dd984a5665ad04a6d93f8c63_hd.jpg


v2-6b1a5942341434ee2cbe0865df7a7104_hd.jpg


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

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


v2-b87263d723ae3f02bd0114674cd412df_hd.jpg


v2-a67af0687b08d41e3db135bc54d54e6f_hd.jpg


v2-6ea897a1f4d50079d700f5c82b4a76a4_hd.jpg


v2-69017a84c8a8ac7008939e07d50ed756_hd.jpg


v2-4783554f38cd0891002da591b77f2488_hd.jpg


v2-7721800c5975fdea3145acd3d707f252_hd.jpg


v2-1e8258b63257bdec0ca71750cfed98d0_hd.jpg


v2-a223d35ce1bf3f848d81146f4b8dafe6_hd.jpg


v2-c22c483c9a3d5ab80ab82c059e7828b6_hd.jpg