首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >公众号关注/订阅事件-微信公众号开发

公众号关注/订阅事件-微信公众号开发

作者头像
申霖
发布于 2019-12-27 09:37:26
发布于 2019-12-27 09:37:26
8.5K00
代码可运行
举报
文章被收录于专栏:小白程序猿小白程序猿
运行总次数:0
代码可运行

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

一、公众号要求

1、认证

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

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

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

3、具备开发资质

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

4、拥有服务器

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

二、开发步骤

1、配置服务器

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

2、校验token

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

3、判断请求类型

三、实例代码

token验证

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * 服务器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
代码运行次数:0
运行
AI代码解释
复制
/**
 *  接收事件推送并回复
 */
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     = "<xml>
                            <ToUserName><![CDATA[%s]]></ToUserName>
                            <FromUserName><![CDATA[%s]]></FromUserName>
                            <CreateTime>%s</CreateTime>
                            <MsgType><![CDATA[%s]]></MsgType>
                            <ArticleCount>%s</ArticleCount>
                            <Articles>
                            <item>
                            <Title><![CDATA[%s]]></Title>
                            <Description><![CDATA[%s]]></Description>
                            <PicUrl><![CDATA[%s]]></PicUrl>
                            <Url><![CDATA[%s]]></Url>
                            </item>
                            </Articles>
                        </xml>";
            $info         = sprintf($template, $toUser, $fromUser, $time, $msgType, $ArticleCount, $Title, $Description, $PicUrl, $Url);
            echo $info;
        }
    }
    //如果是发送文本消息,则返回此消息
    if(strtolower($postObj->MsgType) == 'text') {
        $template = "<xml>
                <ToUserName><![CDATA[%s]]></ToUserName>
                <FromUserName><![CDATA[%s]]></FromUserName>
                <CreateTime>%s</CreateTime>
                <MsgType><![CDATA[%s]]></MsgType>
                <Content><![CDATA[%s]]></Content>
            </xml>";
        $fromUser = $postObj->ToUserName;
        $toUser   = $postObj->FromUserName;
        $time     = time();
        $msgType  = 'text';
        echo sprintf($template, $toUser, $fromUser, $time, $msgType, '发送的信息是:'.$postObj->Content);
    }
}

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-04-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
微信公众号三方平台开发【代微信公众号接收消息事件并响应】
今天要讲的是代微信公众号接收消息并进行回复,这里要用到的就是咱们之前在微信公众号三方平台开发【帐号注册、平台创建】里写到的“公众号消息与事件接收URL”,在接收的目标方法里,我们首先要获取到微信推送过来post数据(xml格式),然后对其进行解密操作,从而得到消息内容。
用户2619822
2022/06/10
1.1K0
php实现自动回复消息(网上教程有大坑,慎用)
废话不多说,直接上代码 define("TOKEN", config("wx_token")); $wechatObj = new Wxapi(); if (isset($_GET['echostr'])) { $wechatObj->valid(); }else{ $wechatObj->responseMsg(); } class Wxapi { /** * 微信公众号验证 */ public function valid() { $echoStr = $_GET["ec
黄啊码
2022/05/10
8600
微信公众号-开发者-自定义菜单-CLICK事件处理
  想点击菜单,推送消息。功能很简单,坑了我一天时间。在此笔记。 菜单代码: { "button":[ { "type":"click", "name":"今日歌曲", "key":"V1001_TODAY_MUSIC" }, { "name":"菜单", "sub_button":[ { "t
deepcc
2018/05/16
1.6K0
微信公众平台开发教程(二) 基本原理及消息接口
微信服务器就相当于一个转发服务器,终端(手机、Pad等)发起请求至微信服务器,微信服务器,然后将请求转发给自定义服务(这就里就是我们的具体实现)。
Java架构师必看
2021/05/19
1.1K0
Python开发微信公众号后台(系列一)
專 欄 ❈ 段晓晨,写过一点爬虫,写过几篇文章。能力虽有限,会尽量把想说的东西讲清楚。 知乎ID:段小草 知乎专栏:小段同学的杂记, https://zhuanlan.zhihu.com/666666❈—— 通过这一系列的文章,我们来介绍一下如何用Python开发微信公众号的后台。 主要工具:SAE+微信公众号+Git+Python本地环境(最好已经安装好了Git并配置好了Python IDE,比如Pycharm) 1. 工欲善其事 首先要简单介绍一下一些准备工作。 1.1 微信公众号 第一步是要注册一个
Python中文社区
2018/01/31
6K0
Python开发微信公众号后台(系列一)
WeLM简介及微信公众号开发
我的公众号后台设置了关键词自动回复,但是经常收到很多读者打错别字,导致无法触发,正巧,前段时间刚申请到WeLM的使用权限,于是就想着给公众号升级一下。
zstar
2022/11/14
2.9K0
WeLM简介及微信公众号开发
微信开发--微信公众号(一)
1.在新浪云服务器的仓库里新建PHP文件,右键url访问,复制url地址在 微信测试账号的 接口配置信息里,Token 随便起一个 (好记的)名字
生南星
2019/07/22
23K0
微信开发--微信公众号(一)
微信公众平台百度天气预报开发
1.登录百度ak申请: http://lbsyun.baidu.com/apiconsole/key
SmileNicky
2019/01/17
1.2K0
巧用 Serverless,轻松搭建微信公众号的智能后台服务
一般来说,想给微信公众号增加更多的功能,需要有一台服务器,来进行公众号后台服务的搭建。那么在 Serverless 架构下,是否有更简便的方法来实现这么一个公众号后台呢?我们试试? 初步搭建 一、Serverless 原生开发 首先要有一个微信公众号! 接下来,我们要为我们的函数计算服务申请固定 IP: 点击白名单之后,我们可以填写表单,完成固定公网出口 IP 的申请。 接下来进行代码开发。 将函数绑定到公众号后台,并按照文档在函数中完成一个基本的鉴定功能: def checkSignature(
腾讯云serverless团队
2020/05/22
3.8K0
微信公众平台开发接口PHP SDK完整版
官方提供的SDK只有一个文本消息功能,我们将所有消息的消息类型及事件响应都整理了进来,并且加入日志记录,代码如下: 更新日志: 2013-01-01 版本1.0 2014-03-15 增加图片、视频、
joshua317
2018/04/10
2.7K0
【黄啊码】php结合微信公众号实现裂变海报(基本技术点)
微信公众号裂变式营销代码实现,先讲下基础原理,先生成带有用户参数的二维码,然后用php自带的gd库处理,生成带有用户头像,昵称,参数二维码,营销信息的自定义图片,再将图片传入微信公众号临时素材,当其他用户扫描这个专属推荐码的时候,获取用户的昵称返回给推荐者,并存入数据库,以记录当前有多少人扫描了二维码。
黄啊码
2022/06/15
9960
独立开发微信公众号服务的一次复盘
上篇文章主要分享了异步编程的一些经验。主要包括回调函数,发布订阅,Promise,async await以及yield关键字。
terrence386
2022/07/14
4740
独立开发微信公众号服务的一次复盘
php-微信公众号与新浪sae接口代码
定义TOKEN,开发启用时用到; 定义一个wechatCallbackapiTest()的类; 验证消息确实来自微信服务器; 接受原始的xml数据包; 封装你想发送的xml数据返回给用户;
kdyonly
2023/03/03
5270
微信公众号平台开发测试怎么做_软件测试怎么测小程序
公众账号需要根据不同微信用户的不同消息做出不同的响应,所以每一个公众账号需要开发自己独有的系统,这套系统需要运行在公网环境下,但是我们通常普通开发人员没有这个条件,所以我选择了新浪云(天真的我以为是免费的,结果花了10个小洋)。
全栈程序员站长
2022/11/17
1.8K0
微信公众号平台开发测试怎么做_软件测试怎么测小程序
相关推荐
微信公众号三方平台开发【代微信公众号接收消息事件并响应】
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档