微信小程序模板消息推送

这篇具有很好参考价值的文章主要介绍了微信小程序模板消息推送。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

时序图

​​​​​​​微信小程序模板消息推送

 

首先,我们需要知道一件事情,小程序的模板推送分为“一次性订阅”和“长期订阅”

一次性订阅:用户订阅小程序后,程序只能对指定OpenId进行一次推送模板消息,无法多次推送

长期订阅:用户长期订阅,能够多次推送模板消息(长期订阅模板需要向微信官方发起申请)

推送模板消息前置配置

1.需要配置消息推送

微信小程序模板消息推送

2.需要根据AppId、AppSecret调用开发文档Api获取access_token 

GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

微信小程序模板消息推送

2.需要使用access_token调用以下Api获取到微信用户的open_id

POST https://api.weixin.qq.com/wxa/getpluginopenpid?access_token=ACCESS_TOKEN

微信小程序模板消息推送

推送模板消息API

微信小程序模板消息推送

微信开发文档中的模板消息已经废弃不进行使用了,我们现在应该使用“订阅消息”——>“send”这个API(下方链接)

subscribeMessage.send | 微信开放文档

微信小程序模板消息推送

 其中参数的data属性,需要我们在代码中与之对应:

例如:

模板格式

微信小程序模板消息推送

参数类型:

