最近搞小程序模拟推送消息,才发现小程序推送消息接口准备下线。

请注意,小程序模板消息接口将于2020年1月10日下线,开发者可使用订阅消息功能

咱们现在有需求,所以不管下不下,完成再说。

一:”获取access_token的接口地址:https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

二:发送模板消息 
先在微信公众平台选用怒需要的模板id,例如 
选用模板消息:

https://mp.weixin.qq.com/wxopen/tmplmsg?action=self_list&token=264012870&lang=zh_CN

登录 https://mp.weixin.qq.com 获取模板,如果没有合适的模板,可以申请添加新模板,审核通过后可使用

三:页面的 form 组件,属性 report-submit 为 true 时,可以声明为需要发送模板消息,此时点击按钮提交表单可以获取 formId,用于发送模板消息。或者当用户完成 支付行为,可以获取 prepay_id 用于发送模板消息。

我这里使用表单可以获取 formId模拟操作推送消息

四:调用接口下发模板消息

HTTPS 调用

请求地址

(POST请求) https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=ACCESS_TOKEN

请求参数

属性 类型 默认值 必填 说明
access_token string   接口调用凭证
touser string   接收者(用户)的 openid
template_id string   所需下发的模板消息的id
page string   点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。
form_id string   表单提交场景下,为 submit 事件带上的 formId;支付场景下,为本次支付的 prepay_id
data Object   模板内容,不填则下发空模板。具体格式请参考示例。
emphasis_keyword string   模板需要放大的关键词,不填则默认无放大

具体操作代码:

 <form bind:submit="testSubmit" report-submit="true">
<button formType="submit">发送模板消息</button>
</form>
onLoad: function (options) {
var that = this; //获取 access_token that.getAccessToken(); }, getAccessToken: function () {
var that = this;
var appdid = '填写小程序的APPID';
var appsecret = '填写小程序的密钥'
var url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' + appdid + '&secret=' + appsecret;
wx.request({
url: url,
success: function (res) {
console.log(res) // 控制台输出结果
that.setData({
access_token: res.data.access_token
})
console.log("*********获取************" + res.data.access_token) // 控制台输出结果
}
})
},
//点击发送模板,获取formid
testSubmit: function (e) {
var self = this;
console.log("*********** e.detail.formId**********" + e.detail.formId)
var _access_token = self.data.access_token
console.log("***********控制台输出结果**********" + _access_token)
var opeid = "微信推送消息接收者的openid"
let url = 'https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=' + _access_token;
let jsonData = {
access_token: _access_token,
touser: opeid,
template_id: '所需下发的模板消息的ID',
form_id: e.detail.formId,
page: "pages/index/index",
data: {
"keyword1": { "value": "互联网大会科学技术", "color": "#173177" },
"keyword2": { "value": "2019年1月4日 09:00", "color": "#173177" },
"keyword3": { "value": "上海国际展中心", "color": "#173177" },
"keyword4": { "value": "务必准时参加", "color": "#173177" },
}
}
console.log("**********jsonData*******************" + JSON.stringify(jsonData))
wx.request({
url: url,
data:jsonData,
method: 'POST',
success: function (res) {
console.log("***" + JSON.stringify(res))
},
fail: function (err) {
console.log('request fail ', err);
},
})
},

记得拿起手机,真机调试模板推送

结果:

成功示例

{
"errcode": 0,
"errmsg": "ok"
}

errcode 的合法值

说明 最低版本
40037 template_id不正确  
41028 form_id不正确,或者过期  
41029 form_id已被使用  
41030 page不正确  
45009 接口调用超过限额(目前默认每个帐号日调用限额为100万)
 

 

最新文章

  1. rinetd 安装使用
  2. MDM基于IOS设备管控功能的所有命令介绍
  3. C语言随记-1
  4. java 线程之间通信以及notify与notifyAll区别。
  5. GTK+2.0学习——code::block使用
  6. vue的挖坑和爬坑之vuex的简单入门
  7. Django之权限
  8. mysql中的几种日志了解
  9. 报错ORA-19809 ORA-19804
  10. mysql windows安装资源
  11. python 回溯法 子集树模板 系列 —— 13、最佳作业调度问题
  12. Express application generator的使用
  13. ajax的一些小知识
  14. UVa 11992 Fast Matrix Operations (线段树,区间修改)
  15. 异步加载的JS如何在chrome浏览器断点调试?
  16. docker和kubernetes docker的区别
  17. TS/ES/PS
  18. svn can&#39;t save server certificate
  19. BZOJ4589: Hard Nim(FWT 快速幂)
  20. 制作基于centos可以ssh连接的容器以及tomcat容器

热门文章

  1. vue项目打包之后原本好的样式变得不好了的原因分析
  2. SQLmap注入
  3. UILabel How to set background image
  4. 北风设计模式课程---UML类图各符号含义
  5. 查看IOS-app证书到期时间
  6. python,mock-server之moco
  7. 大数据学习笔记之Hadoop(二):HDFS文件系统
  8. Gcd的原理理解
  9. Java解释器模式`
  10. 关于deepin下安装ssh以后root用户登陆报错的解决