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

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

序言

由于微信小程序长期订阅的消息模板全部失效以后,对于小程序的消息推送可以改成往公众号推。
这里将介绍如何使用小程序向公众号推送消息,并且消息可以跳转到小程序

准备

1、微信公众平台注册服务号(订阅号是不可以推送的)与小程序,两者都需要认证并且认证主体是一致

2、微信开放平台注册账号(该账号也需要认证),绑定小程序与公众号
小程序发送公众号模板消息,微信小程序,小程序
3、公众号根据想要的模板消息绑定服务类目,去模板消息中先挑选你的模板消息。(如果是刚注册的公众号还需要去新的功能页面添加模板消息功能,需要微信审核,不过很快)
小程序发送公众号模板消息,微信小程序,小程序
4、微信公众号绑定小程序
小程序发送公众号模板消息,微信小程序,小程序
5、小程序与公众号配置服务器的ip地址白名单
小程序发送公众号模板消息,微信小程序,小程序

整体实现流程

通过在开放平台绑定的公众号与小程序后,我们在调用微信code2Session接口的时候会返回unionid(虽然我们推送用不上哈哈),只要绑定以后,就可以通过小程序的openid调用微信的下发统一消息接口推送消息到公众号去了

实现代码(java)

1、消息推送接口文档
2、小程序access_token获取接口文档文章来源地址https://www.toymoban.com/news/detail-739094.html

  • 需要先获取小程序的access_token
 private String getAppletAccessToken() {
    // 因为微信有限制次数跟有效期,所以需要存在redis中
    String token = redisCache.getCacheObject(CacheConstants.WECHAT_MINI_ACCESS_TOKEN);
    // token失效或者为空
    if (StringUtils.isEmpty(token)) {
        HashMap<String, String> map = new HashMap<>(3);
        map.put("appid", weAppAppId); // 小程序appid
        map.put("secret", weAppSecret); // 小程序secret
        map.put("grant_type", "client_credential");
        //  发送Http的post请求
        String resp = HttpUtils.sendPostJson(GET_ACCESS_TOKEN_URL, JSON.toJSONString(map), null);
        log.info("获取小程序accessToken返回:" + resp);
        if (StringUtils.isEmpty(resp) || !resp.contains("access_token")) {
            throw new ServiceException("获取小程序accessToken失败");
        }
        token = JSONObject.parseObject(resp).getString("access_token");
        // 设置为1.9h(有效期2h)
        redisCache.setCacheObject(CacheConstants.WECHAT_MINI_ACCESS_TOKEN, token,
                7100, TimeUnit.SECONDS);
    }
    return token;
}
  • 封装下发消息参数实体(仅参考,照着接口文档封)
/**
 * 微信下发统一消息参数
 *
 * @author quan
 * @date 2023/9/15 16:42
 */
@Data
@NoArgsConstructor
public class PushMsgParams {
    /**
     * 用户openid,可以是小程序的openid,
     * 也可以是mp_template_msg.appid对应的公众号的openid
     */
    private String touser;

    /**
     * 公众号模板消息
     */
    private MpTemplateMsg mp_template_msg;

    public PushMsgParams(String touser) {
        this.touser = touser;
    }
}
/**
 * 小程序模板消息相关的信息,可以参考小程序模板消息接口;
 * 有此节点则优先发送小程序模板消息;
 * (小程序模板消息已下线,不用传此节点)
 *
 * @author quan
 * @date 2023/9/15 16:48
 */
@Data
public class MpTemplateMsg {
    /**
     * 公众号appid,要求与小程序有绑定且同主体
     */
    private String appid;
    /**
     * 公众号模板id
     */
    private String template_id;
    /**
     * 公众号模板消息所要跳转的url
     */
    private String url;
    /**
     * 公众号模板消息所要跳转的小程序,
     * 小程序的必须与公众号具有绑定关系
     */
    private Map<String, String> miniprogram;
    /**
     * 公众号模板消息的数据
     */
    private Map<String, Map<String, String>> data;

