微信-小程序模板消息升级订阅消息调研文档
说明
小程序消息推送接口升级为订阅消息接口,订阅消息案例及相关升级代码在前边的文章中,有兴趣可以去看一下,然后忘了把调研文档传上来了,补一下吧
相关文档
升级文档:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/subscribe-message.html
小程序模板消息能力调整通知:https://developers.weixin.qq.com/community/develop/doc/00008a8a7d8310b6bf4975b635a401?blockType=1
简书:https://www.jianshu.com/p/0853e36925e3
cnblog:https://www.cnblogs.com/msunh/p/12175555.html
csdn:https://blog.csdn.net/laishaojiang/article/details/103781670
other:https://www.watch-life.net/wechat/subscribe-message.html订阅消息示例GitHub代码:https://github.com/zxliucn/miniProSubNews.git
示例图

升级原因
小程序模板消息接口将于2020年1月10日下线,开发者可使用订阅消息功能
开发版及体验版小程序1月10日后已经无法获取form_id,正式版的小程序可能延长至4月1日
小程序订阅消息Api: https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/subscribe-message.html
服务端Api:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/template-message/templateMessage.addTemplate.html
注意点
1.模板消息升级为订阅消息,是整个模块接口全部升级,不单单一个发送接口
2.订阅消息添加接口传送数据格式为x-www-from-urlencoded,文档上是json格式
3.微信开发者工具上是没法调起订阅消息弹框,需要真机调试或者发布到体验版
4.要有一个可https访问的域名,配置到开发者工具下
5.订阅消息发送数据字段长度不可超过20个字符,否则会出错,所以类似于收货地址的字段需要截取
6.订阅消息功能需要去开启
7.目前长期性订阅消息仅向政务民生、医疗、交通、金融、教育等线下公共服务开放,后期将逐步支持到其他线下公共服务业务。
https://developers.weixin.qq.com/community/develop/doc/00008a8a7d8310b6bf4975b635a401?blockType=1
订阅消息介绍
一次性订阅消息:用于解决用户使用小程序后,后续服务环节的通知问题。用户自主订阅后,开发者可不限时间地下发一条对应的服务消息;每条消息可单独订阅或退订。
订阅消息推送位置:服务通知
订阅消息下发条件:用户自主订阅
订阅消息卡片跳转能力:点击查看详情可跳转至该小程序的页面
长期性订阅消息仅向政务民生、医疗、交通、金融、教育等线下公共服务开放,后期将逐步支持到其他线下公共服务业务
小程序调用
文档:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/subscribe-message.html
步骤一:获取模板 ID
在微信公众平台手动配置获取模板 ID:(项目中根据模板类型由后台返回)
登录 https://mp.weixin.qq.com 获取模板,如果没有合适的模板,可以申请添加新模板,审核通过后可使用。
步骤二:获取下发权限(重要接口)
详见小程序端消息订阅接口 wx.requestSubscribeMessage
调起订阅窗口,用户选择之后会触发回调函数记录后台可记录用户订阅的消息模板。
wx.requestSubscribeMessage({
tmplIds: [''],
success (res) { }
})
服务端接口
服务端接口主要讲添加接口和发送接口,其他接口可以作为辅助接口使用,这里不做讲解
<h5>添加模板接口</h5>
subscribeMessage.addTemplate 添加模板接口(重要接口)
注意点:添加模板数据格式要用x-www-from-urlencoded,文档上是json格式
添加的模板id是先用subscribeMessage.getCategory获取当前小程序的服务类目,根据subscribeMessage.getPubTemplateTitleList获取帐号所属类目下的公共模板标题,选取适合自己场景的模板,再用subscribeMessage.getPubTemplateKeyWordsById获取模板下的字段,选取自己要用的字段,然后添加模板。
代码示例:
public static function generateSubTemplateId($type,$beid){
$params = [
'tid=6271',
'kidList[0]=4',
'kidList[1]=3',
'kidList[2]=2',
'kidList[3]=1',
'sceneDesc=订单支付成功后进行通知',
];
$paramStr = implode("&", $params);
$accessToken = WeixinService::getAccessToken($beid);
$url="https://api.weixin.qq.com/wxaapi/newtmpl/addtemplate?access_token=".$accessToken;
$response = Curl::post($url,$paramStr);
$returnArray=json_decode($response,true);
var_dump($returnArray);
}
<h5>发送消息接口</h5>
subscribeMessage.send 发送消息接口(重要接口)
与订阅消息的区别:
1.不再需要form_id,
2.data数据格式跟之前不一样,需要对应字段类型
3.发送字段的字符不能超过20个字符
示例代码:
data: {
name3: {
value: '我是玖柒后'
},
thing4: {
value: 'Hello World!'
},
phrase1: {
value: "祝张三同学"
},
date5: {
value: "发送成功!"
},
thing2: {
value: "1024 身体健康!"
}
},
templateId: 'TEMPLATE_ID'
}
结尾
心如花木,向阳而生。