首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >PHP 对接微信公众号订阅消息详细教程

PHP 对接微信公众号订阅消息详细教程

原创
作者头像
CRMEB商城源码
发布于 2022-06-02 03:04:56
发布于 2022-06-02 03:04:56
1.8K02
代码可运行
举报
文章被收录于专栏:crmebcrmeb
运行总次数:2
代码可运行

订阅通知是一个用户主动订阅、服务号按需下发的通知能力。使用过程请遵守《微信公众平台服务协议》《微信公众平台运营规范》。 用户在前述场景主动订阅后,服务号可通过接口向用户发送订阅通知,如信用卡动账提醒、物流到货通知等。订阅通知分为一次性订阅和长期订阅,一次性订阅是指用户订阅一次,服务号可不限时间地下发一条对应的订阅通知;长期订阅是指用户订阅一次,服务号可长期多次下发通知,长期订阅通知仅向政务民生、医疗等公共服务领域开放。

微信订阅消息和微信模版消息的区别在于模版消息可以无视用户的主观意识,直接发给用户;而订阅消息则必须用户同意系统才能发给用户。这样避免了给用户带来的骚扰。

因为微信有打算使用订阅消息来取代模版消息,所以知识付费新增了订阅消息功能,知识付费系统可以选择使用模版消息还是订阅消息。下面我们就来看看知识付费是如何加订阅消息功能的。

知识付费订阅消息如何添加呢?

第一步:公众号添加订阅消息

图片1.png
图片1.png
图片2.png
图片2.png
图片3.png
图片3.png
图片4.png
图片4.png
图片5.png
图片5.png

第二步:对照我们知识付费后台的订阅消息添加订阅消息

图片6.png
图片6.png
图片7.png
图片7.png
图片8.png
图片8.png
图片9.png
图片9.png
图片10.png
图片10.png
图片11.png
图片11.png

第三步:代码里添加订阅消息

知识付费根目录下 extend\service\RoutineTemplateService

图片12.png
图片12.png

添加新的订阅消息

添加发送方法:

图片13.png
图片13.png

例如下面的方法:

public static function sendOrderSuccess(array $data, $uid, $link = '')

{

代码语言:txt
AI代码解释
复制
RoutineTemplateService::sendTemplate(WechatUser::uidToOpenid($uid), RoutineTemplateService::setTemplateId(RoutineTemplateService::ORDER_PAY_SUCCESS), $link, $data);

}

发送订阅消息

$data'character_string1' = $orderId;

$data'amount3' = $order'pay_price';

$data'time2' = date('Y-m-d H:i:s', time());

$data'thing6' = '您购买的资料已支付成功!';

RoutineTemplate::sendOrderSuccess($data, $order'uid', $site_url . Url::build('wap/material/my_material'));

第四步:前端用户触发订阅消息

通过微信文档,我们可以看到微信公众号的订阅消息是通过 wx-open-subscribe 标签来调起选择的。如下事例:

<wx-open-subscrib template="TenvU22BA1jCp4YHfYEpRuESXYReQyDuhs4vbdWA99I" id="subscribe-btn">

<script type="text/wxtag-template" slot="style">

