admin 2026-03-01 10:13:52 活动信息

公众号关注/订阅事件

微信公众号开发之关注事件(订阅事件),当我们启用开发者设置后,微信本身的消息回复将无法使用,那么在用户关注我们公众号的时候就没有任何反馈了, 对用户体验是非常不友好的。下面教大家如果做关注事件,既用户关注公众号,系统给用户一个反馈。

一、公众号要求

1、认证

认证是指每年向腾讯提交认证资质(300元认证费的那个东西);

2、订阅号(企业)、服务号

类型可在登录公众号后右上角查看;

3、具备开发资质

会编写代码,或拥有开发技术人员;

4、拥有服务器

能够运行的服务器(配置无要求);

二、开发步骤

1、配置服务器

登录公众号、点击左侧“开发“->”基本设置”,填写“服务器配置”,填写服务器地址、令牌、加密方式;

2、校验token

关于如何进行token验证,请阅读:微信公众号token验证

3、判断请求类型

三、实例代码

token验证

代码语言:javascript复制/**

* 服务器token校验

*/

public function token()

{

//获得参数 signature nonce token timestamp echostr

$nonce = input('get.nonce');

$token = 'shenlin';

$timestamp = input('get.timestamp');

$echostr = input('get.echostr');

$signature = input('get.signature');

//形成数组,然后按字典序排序

$array = [$nonce, $timestamp, $token];

sort($array);

//拼接成字符串,sha1加密 ,然后与signature进行校验

$str = sha1(implode($array));

if($str == $signature && $echostr) {

//第一次接入weixin api接口的时候

echo $echostr;

exit;

}

else {

$this->reponseMsg();

}

}事件推送代码:

代码语言:javascript复制/**

* 接收事件推送并回复

*/

public function reponseMsg()

{

//1.获取到微信推送过来post数据(xml格式)

$postArr = file_get_contents("php://input");

//2.处理消息类型,并设置回复类型和内容

$postObj = simplexml_load_string($postArr);

//判断该数据包是否是订阅的事件推送

if(strtolower($postObj->MsgType) == 'event') {

//如果是关注 subscribe 事件

if(strtolower($postObj->Event == 'subscribe')) {

//回复用户消息(纯文本格式)

$toUser = $postObj->FromUserName;

$fromUser = $postObj->ToUserName;

$time = time();

$msgType = 'news';

$ArticleCount = 1;

$Title = '我是图文内容的标题';

$Description = '我是图文内容的简介';

$PicUrl = '我是图文内容的封面路径';

$Url = '我是图文内容的链接地址';

$template = "

%s

%s

<![CDATA[%s]]>

";

$info = sprintf($template, $toUser, $fromUser, $time, $msgType, $ArticleCount, $Title, $Description, $PicUrl, $Url);

echo $info;

}

}

//如果是发送文本消息,则返回此消息

if(strtolower($postObj->MsgType) == 'text') {

$template = "

%s

";

$fromUser = $postObj->ToUserName;

$toUser = $postObj->FromUserName;

$time = time();

$msgType = 'text';

echo sprintf($template, $toUser, $fromUser, $time, $msgType, '发送的信息是:'.$postObj->Content);

}

}后续将继续更新,敬请期待!