前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP版小程序添加订阅消息详细教程

PHP版小程序添加订阅消息详细教程

作者头像
田小檬
发布2022-08-30 17:05:35
4760
发布2022-08-30 17:05:35
举报
文章被收录于专栏:田小檬博客

本文最后更新于2022年06月13日,已超过0天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!

今天给大家写一个PHP版小程序添加订阅消息详细教程,比较简单,只是单纯的为了实现功能而写的,什么框架都没有使用,单纯的PHP代码。

PHP版小程序添加订阅消息详细教程

创建订阅消息id

直接在小程序后台添加订阅消息就可以获取到小程序ID了,如果没有合适的模板,可以申请添加新模板,审核通过后可使用。

获取下发权限

获取下发权限属于前端内容,只需要调用订阅消息API就可以了,代码如下:

代码语言:javascript
复制
wx.requestSubscribeMessage({
  tmplIds: ['xxxxxxxxx'],  //订阅消息ID
  success(res) {
  console.log('已授权接收订阅消息')
   }
})

注:各个平台方法类似,只是API前缀不同而已,如果是QQ小程序就改为qq.requestSubscribeMessage,抖音小程序同理。在获取下发权限之前,需要先获取到用户的openID,因为订阅消息是根据用户openID来发送的。

下发订阅消息

原理和uniapp云开发是一样的,首先获取到订阅消息的接口调用凭证,也就是access_token,然后再下发订阅消息。

获取接口凭证

这里我直接写成了一个函数,只需要access_token了,代码如下:

代码语言:javascript
复制
function getAccesscode()
 {
  $appid = "xxxxxx";  //小程序appid
  $secret = "xxxxxxxxxxxx"; //小程序secret
  $url = sprintf('https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s', $appid, $secret);
  $info = file_get_contents($url);
  $json = json_decode($info);
  $arr = get_object_vars($json);
  $accesscode = $arr['access_token'];
  return $accesscode;
 }

填写上小程序的appid和secret就可以直接使用了,获取到接口凭证之后就可以进行最后的下发订阅消息了。

下发订阅消息

由于PHP使用file_get_contents进行post请求,性能不加,而且还会出现一下意想不到的bug,所以这里我采用了curl方式进行post请求,代码封装完整(php不太熟练,封装函数网上找的)。代码如下:

代码语言:javascript
复制
function curlPost($url,$data)
 {
     $ch = curl_init();
     $params[CURLOPT_URL] = $url;    //请求url地址
     $params[CURLOPT_HEADER] = FALSE; //是否返回响应头信息
     $params[CURLOPT_SSL_VERIFYPEER] = false;
     $params[CURLOPT_SSL_VERIFYHOST] = false;
     $params[CURLOPT_RETURNTRANSFER] = true; //是否将结果返回
     $params[CURLOPT_POST] = true;
     $params[CURLOPT_POSTFIELDS] = $data;
     curl_setopt_array($ch, $params); //传入curl参数
     $content = curl_exec($ch); //执行
     curl_close($ch); //关闭连接
     return $content;
 }

然后就可以进行最后的post请求了,代码如下:

代码语言:javascript
复制
$accesscode = getAccesscode();
$subscribeUrl = 'https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token='.$accesscode;
    $data = [] ;
    $data['touser'] = 'xxxxxxxxxx'; //用户openid
    $data['template_id'] = 'xxxxxxxxx';//订阅消息模板id
    $data['page'] = "/pages/index/index";
    $data['miniprogram_state'] = 'developer';
    $data['data'] = [
        "thing2"=>[
            'value' => '测试推送'
        ],
        "date1"=>[
            'value' => '2022年06月11日'
        ]
    ];
return curlPost($subscribeUrl,json_encode($data));

以上就是一套可以完整的使用订阅消息的方案,其中data的数据最好就是按照我写的方式去写,不然会出现很多意想不到的问题,昨天两次都是因为这个post参数弄了半天,明明json验证都正确,可是就是格式不对,所以这里给大家整理出来,也少走弯路。

不过这只是简单的单个订阅消息发送,大家如果需要应用到小程序中,还需要进行一下简单的修改,例如通过什么方式给每个已经订阅的用户发送,小程序用户openid如何去获取等问题,以后会给大家写一下相关的教程。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 创建订阅消息id
  • 获取下发权限
  • 下发订阅消息
    • 获取接口凭证
      • 下发订阅消息
      相关产品与服务
      云开发 CloudBase
      云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档