专栏首页北京马哥教育用 Python 进行微信公众号开发

用 Python 进行微信公众号开发

作者 crystaleone | 职位 马哥教育金牌助教

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

基础背景介绍

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

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

微信公众号说明: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_main&id=mp1445241432

正文开始

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

接入微信公众平台

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

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

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

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

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

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

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

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

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

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

运行代码:

python wechat.py

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

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

示例一:简单文本信息

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

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

python代码:

运行代码:

python wechat.py

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

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

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

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

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

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

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

说明: 此代码需要在本地虚拟机上和阿里云主机上同时运行,进行相关测试; 本地运行后,在本地浏览器访问,(目的是为了生成二维码): http://192.168.1.250:8000/qrcode?sid=8000

然后,会生成二维码,这时再用微信扫描改二维码:

手机微信扫描上面的二维码后,会显示:您扫描是的8000。

这就简单实现了扫描带参数的二维码后,可自定义深入的开发;如根据,把参数定义成不同的内容,根据二维码参数,来识别出不同的内容,等等。

更多深入功能还不会,用时再借鉴吧。

本文分享自微信公众号 - 马哥Linux运维(magedu-Linux),作者:crystaleone

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-05-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 实战:基于Python构建运维自动化平台

    导语: 今天与大家一起探讨如何基于Python构建一个可扩展的运维自动化平台,也希望能与大家一起交流,共同成长。 此次分享将通过介绍OMServer、OMana...

    小小科
  • 10个方法助你轻松完成Linux系统恢复

    在Linux中有一些应用程序可以帮助你保存系统快照。大多数应用程序都是针对于新手的,并不需要高级的Linux操作技巧。我们在这里挑选了10个,你可以从中选择适合...

    小小科
  • 小白用Python | 十分钟Python玩微信教程

    代码放在这里: wzyonggege/python-wechat-itchat 词云那里可以换成小黄人图片 ? ------------------------...

    小小科
  • 搜狗微信公众号查询,论成败太早

    搜狗微信公众号查询推出后,引发巨量关注,就像微信每次的动作一样。有人说微信SEO马上就成为一门新生意,有人说微信自媒体们的外衣被扒光了,甚至还有人说微信公众号...

    罗超频道
  • 用 Python 进行微信公众号开发

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

    马哥linux运维
  • 企业号还是企业微信?明年这将不是问题

    T客汇官网:tikehui.com 撰文| 李哲 ? 昨天,微信公开课讲师卢青伟在2017微信公开课PRO版上公布了企业微信新版本的几大特性,以及对企业微信未来...

    人称T客
  • 为什么我们对微信如此依赖?

    之所以大家对微信有如何强烈的依赖,这是社交软件的关键属性所在,从心理上讲大家都喜欢先入为主,特别是已经习惯于在一个熟悉的环境下工作,切换起来的难度就会非常大,微...

    程序员互动联盟
  • 微信公众号输入关键字回复WordPress搜索结果

    我是使用这个插件(微信机器人高级版)实现微信公众号输入关键字回复WordPress搜索结果的。

    lollipop72
  • 2020,微信一下,马上ToB

    2020微信公开课PRO上,张小龙说微信很长一段时间都在思考怎么做,而现在的重点则是做什么。从公开课上的分享来看,微信接下来要做的自然很多,但概括来讲无非还是T...

    曾响铃
  • 微信支付正在以280%的速度扩散!你拖后腿了吗?

    微信,并不是第一个被我们熟知的社交软件 更不是第一个侵占了我们生活社交的APP 已经逐步渗透到我们的工作生活中 有人说 卸载微信,是你和世界永别的方式 侧面反映...

    企鹅号小编

扫码关注云+社区

领取腾讯云代金券