微信小程序模板消息推送

 类型:(需要注意一些长度限制

微信小程序模板消息推送

 上边的准备好就可以进行代码编写。

代码实现

1.模板消息:(所要传的参数实体

public class WxSubscribeMsg {

    // 接收人id
    private String touser;
    // 模板id
    private String template_id;
    // 跳转小程序
    private String page;
    // 模板数据
    private Map<String, WxTemplateValue> data;
    // 跳转小程序类型 默认正式版
    private String miniprogram_state;
    // 语言类型 默认中文
    private String lang = "zh_CN";

    public String getTouser() {
        return touser;
    }

    public void setTouser(String touser) {
        this.touser = touser;
    }

    public String getTemplate_id() {
        return template_id;
    }

    public void setTemplate_id(String template_id) {
        this.template_id = template_id;
    }

    public String getPage() {
        return page;
    }

    public void setPage(String page) {
        this.page = page;
    }

    public Map<String, WxTemplateValue> getData() {
        return data;
    }

    public void setData(Map<String, WxTemplateValue> data) {
        this.data = data;
    }

    public String getMiniprogram_state() {
        return miniprogram_state;
    }

    public void setMiniprogram_state(String miniprogram_state) {
        this.miniprogram_state = miniprogram_state;
    }

    public String getLang() {
        return lang;
    }

    public void setLang(String lang) {
        this.lang = lang;
    }
}

 2.模板内容:(API中的data属性

public class WxTemplateValue {

    private String value;

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    @Override
    public String toString() {
        return "WxTemplateValue{" +
                "value='" + value + '\'' +
                '}';
    }
}

 3.返回数据接收

public class WxUserInfo {
    private String openid;

    private String session_key;

    private String unionid;

    private int errcode;

    private String errmsg;

    public String getOpenid() {
        return openid;
    }

    public void setOpenid(String openid) {
        this.openid = openid;
    }

    public String getSession_key() {
        return session_key;
    }

    public void setSession_key(String session_key) {
        this.session_key = session_key;
    }

    public String getUnionid() {
        return unionid;
    }

    public void setUnionid(String unionid) {
        this.unionid = unionid;
    }

    public int getErrcode() {
        return errcode;
    }

    public void setErrcode(int errcode) {
        this.errcode = errcode;
    }

    public String getErrmsg() {
        return errmsg;
    }

    public void setErrmsg(String errmsg) {
        this.errmsg = errmsg;
    }
}

 推送代码:

调用的API接口:文章来源地址https://www.toymoban.com/news/detail-500868.html

POST https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN
WxSubscribeMsg wxSubscribeMsg = new WxSubscribeMsg();
                            wxSubscribeMsg.setTouser(openId);
                            wxSubscribeMsg.setTemplate_id(templateId);
                            // 模板消息到小程序跳转页面
                            wxSubscribeMsg.setPage("pages/workbench/workbench?id=" + dto.getId()+"&pageTpye=task");
//                             开发版
//                            wxSubscribeMsg.setMiniprogram_state("developer");
//                             跳转体验版
                            wxSubscribeMsg.setMiniprogram_state("trial");
//                             跳转正式版
//                            wxSubscribeMsg.setMiniprogram_state("formal");

                            // 模板消息
                            Map<String, WxTemplateValue> map = new HashMap<>();

                            // 发布内容
                            WxTemplateValue keyword1 = new WxTemplateValue();
                            keyword1.setValue(sendContent);
                            map.put("thing1", keyword1);

                            // 影响区域
                            WxTemplateValue keyword2 = new WxTemplateValue();
                            String taskArea = dto.getSecondAreaName()+dto.getThirdAreaName();
                            if(taskArea.length() < 20){
                                keyword2.setValue(taskArea);
                            }else{
                                keyword2.setValue("");
                            }
                            map.put("thing2", keyword2);

                            // 发布时间
                            WxTemplateValue keyword3 = new WxTemplateValue();
                            String date = dto.getTaskStartTime()

                            keyword3.setValue(date);
                            map.put("date3", keyword3);

                            // 发布单位
                            WxTemplateValue keyword4 = new WxTemplateValue();
                            String group = dto.getName();
                            if(group.length() < 20){
                                keyword4.setValue(group);
                            }else{
                                String substring = group.substring(0, 20);
                                keyword4.setValue(substring);
                            }
                            map.put("thing4", keyword4);
                            // 推送模板参数
                            wxSubscribeMsg.setData(map);

                            // 参数转json
                            String json = JSONObject.toJSONString(wxSubscribeMsg);
                            // 调用微信推送模板接口
                            String doPostJson = HttpClientUtil.doPostJson(requestUrl, json);
                            // 将获取到的数据进行判断进行日志写入
                            JSONObject jsonObject = JSONObject.parseObject(doPostJson);
                            LOGGER.info("调用微信模板消息回调结果:"+ com.wanwei.oneview.base.utils.JsonUtils.objectToJson(jsonObject));

到了这里,关于微信小程序模板消息推送的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序发送消息推送

    在小程序开发中,如果想实现:用户发给小程序的消息以及开发者需要的事件推送,在小程序项目中,我们想要实现这样一个功能, 比如我们小程序中的客服功能,我不想要使用小程序后台的在线客服功能,但我又想实现客服功能,这个时候微信提供了消息推送功能,在小程序

    2024年02月09日
    浏览(49)
  • 微信小程序之订阅消息推送

    目录 1、开通订阅消息 2、请求用户授权 2.1、wx.requestSubscribeMessage(Object object) 2.2、wx.requestSubscribeDeviceMessage(Object object) 3、发送订阅信息 3.1、调用方式 3.2、云调用接口方法 3.3、请求参数 3.4、返回值 3.5、代码示例 登录小程序之后点击功能下的 订阅消息 , 点击开通 选择公共模

    2024年02月09日
    浏览(58)
  • 微信小程序服务通知(订阅消息)定时推送消息功能

    首先先说项目需求:向预约参观的用户提前一天晚上8点推送消息。小程序端主要用到的 API 是我是小程序用到的API。以及服务端用到的 API :我是服务端用到的API。 1. 开通订阅消息功能 (1)、 首先需要在小程序管理后台开通订阅消息功能。没开通前如下图所示: (2)、开通之

    2024年02月08日
    浏览(80)
  • 微信小程序消息推送、接收消息事件、发送客服消息

    文档地址消息推送 | 微信开放文档 接收消息和事件 | 微信开放文档 发送客服消息 | 微信开放文档 代码参考

    2024年02月12日
    浏览(44)
  • 微信小程序云开发定时推送订阅消息

    (1)点击订阅消息 (2)点击公共模板库,然后找到想要选用的模板,点击选用。 (3)在我的模板里面,复制模板id。 如果找不到想要用的模板,可以在公共模板的最后一页,点击下图中圈出来的,去申请自己想要的模板。 (1)云函数部分的代码 config.json 云函数配置文件

    2024年02月09日
    浏览(48)
  • java编写微信小程序消息提醒推送

    微信小程序官方文档:发送订阅消息 | 微信开放文档 一. 先制定模板,我以已删除的模板为例 二.java后台创建小程序 Vo类,用于封装传送的参数。 1.获取小程序全局后台接口调用凭据,有效期最长为7200 2.发送消息给指定的用户 3.整合 4.测试 注意:在前端调用方法时,只有发

    2024年02月11日
    浏览(42)
  • 微信小程序实现订阅消息推送的实现步骤

    1、准备工作   准备小程序账号、开发环境,我小程序是基于uniapp开发,后台代码基于SpringBoot开发。同时先阅读官方文档,了解小程序订阅消息和后端如何发送订阅消息等相关知识,官方文档地址如下: 《小程序订阅消息》 《发送订阅消息》 2、实现步骤 2.1、启用并配置

    2024年02月15日
    浏览(48)
  • 微信小程序向公众号推送消息超详细教程

    官方教程 官方教程 开通一下服务号公众号 超级管理员登录服务号公众号后台 登录地址 开通模板消息 申请一个模板消息,获取模板ID 注意此处的参数,后续接口需要使用 绑定公众号与小程序 官方教程 1.登录微信公众号后台 2.点击小程序管理 3.关联小程序 获取微信公众号

    2024年02月11日
    浏览(63)
  • 微信小程序订阅消息推送(附带后台java代码)

    官方文档: 小程序前端:点击进入 小程序服务端:点击进入 一,代码实现(后端) ①定义实体类 ②定义HttpUtil类(Get请求) ③验证token过期时间 ④小程序发送消息 AuthUtil工具类

    2024年02月14日
    浏览(45)
  • 关于微信小程序uniapp版的推送消息

    1.按钮触发推送消息 2.pushMesage方法调用uniapp自带的消息推送授权窗口 值得注意 的是:①tmplIds是一个数组,这个数组里可以储存多个模板ID,当你需要切换模板进行推送时切换数组下标即可。 ②弹窗授权需要点击允许接收来自小程序的消息提醒,目前微信小程序里面有两种模

    2024年02月16日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包