微信小程序发送订阅消息的方法(php 为例)


Posted in PHP onOctober 30, 2019

1、订阅消息

其实如果用过模板消息的话,改用订阅消息挺简单的,看一下官方文档稍加摸索就能使用。

但是对于那些第一次用的萌新来说,可能会遇到各种各样的坑,所以我会具体的说一下实现的过程,有经验的可以直接翻到文章底部查看 Demo。

虽然如此,但是更详细的参数描述还是需要去看官方文档,传送门:

https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/subscribe-message.html

2、准备工作

首先是要获取template_id,也就是模板 ID。

这个在小程序后台的公共模板库找到适用的模板选用,之后到我的模板中复制系统分配的模板 ID即可。如果没找到合适的,就需要自己申请模板,3 - 7 天审核期。

微信小程序发送订阅消息的方法(php 为例)

然后就是小程序的 AppId 和 AppSecret,获取方式在小程序后台的开发功能中找到开发设置,保存 ID 和秘钥。

微信小程序发送订阅消息的方法(php 为例)

这里需要注意的是AppSecret只有在第一次生成的时候会显示,之后不再明文显示,这个需要开发者自己保存好,如果泄露或者忘记密匙重置即可。

至于 openid 的获取这里就不做具体说明了。

3、授权接收

发送前需要接受者授权接收该类订阅消息,否则订阅消息是无法下发,代码很简单,调用官方的订阅接口:

wx.requestSubscribeMessage({
 tmplIds: ['template_id'], // 此处可填写多个模板 ID,但低版本微信不兼容只能授权一个
 success (res) {
  console.log('已授权接收订阅消息')
 }
})

拉起的授权框是这样的,但是截止发文之前,开发者工具是无法调用接口,只能在真机上运行,无奈。

微信小程序发送订阅消息的方法(php 为例)

4、下发订阅消息

下发消息调用subscribeMessage.send ,分为云调用和 https 调用,云调用比较简单,免去了 access_token 的获取:

const cloud = require('wx-server-sdk')
cloud.init()
exports.main = async (event, context) => {
 try {
  const result = await cloud.openapi.subscribeMessage.send({
    touser: 'OPENID',
    page: 'index',
    data: {
     name3: {
      value: '我是玖柒后'
     },
     thing4: {
      value: 'Hello World!'
     },
     phrase1: {
      value: "发送成功!"
     },
     date5: {
      value: "发送成功!"
     },
     thing2: {
      value: "1024 身体健康!"
     }
    },
    templateId: 'TEMPLATE_ID'
   })
  console.log(result)
  return result
 } catch (err) {
  console.log(err)
  return err
 }
}

然后在服务器端发起请求,请求地址:

https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=token

在这之前先获取小程序全局唯一后台接口调用凭据(access_token),这就用到了之前保存的 AppId 和 AppSecret。

// 小程序 appID 和 appSecret 获取 token
function getAccessToken($appid, $appsecret)
{
 $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . $appid . '&secret=' . $appsecret;
 $html = file_get_contents($url);
 $output = json_decode($html, true);
 $access_token = $output['access_token'];
 return $access_token;
}

虽然看起来稍微有点复杂,但其实也只要向服务器发送一个请求就可以了,获取和调用都由服务器处理,收到的消息和模板消息差不多。

微信小程序发送订阅消息的方法(php 为例)

总结

以上所述是小编给大家介绍的微信小程序发送订阅消息的方法(php 为例),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

PHP 相关文章推荐
php 读取文件乱码问题
Feb 20 PHP
php中的boolean(布尔)类型详解
Oct 28 PHP
CI(CodeIgniter)框架配置
Jun 10 PHP
php读取der格式证书乱码解决方法
Jun 22 PHP
PHP函数实现从一个文本字符串中提取关键字的方法
Jul 01 PHP
smarty自定义函数用法示例
May 20 PHP
PHP实现页面静态化的超简单方法
Sep 06 PHP
php foreach如何跳出两层循环(详解)
Nov 05 PHP
Zend Framework处理Json数据方法详解
Dec 09 PHP
PHP运用foreach神奇的转换数组(实例讲解)
Feb 01 PHP
PHP实现与java 通信的插件使用教程
Aug 11 PHP
thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结
Oct 10 PHP
php上传后台无法收到数据解决方法
Oct 28 #PHP
PHP常见的序列化与反序列化操作实例分析
Oct 28 #PHP
PHP接入微信H5支付的方法示例
Oct 28 #PHP
PHP判断当前使用的是什么浏览器(推荐)
Oct 27 #PHP
php+layui数据表格实现数据分页渲染代码
Oct 26 #PHP
layui数据表格自定义每页条数limit设置
Oct 26 #PHP
在 Laravel 中动态隐藏 API 字段的方法
Oct 25 #PHP
You might like
php读取数据库信息的几种方法
2008/05/24 PHP
比较简单的百度网盘文件直链PHP代码
2013/03/24 PHP
PHP实现更新中间关联表数据的两种方法
2014/09/01 PHP
php实现XML和数组的相互转化功能示例
2017/02/08 PHP
Code:findPosX 和 findPosY
2006/12/20 Javascript
jquery弹出关闭遮罩层实例
2013/08/06 Javascript
AngularJS中的模块详解
2015/01/29 Javascript
js控制文本框只输入数字和小数点的方法
2015/03/10 Javascript
jquery实现图片左右切换的方法
2015/05/07 Javascript
理解javascript中的原型和原型链
2015/07/30 Javascript
jQuery解决IE6、7、8不能使用 JSON.stringify 函数的问题
2016/05/31 Javascript
利用Bootstrap实现表格复选框checkbox全选
2016/12/21 Javascript
Bootstrap源码解读下拉菜单(4)
2016/12/23 Javascript
详解使用fetch发送post请求时的参数处理
2017/04/05 Javascript
JavaScript之filter_动力节点Java学院整理
2017/06/28 Javascript
详解nodejs 开发企业微信第三方应用入门教程
2019/03/12 NodeJs
使用Promise封装小程序wx.request的实现方法
2019/11/13 Javascript
微信JSSDK实现打开摄像头拍照再将相片保存到服务器
2019/11/15 Javascript
JavaScript canvas动画实现时钟效果
2020/02/10 Javascript
使用nodejs实现JSON文件自动转Excel的工具(推荐)
2020/06/24 NodeJs
[45:44]完美世界DOTA2联赛PWL S2 FTD vs PXG 第一场 11.27
2020/12/01 DOTA
Python开发的实用计算器完整实例
2017/05/10 Python
Python基础学习之常见的内建函数整理
2017/09/06 Python
Python设计模式之工厂模式简单示例
2018/01/09 Python
numpy.std() 计算矩阵标准差的方法
2018/07/11 Python
python递归函数求n的阶乘,优缺点及递归次数设置方式
2020/04/02 Python
使用matplotlib动态刷新指定曲线实例
2020/04/23 Python
荷兰鞋类购物网站:Donelli
2019/05/24 全球购物
如果一个类实现了多个接口但是这些接口有相同的方法名将会怎样
2013/06/16 面试题
.NET现在共支持多少种语言
2014/02/26 面试题
甜美蛋糕店创业计划书
2014/01/30 职场文书
工作迟到检讨书范文
2015/05/06 职场文书
2015年小学数学教师个人工作总结
2015/05/25 职场文书
电影雷锋观后感
2015/06/10 职场文书
Nginx + consul + upsync 完成动态负载均衡的方法详解
2021/03/31 Servers
SQL 聚合、分组和排序
2021/11/11 MySQL