微信公众号推送模板消息给用户

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

前置条件:

1.公众号为服务号,而非订阅号

2.认证(300元)

3.进入公众号申请模板推送功能

微信公众号模板消息推送,java,微信小程序

4.添加模板(注意:推送的消息只能使用微信提供的模板,不可自定义,但也是比较全的)

微信公众号模板消息推送,java,微信小程序

4.2 获取accessToken时,需要将开发环境的电脑ip添加到微信后台的ip白名单(线上环境亦是如此)

微信公众号模板消息推送,java,微信小程序

 文章来源地址https://www.toymoban.com/news/detail-520477.html

5.编码(可以先看下接口文档)【以下为无跳转功能示例代码】

 public String test() {
        String templateId = "NtMhq-lqMiaORC4L95J_aODMzf-OhPZpD1dAgW7qvWs";
        Map<Object, WeChatTemplateMsg> sendMap = new HashMap<>();
        sendMap.put("first", new WeChatTemplateMsg("您好,有一个设备离线通知~"));
        sendMap.put("keyword1", new WeChatTemplateMsg("keyword1"));
        sendMap.put("keyword2", new WeChatTemplateMsg("keyword2"));
        sendMap.put("keyword3", new WeChatTemplateMsg("keyword3"));
        sendMap.put("keyword4", new WeChatTemplateMsg("keyword4"));
        sendMap.put("remark", new WeChatTemplateMsg("remark"));
        Map<String, Object> map = getNotifyMap("oI9SZ6Jt-myBmVhbaGxOJuglUjBY", templateId, sendMap);
        ResponseEntity<String> forEntity = restTemplate.postForEntity(NOTIFY_URL + getAccessToken(), map, String.class);
        log.error("通知管理员设备状态完成。请求参数:{},响应参数:{}", map, forEntity);
        return null;
    }

//通用通知参数封装
private Map<String, Object> getNotifyMap(String openId, String templateId, Map<Object, WeChatTemplateMsg> sendMap) {
        Map<String, Object> sendBody = new HashMap<>();
        sendBody.put("touser", openId); // openId
        sendBody.put("template_id", templateId);     // 模板Id
        sendBody.put("topcolor", "#FF0000");          // 顶色
        sendBody.put("data", sendMap);                   // 模板参数
        return sendBody;
    }

//获取token(此处加了个redis,可选择不加,每次调接口获取也可)
 public String getAccessToken() {
        String accessToken;
        //0.从redis中检索,若没有则调用接口获取
        boolean hasKey = redisOprUtil.hasKey(WX_ACCESS_TOKEN_KEY);
        if (hasKey) {
            accessToken = redisOprUtil.get(WX_ACCESS_TOKEN_KEY).toString();
            log.error("redis中获取access_token......");
        } else {
            //1.调用接口获取
            String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appId + "&secret=" + appSecret;
            String resp = restTemplate.getForObject(url, String.class);
            log.error("获取token的响应:{}", resp);
            JSONObject jsonObject = JSONObject.parseObject(resp);
            accessToken = jsonObject.get("access_token").toString();
            int expiresIn = Integer.parseInt(jsonObject.get("expires_in").toString());
            //并将结果保存到redis中
            boolean saveAccessToken = redisOprUtil.set(WX_ACCESS_TOKEN_KEY, accessToken, expiresIn);

            log.error("微信接口获取access_token......且已保存到redis中:{}", saveAccessToken);
        }

        return accessToken;
    }

5.2 编码(可以先看下接口文档)【模板消息跳转到小程序】

public String test() {
        String templateId = "NtMhq-lqMiaORC4L95J_aODMzf-OhPZpD1dAgW7qvWs";
        Map<Object, WeChatTemplateMsg> sendMap = new HashMap<>();
        sendMap.put("first", new WeChatTemplateMsg("您好,有一个设备离线通知~"));
        sendMap.put("keyword1", new WeChatTemplateMsg("keyword1"));
        sendMap.put("keyword2", new WeChatTemplateMsg("keyword2"));
        sendMap.put("keyword3", new WeChatTemplateMsg("keyword3"));
        sendMap.put("keyword4", new WeChatTemplateMsg("keyword4"));
        sendMap.put("remark", new WeChatTemplateMsg("remark"));

        MiniprogramDto miniprogramDto = new MiniprogramDto();
        miniprogramDto.setAppid(wxMiniPromAppId);
        //跳转到的小程序的界面路径(page.json中的path参数)可带参数,小程序端 onload(options) 接收参数
        miniprogramDto.setPagepath("pages/xxxx/index?storeId=" + 1);

        Map<String, Object> map = getNotifyMapWithMiniProm("oI9SZ6Jt-myBmVhbaGxOJuglUjBY", templateId, sendMap, miniprogramDto);
        ResponseEntity<String> forEntity = restTemplate.postForEntity(NOTIFY_URL + getAccessToken(), map, String.class);
        log.error("通知管理员设备状态完成。请求参数:{},响应参数:{}", map, forEntity);
        return null;
    }