代码语言:txt
AI代码解释
复制
<style>
代码语言:txt
AI代码解释
复制
  .subscribe-btn {color: #fff;background-color: #07c160;}
代码语言:txt
AI代码解释
复制
</style>

</script>

<script type="text/wxtag-template">

代码语言:txt
AI代码解释
复制
<button class="subscribe-btn">
代码语言:txt
AI代码解释
复制
  一次性模版消息订阅              
代码语言:txt
AI代码解释
复制
</button>

</script>

</wx-open-subscribe>

<script>

var btn = document.getElementById('subscribe-btn');

btn.addEventListener('success', function (e) {

console.log('success', e.detail);

});

btn.addEventListener('error',function (e) {

console.log('fail', e.detail);

});

</script>

根据事例我们可以了解使用 wx-open-subscribe 标签给 template 属性传入你需要弹出的订阅消息模板 ID 即可,多个以英文逗号分隔。

通过下面的方法获得需要的订阅消息模板 ID;

图片14.png
图片14.png

下面的方法中加触发时返回的订阅消息模板 ID

图片15.png
图片15.png

源码附件已经打包好上传到百度云了,大家自行下载即可~

链接: https://pan.baidu.com/s/14G-bpVthImHD4eosZUNSFA?pwd=yu27

开源地址

码云地址:

http://github.crmeb.net/u/defu

Github 地址:

http://github.crmeb.net/u/defu

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
暂无评论
推荐阅读
Go 语言常见错误——字符串
在 Go 语言中,字符串是最常见的数据类型之一,广泛用于处理文本数据。然而,许多开发者在操作字符串时容易犯一些常见错误,导致程序运行异常或性能问题。例如,字符串的不可变性、拼接操作的效率问题以及对字符编码的误解等,都是新手容易忽视的地方。
FunTester
2025/03/10
1320
Go 语言常见错误——字符串
Go 开发中strings库的trim函数详解
Go 语言的 strings 包中的 trim 相关函数为我们提供了灵活的字符串裁剪功能。通过熟练掌握这些函数,我们可以在开发过程中更高效地处理字符串,提升代码的简洁性和可读性。
运维开发王义杰
2023/09/09
3.6K0
Go 开发中strings库的trim函数详解
【Go 基础篇】Go 语言字符串函数详解:处理字符串进阶
大家好!继续我们关于Go语言中字符串函数的探索。字符串是编程中常用的数据类型,而Go语言为我们提供了一系列实用的字符串函数,方便我们进行各种操作,如查找、截取、替换等。在上一篇博客的基础上,我们将继续介绍更多字符串函数的用法和示例。(*^_^*)💕💕💕💕
繁依Fanyi
2023/10/12
7370
【Go 基础篇】Go 语言字符串函数详解:处理字符串进阶
Go 字符串处理
因为字符串类型在Go中是不可改变的,因此每次操作实际都要新分配字符串,所以在字符串比较多的时候效率不高。
孤烟
2020/09/27
8040
Go错误集锦 | 字符串底层原理及常见错误
string是Go语言的基础类型,在实际项目中针对字符串的各种操作使用频率也较高。本文就介绍一下在使用string时容易犯的一些错误以及如何避免。
Go学堂
2023/01/31
4010
Golang语言社区--标准库strings包讲解
大家好,我是Golang语言社区主编彬哥,本篇文章是给大家转载关于标准库strings包的知识。
李海彬
2018/03/13
2.3K0
Golang语言社区--标准库strings包讲解
Go语言中的字符串
Go语言中的字符串也可以使用比较操作符 <, <=, ==, !=, >, >=。具体比较方法是将字符串转化成的字节数组中的字节逐一比较。
宅蓝三木
2024/10/09
1360
100 个 Go 错误以及如何避免:5~8
我们将在本章中看到 Go 有一个非常独特的处理字符串的方法。Go 引入了一个概念叫做符文;这个概念对于理解是必不可少的,可能会让新手感到困惑。一旦我们知道了字符串是如何被管理的,我们就可以避免在字符串上迭代时的常见错误。我们还将看看 Go 开发者在使用或生成字符串时所犯的常见错误。此外,我们会看到有时我们可以直接使用[]byte工作,避免额外的分配。最后,我们将讨论如何避免一个常见的错误,这个错误会造成子字符串的泄漏。本章的主要目的是通过介绍常见的字符串错误来帮助你理解字符串在 Go 中是如何工作的。
ApacheCN_飞龙
2023/10/13
1K0
100 个 Go 错误以及如何避免:5~8
(二十一)golang--字符串中的函数
(5)字符串转[]bytes:var bytes = []byte("hello")
西西嘛呦
2020/08/26
6920
Go语言3
字符串替换,对原始字符串str进行替换,把原始的old替换成new。 最后一个n是替换的次数,如果 n<0 则替换所有。一般就-1。
py3study
2020/01/07
6040
【转】Go语言---strings包(字符串操作)
字符串求长度 求子串 是否存在某个字符或者子串 子串出现的次数(字符串匹配) 字符串分割(切分)成[]string 字符串是否存在某个前缀或后缀 字符或者子串在字符串中首次出现的位置或最后一次出现的位置 通过某个字符串将[]string进行拼接 字符串重复次数 字符串中子串替换 大小写转换 ......................等等一些基本操作。 由于string类型可以看成是一种特殊的slice类型,因此获取长度可以用内置的函数len;同时支持 切片 操作,因此,子串获取很容易。
yiduwangkai
2019/09/17
1K0
Go 编程 | 连载 04 - 字符与字符串类型
Go 默认使用 Unicode 字符集并使用 UTF-8 作为编码方式。Go 中没有字符类型,而是使用 byte 类型和 rune 类型来表示字符。
RiemannHypothesis
2022/09/26
3210
Go 编程 | 连载 04 - 字符与字符串类型
『Go 内置库第一季:strings』
这一季的系列主题,主要围绕内置库进行。如果一个人写的代码比你的赞,那么他对内置库的熟悉程度一定比你强。
谢伟
2018/12/05
4960
Go 中的坑
defer 执行顺序是先进后出,栈的方式 FIFO ,参数的值在 defer 语句执行就已经确定了
王小明_HIT
2021/07/05
5790
Go字符串
字符串 字符集用来做什么 字符集是为每个字符分配一个唯一的ID 在同一个字符集内,字符的ID是唯一的,不同字符集ID可能是不同的 UTF-8是编码规则或者说是Unicode的一种实现 UTF-8将Unicode中的字符ID以某种方式进行编码 变长的编码规则: 1-4字节,具体规则: 0xxxx表示0~127代表ascii Go语言中的字符串内部实现编码是UTF-8的,默认是rune类型 字符串是什么? 定义字符串 双引号和反引号 golang中单引号,双引号代表的含义 var ch = 'a' 代表ut
Wyc
2023/02/27
3270
Go基础——字符串
字符串结构由两个信息组成:第一个是字符串指向的底层字节数组,第二个是字符串的字节的长度。字符串其实是一个结构体,因此字符串的赋值操作也就是reflect.StringHeader结构体的复制过程,并不会涉及底层字节数组的复制。在前面数组一节提到的[2]string字符串数组对应的底层结构和[2]reflect.StringHeader对应的底层结构是一样的,可以将字符串数组看作一个结构体数组。 我们可以看看字符串“Hello, world”本身对应的内存结构:
羊羽shine
2019/05/28
5590
一文了解 Go 标准库 strings 常用函数和方法
strings 库包含了许多高效的字符串常用操作的函数和方法,巧用这些函数与方法,能极大的提高我们程序的性能。下面介绍一些常用的函数和方法。
陈明勇
2023/10/15
6030
一文了解 Go 标准库 strings 常用函数和方法
【愚公系列】2022年08月 Go教学课程 040-字符串处理
文章目录 前言 一、字符串处理函数 1.len() 2.Atoi() 3.Itoa() 4.字符串转[]byte 5.byte[]转字符串 6.FormatInt() 7.Contains() 8.Count() 9.EqualFold() 10.Index() 11.LastIndex() 12.Replace() 13.Split() 14.ToLower()和ToUpper() 15.TrimSpace() 16.Trim() 17.HasPrefix() 18.join() 19.Repeat(
愚公搬代码
2022/09/21
3090
Go 从入门到精通(三)字符串,时间,流程控制,函数
coders
2018/01/04
7000
2018年Go语言实战笔记2string字符串处理time时间处理指针strconv 类型转换rand 随机数函数几个实例
接触一门新语言,了解其语法结构,常用的包是必须的,同时也是无聊的。有过其他编程语言基础的同学,学习go的语法很简单,参照 go文档 过一遍就能对go的语法有大致的了解。通过 go包文档 查阅常用包的使用
章鱼喵
2018/08/02
3920
2018年Go语言实战笔记2string字符串处理time时间处理指针strconv 类型转换rand 随机数函数几个实例
推荐阅读
相关推荐
Go 语言常见错误——字符串
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验