    /**
     * 构建data数据
     */
    public void createData(Map<String, String> data) {
        if (null == data || data.isEmpty()){
            return;
        }
        Map<String, Map<String, String>> map = new HashMap<>(data.size());
        for (Map.Entry<String, String> entry : data.entrySet()) {
            Map<String, String> valMap = new HashMap<>(1);
            valMap.put("value", entry.getValue());
            map.put(entry.getKey(), valMap);
        }
        this.data = map;
    }
}
  • 消息推送方法封装
    小程序发送公众号模板消息,微信小程序,小程序
 /**
   * 下发统一消息接口
   *
   * @param pushMsgParams 下发参数
   * @param data          模板参数
   */
  public void sendUniformMessage(PushMsgParams pushMsgParams, Map<String, String> data) {
      String accessToken = getAppletAccessToken();
      
      MpTemplateMsg templateMsg = new MpTemplateMsg();
      // 公众号appid
      templateMsg.setAppid(mpAppId);
      // 前面准备的模板消息的id
      templateMsg.setTemplate_id(templateId);
      // 推送参数,格式为keyword,value。可看下微信提供的demo会清楚点
      templateMsg.createData(data);

      // 跳转小程序
      HashMap<String, String> miniPro = new HashMap<>(2);
      miniPro.put("appid", weAppAppId);
      miniPro.put("pagepath", "");
      templateMsg.setMiniprogram(miniPro);

      pushMsgParams.setMp_template_msg(templateMsg);
      // 发送Http请求
      // SEND_UNIFORM_MESSAGE = "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/uniform_send?access_token="
      String resp = HttpUtils.sendPostJson(SEND_UNIFORM_MESSAGE + accessToken, JSON.toJSONString(pushMsgParams), null);
      log.info("微信下发统一消息接口返回:{}", resp);
      JSONObject result = JSON.parseObject(resp);
      if (!"0".equals(result.getString("errcode"))) {
          throw new ServiceException("微信消息推送失败," + result.getString("errMsg"));
      }
  }
  • 业务调用推送代码
for (SysUser user : users) {
    // 小程序或公众号用户的openid都可以推
    PushMsgParams pushMsgParams = new PushMsgParams(user.getOpenid());
    HashMap<String, String> data = new HashMap<>(5);
    data.put("character_string2", event.getFlightNo());
    data.put("thing10", event.getStartPlace());
    data.put("thing11", event.getDestPlace());
    data.put("time3", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, event.getFlightStartTime()));
    data.put("thing9", "请及时处理关注事件");
    weChatUtil.sendUniformMessage(pushMsgParams, data);
}
  • 推送效果,可直接跳转小程序
    小程序发送公众号模板消息,微信小程序,小程序

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

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

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

相关文章

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

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

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

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

    2024年02月11日
    浏览(35)
  • 微信小程序通过公众号服务号发送消息

    一、基础概念: 准备条件:      1、公众号和小程序必须在同一个公司主体下。      2、在公众号后台需要对小程序进程绑定操作。 公众号提供了两种消息,一种是订阅消息,一种是模板消息。 订阅消息需要用户主动订阅,然后才能接收消息,微信提供前端组件用于用户进

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

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

    2024年02月11日
    浏览(34)
  • 微信公众号推送模板消息给用户

    前置条件: 1.公众号为服务号,而非订阅号 2.认证(300元) 3.进入公众号申请模板推送功能 4.添加模板(注意:推送的消息只能使用微信提供的模板,不可自定义,但也是比较全的) 4.2 获取accessToken时,需要将开发环境的电脑ip添加到微信后台的ip白名单(线上环境亦是如此

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

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

    2024年02月12日
    浏览(28)
  • spring boot +微信小程序项目,通过微信公众号实现指定用户消息长期推送

    用户登录小程序,后台记录用户的小程序openId和用户唯一的UnionId。然后用户触发公众号事件(关注公众号或者发送指定消息),后台获取到用户公众号的openId,再调用接口通过公众号的openId查询用户的UnionId,再和数据库里的UnionId进行匹配,将用户的公众号openId存入数据库。此

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

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

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

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

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

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

    2024年02月03日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包