private Map<String, Object> getNotifyMapWithMiniProm(String openId, String templateId, Map<Object, WeChatTemplateMsg> sendMap, MiniprogramDto dto) {
        Map<String, Object> sendBody = new HashMap<>();
        sendBody.put("touser", openId); // openId
        sendBody.put("template_id", templateId);     // 模板Id
        sendBody.put("miniprogram", dto);     // 小程序信息
        sendBody.put("topcolor", "#FF0000");          // 顶色
        sendBody.put("data", sendMap);                   // 模板参数
        return sendBody;
    }

@Data
public class MiniprogramDto {

    private String appid;

    private String pagepath;

}

6.结果

微信公众号模板消息推送,java,微信小程序

 微信公众号模板消息推送,java,微信小程序

 

 

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

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

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

相关文章

  • 微信小程序云开发通过服务号给用户推送模板消息

    主要参考下面两个文章 1、云函数接收公众号消息推送 | 微信开放社区 ​​​​​​2、微信小程序通过公众号(服务号)推送通知或提醒步骤及代码(一,获取推送前所需信息)_微信小程序推送服务通知_庆登登登的博客-CSDN博客  一些基本的概念就不讲了,这里主要讲下步骤和我

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

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

    2024年02月11日
    浏览(49)
  • 【小程序】微信小程序关联公众号(服务号)推送通知消息

    最近开发的一个小程序项目需要通过服务号来推送通知。但是在最开始开发小程序的时候并没有考虑到这个功能。 预备知识 : 小程序openid:小程序用户的唯一id 公众号openid:公众号用户的唯一id unionid:同一用户,对同一个微信开放平台下的不同应用,unionid是相同的 准备

    2024年01月18日
    浏览(34)
  • uniapp - 微信小程序平台模板消息订阅功能,唤起订阅模板消息弹框、微信公众号向用户发送 “服务通知“ 实现全过程示例代码,支持一次性订阅与永久性订阅(注释详细,一键复制开箱即用)

    本博客实现了uniapp微信小程序端,详细实现公众号订阅通知模板消息完整示例源码,一次性订阅与永久订阅均可,注释详细新手一看就懂! 效果如图所示,uniapp编译的微信小程序内点击按钮后,唤起模板消息订阅申请弹框,后续微信内会收到通知。

    2024年02月13日
    浏览(39)
  • 微信小程序模板消息推送

    时序图 ​​​​​​​   首先,我们需要知道一件事情,小程序的模板推送分为“一次性订阅”和“长期订阅” 一次性订阅:用户订阅小程序后,程序只能对指定OpenId进行一次推送模板消息,无法多次推送 长期订阅:用户长期订阅,能够多次推送模板消息(长期订阅模板需

    2024年02月11日
    浏览(35)
  • 微信小程序订阅模板消息推送

    背景 在实际的小程序开发过程中往往需要用到给用户发送订阅消息,比如:我们在店里扫码点餐时在付款时往往弹出一个授权窗口(比如‘取餐通知’)这个时候我们就需要对接微信小程序的模板消息。 [https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/mp-message-management/subscrib

    2024年02月11日
    浏览(34)
  • uni-app中实现微信小程序/公众号订阅消息推送功能

    👨🏻‍💻 热爱摄影的程序员 👨🏻‍🎨 喜欢编码的设计师 🧕🏻 擅长设计的剪辑师 🧑🏻‍🏫 一位高冷无情的编码爱好者 大家好,我是全栈 IT 工程师摘星人 欢迎分享 / 收藏 / 赞 / 在看! 开发业务时时常遇到需要向用户发送一些通知,如欠费通知、会员到期通知等等。

    2024年02月02日
    浏览(81)
  • 小程序推送公众号模板消息

    第一步:先创建微信开放平台:微信开放平台,绑定微信小程序和公众号(是为后面拿共用的unionid进行小程序openid与公众号openid绑定) 第二步:进入公众号开放平台,找到基本配置,配置服务器地址(url):指自己服务器能够访问的域名 第三步:在服务器中就是url写下这个方法

    2024年01月21日
    浏览(30)
  • 微信小程序 | 微信公众平台SpringBoot开发实例 │ 模板消息的应用开发

     在手机微信公众号中输入文本(如“你好”),公众号发送两条模板消息,如下图所示。 模板消息用来帮助公众号进行业务通知,是在模板内容中设定参数(参数必须以{ {开头,且以.DATA} }结尾)并在调用时为这些参数赋值并发送的消息。模板消息仅用于向用户发送重要的服务

    2024年02月03日
    浏览(38)
  • 微信公众号模板消息源码实现,打破服务号群发推送次数限制

    公众号服务号每个月只能群发推送四次文章,我们可以使用模板消息为公众号粉丝推送信息 下面是使用golang实现的模板消息发送类库封装,轻松实现模板消息发送 wechat.go 我们的使用方式 推送的效果如图所示,点击模板就能跳转到我们自定义的url上 我在自己客服系统中也是

    2024年02月15日
    浏览(33)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包