微信小程序发送订阅消息的方法(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学习教程之第2天
Jun 15 PHP
PHP 开源AJAX框架14种
Aug 24 PHP
深入extjs与php参数交互的详解
Jun 25 PHP
PHP和javascript常用正则表达式及用法实例
Jul 01 PHP
非常全面的php日期时间运算汇总
Nov 04 PHP
WordPress中使主题支持小工具以及添加插件启用函数
Dec 22 PHP
PHP编程求最大公约数与最小公倍数的方法示例
May 29 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
Jun 13 PHP
PHP判断是否微信访问的方法示例
Mar 27 PHP
PHP文件后缀不强制为.php方法
Mar 31 PHP
PHP 代码简洁之道(小结)
Oct 16 PHP
php 的多进程操作实践案例分析
Feb 28 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
PHP5中的this,self和parent关键字详解教程
2007/03/19 PHP
php设计模式 Command(命令模式)
2011/06/26 PHP
php模仿asp Application对象在线人数统计实现方法
2015/01/04 PHP
php格式化json函数示例代码
2016/05/12 PHP
Laravel中获取路由参数Route Parameters的五种方法示例
2017/09/29 PHP
jQuery中filter(),not(),split()使用方法
2010/07/06 Javascript
离开页面时检测表单元素是否被修改,提示保存的js代码
2010/08/25 Javascript
JavaScript 小型打飞机游戏实现原理说明
2010/10/28 Javascript
js修改地址栏URL参数解决url参数问题
2012/12/15 Javascript
js string 转 int 注意的问题小结
2013/08/15 Javascript
Asp.Net alert弹出提示信息的几种方法总结
2014/01/29 Javascript
使用node.js半年来总结的 10 条经验
2014/08/18 Javascript
JS实现当前页居中分页效果的方法
2015/06/18 Javascript
在Node.js中使用HTTP上传文件的方法
2015/06/23 Javascript
jquery+css实现的红色线条横向二级菜单效果
2015/08/22 Javascript
jQuery实现产品对比功能附源码下载
2016/08/09 Javascript
修改ligerui 默认确认按钮的方法
2016/12/27 Javascript
原生JS实现小小的音乐播放器
2017/10/16 Javascript
vue实现某元素吸顶或固定位置显示(监听滚动事件)
2017/12/13 Javascript
基于layui内置模块(element常用元素的操作)
2019/09/20 Javascript
如何正确理解vue中的key详解
2019/11/02 Javascript
JavaScript实现省份城市的三级联动
2020/02/11 Javascript
[04:32]玩具屠夫中文语音节选
2020/08/23 DOTA
使用pygame模块编写贪吃蛇的实例讲解
2018/02/05 Python
Python基于pycrypto实现的AES加密和解密算法示例
2018/04/10 Python
对python csv模块配置分隔符和引用符详解
2018/12/12 Python
python 发送和接收ActiveMQ消息的实例
2019/01/30 Python
Python基于read(size)方法读取超大文件
2020/03/12 Python
印度购物网站:TATA CLiQ
2017/11/23 全球购物
Pedro官网:新加坡时尚品牌
2019/08/27 全球购物
意大利文具和办公产品在线商店:Y-Office
2020/02/27 全球购物
《钱学森》听课反思
2014/03/01 职场文书
2016寒假假期总结
2015/10/10 职场文书
2021-4-5课程——SQL Server查询【3】
2021/04/05 SQL Server
MySQL 1130异常,无法远程登录解决方案详解
2021/08/23 MySQL
索尼ICF-5900W收音机测评
2022/04/24 无线电