临渊羡鱼,不如退而结网。

大家好,我是结网客。

前言



今天为大家带来一点golang+gin框架实现微信公众号的实操,闲话不多说。翠花,上干货~!

准备工作

俗话说“兵马未动,粮草先行”。实操开始前,咱们得先把准备工作做好

1:注册一个微信服务号,地址

2:微信服务号经过企业认证

3:购买域名

配置公众号后台

公众号后台配置服务器信息



1:开发者ID(AppID)、开发者密码(AppSecret)这两个是平台分配,开发需要使用,最好在代码中定义为常量

2:IP白名单,设置自己的服务器地址

3:服务器地址(URL)设置成自己购买的域名:https://你自己的域名/wx。注意:/wx是官方要求路径,端口号固定使用80端口。

4:令牌(Token)自己设置,用来校验微信公众号是否接入成功

5:消息加密方式和消息加密密钥,字面意思。为了方便演示,这里我选择不加密。

后台配置工作完成,现在开始动手撸代码


开始动手

1:服务器接入验证

官方要求验证你的服务器是不是你在后台填写的服务器,所以呢,官方会在你的服务器启动时,向你发送一个加密字符串,然后要求你判断这个字符串是否和你自己生成的加密字符串一致。流程图如下:



上代码


2:获取Access_token



官方平台介绍access_token有7200秒,也就是2个小时的时效性,所以建议我们开发者需要保存access_token,并且还要提供定时刷新机制。

获取access_token接口和参数如下:



首先定义一个access_token管理结构:

接着获取access_token

最后,启动一个定时器,负责定时刷新access_token


3:自定义菜单

自定义菜单接口可实现都都中类型的按钮,这里我们就已点击事件为例

首先需要定义一个菜单结构的json结构,然后以POST请求的方式将json结构发送给微信服务器


4:回应

当用户和微信公众号进行交互时,微信服务器会将信息、事件转发到开发者的服务器上,以xml格式转发数据,格式如下:


文本格式


点击菜单事件

我们可以把微信服务器发送给我们的字段整理到一个结构中,这样就不需要每一种类型定义一个结构

接着就收到的消息做出反馈

这里收到“置顶公众号”文本,我们将主动向用户推送一张图片,这张图片我们可以在后台上传,并通过api获取到media_id。

同时我们收到不同的文本内容,向用户返回相应的内容,具体返回哪些内容,就需要你来实现。


结语

利用gin web框架我们可以轻松的实现一个简单的微信公众号服务器,当然还有一些比较花式的功能,例如:用户定时提醒、用户数据分析等等,我们留待后边来分享。

您的点赞、收藏是我坚持的动力,感谢您的支持!