微信小程序消息推送(订阅消息原模板消息)开发流程

注:模板消息没了。

正常开发肯定需要前后端配合,此处都在小程序里写了

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

订阅消息是个很好的功能,但是现在被不良商家用烂了,特别是拼多多,有毒。

目录

一、获取模板ID

二、获取权限(提示用户订阅)

三、消息推送

1、获取openid

2、获取access_token

3、发送


小程序消息推送首先需要用户自主订阅,分为一次性订阅消息长期订阅消息,长期订阅消息仅向政务民生、医疗、交通、金融、教育等线下公共服务开放。

一次性订阅消息很麻烦,用户授权一次发一次,再发就提示invalid。

整体流程就是先在小程序后台配置模板消息,获取到用户订阅后在代码里给模板填充字段,然后发送。

主要分三步走:

一、获取模板ID

添加模板之后就可以得到了。

需要做的就是填充详细内容那些字段。

二、获取权限(提示用户订阅)

wx.requestSubscribeMessage({
      tmplIds: ['模板ID'],
      success (res) { 
        console.log("订阅成功:"+JSON.stringify(res))
      },
      fail(res){
        console.log("订阅失败:"+JSON.stringify(res))
      }
    })
//注意把模板ID换为自己的

tmplIds是模板消息id的集合,最多三条,而且一次性订阅消息和长期订阅消息是不能放在一起的,还有,模板消息的标题也是不能相同的。

效果是这样的:

三、消息推送

消息推送有两个条件:有openid和access_token,正常开发肯定是需要这个的,一定会有,这里演示用。

1、获取openid

//获取openid
    wx.login({
      success: res => {
        //获取openid
        this.getOpenID(res.code)
      }
    })

 getOpenID: function(code){
    wx.request({
      url: 'https://api.weixin.qq.com/sns/jscode2session?appid=AppID&secret=Appsecret&js_code='+code+'&grant_type=authorization_code',
      method:'GET',
      success(res){
        getApp().globalData.oopenidi = res.data.openid;
        console.log("获取openid成功:"+res.data.openid)
      }
    })
  }

//注意把AppID和Appsecret换为自己的

2、获取access_token

//获取access_token
    wx.request({
      url: 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=AppID&secret=Appsecret',
      method:'GET',
      success(res){
        getApp().globalData.access_token = res.data.access_token;
        console.log("获取access_token成功:"+res.data.access_token)
      }
    })
//注意把AppID和Appsecret换为自己的

3、发送

这里其实就是对模板消息的字段进行填充。

touser就是openid

page是用户点击推送消息的时候跳转的页面,但是仅限当前小程序。

这个字段有或没有在页面是有区别的。如果没有,下方的进入小程序查看是没有的。

最重要的就是data,这里面就是对模板消息字段的填充,格式也是非常简单,和日常用的一样。

     wx.request({
      url: getApp().globalData.messageurl+getApp().globalData.access_token,
      method:'POST',
      data:{
        access_token:getApp().globalData.access_token,
        touser:getApp().globalData.oopenidi,
        template_id:'模板ID',
        page:'pages/index/index',
        data:{
          "character_string2": {
            "value": "370406199393939939"
        },
        "name1":{
          "value":"李三"
        },
        "thing6":{
          "value":"西药"
        },
        "thing3":{
          "value":"医保门诊"
        },
        "amount5":{
          "value":"20.00"
        }
        }
      },
      success(res){
        console.log(JSON.stringify(res))
      },fail(res){
        console.log(JSON.stringify(res))
      }
    })

这最后一步看似简单,但是搞不好就会报个错,我看网上很多人都会报invalid openid 或者invalid access_token,实际上并不是很难的bug,只是不够细心导致的。

  • 7
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值