后端——》Java程序推送微信订阅消息

  • 使用场景1:在微信小程序中进行了某种操作后,推送消息告知用户的操作结果
  • 使用场景2:微信端办公流程提交给下一个人审批后,得到审批通过或是驳回修改的命令
  • 使用场景具体如下图,可用在签到、提醒、通知、警告、催办等方面:

在这里插入图片描述
在这里插入图片描述
上面的实例图片就是通过后台 给微信推送的订阅消息。那具体的应该怎么实现呢,且看下文分解。

实现步骤

1 微信公众平台的配置

1.1 选用公共模板库中的模板

在这里插入图片描述
在这里插入图片描述

  • 登录微信公众平台后台,点击功能》订阅消息(若之前没有使用过,则点击开通)
  • 点击公共模板库 的title,可以看到 有很多模板,可以点击搜索选取适合自己的模板
  • 选到心仪的模板后,点击选用
  • 选用之后,可以看到模板有很多关键词,这些关键词可以选择性取用,比如上图我只选择了4个关键词,关键词不够可以申请
  • 关键词选用完毕之后,填写场景说明,点击提交,就可以了看到这个模板已经出现在了我的模板库中

1.2 自定义模板

很多时候,公共模板库中的模板还是不能够满足我们的需求,那这个时候我们可以自定义模板,如下
在这里插入图片描述

在这里插入图片描述

  • 在公共模板库中找不心仪的模板后,我们把页面点击跳转到最后一页
  • 点击:“帮忙我们完善模板库”,就可以了看到创建模板的页面
  • 根据实际需求填写关键词和参数类型。
  • 填写完成之后点击提交,一般会审核3-5天,审核完成后就可以
  • 这里有一点小小的要注意的,如上图所示,姓名和名称之类关键词的参数类型我们一般选择 “事务”,而不是字符串,具体参数规则如下所示
    在这里插入图片描述

1.3 我的模板

无论时选用公共模板库中的模板,还是申请自定义模板,模板都会出现在 “我的模板”这个title下,如下图
在这里插入图片描述
在这里插入图片描述

  • 我们点击详情,就可以看到模板具体的信息,其中发送消息最重要的参数我们在这个页面可以看到
  • 一个是:模板ID。模板id决定了发送消息时选用哪个模板
  • 一个是:详细内容。详细内容就是要往模板中要塞哪些参数,比如上面这个模板的参数就有4个,name1、date2、thing4、thing5。这4个参数就相当于实体的属性一样,在下面的文章中我还会介绍到,暂且不表。

到这里为止微信公众平台的配置基本已经完成,下面我们开始Java端的配置。

2 Java端的配置

在这里首先梳理一下Java端要做哪些事及其步骤;

  1. 定义一个消息模板的参数实体。并往里面塞值
  2. 定义一个消息配置实体。这个实体包含了一些重要的属性,主要如下
    2.1:touser:接收者(用户)的 openid
    2.2:template_id:所需下发的消息模板id
    2.3:page:用户点击消息后跳转到小程序指定的页面路径
    2.4:data:消息模板的实体
  3. 获取openid。由第2步可以知道,我们已经可以得到在微信公众平台配置的模板id、自定义的跳转路径、和第1步设置的消息模板的实体。那我们还需要设置touser(即获取到用户的openid),openid决定了我们要把消息推送给哪个用户
  4. 获取access_token。作为参数拼接出微信小程序推送消息的url接口。
  5. 推送消息

详情如下:

2.1 定义消息模板的参数实体

  1. 在微信公众平台的消息订阅中找到消息模板,找到具体有哪些参数。如下图所示,我们可以看到该模板有name1、date2、thing4、thing5四个参数(后面的DATA不用管)
    在这里插入图片描述

  2. 定义消息模板参数实体,官方定义的消息模板demo的参数的json格式是这个样的

{
   
      "number01": {
   
          "value": "339208499"
      },
      "date01": {
   
          "value": "2015年01月05日"
      },
      "site01": {
   
          "value": "TIT创意园"
      } ,
      "site02": {
   
          "value": "广州市新港中路397号"
      }
  }
所以我们定义实体参数的时候,要相应的改成以下格式的
import java.util.HashMap;
import java.util.Map;

/*消息模板-扫码*/
public class WxMsgTemplateQRCode {
   

    /*扫码用户*/
    private Map<String, String> name1;

    /*扫码时间*/
    private Map<String, String> date2;

    /*扫描位置*/
    private Map<String, String> thing4;

    /*扫码内容*/
    private Map<String, String> thing5;


    public Map<String, String> getName1() {
   
        return name1;
    }

    public void setName1(String name1) {
   
        this.name1 = getFormat(name1);
    }

    public Map<String, String> getDate2() {
   
        return date2;
    }

    public void setDate2(String date2) {
   
        this.date2 = getFormat(date2);
    }

    public Map<String, String> getThing4() {
   
        return thing4;
    }

    public void setThing4(String thing4) {
   
        this.thing4 = getFormat(thing4);
    }

    public Map<String, String> getThing5() {
   
        return thing5;
    }

    public void setThing5(String thing5) {
   
        this.thing5 = getFormat(thing5);
    }

    public HashMap<String, String> getFormat(String str) {
   
        return new HashMap<String, String>() {
   {
   
            put("value", str);
        }};
    }
}

2.2 定义消息配置实体

public class WxMsgConfig {
   

    /*接收者(用户)的 openid*/
    private String touser;

    /*所需下发的订阅模板id*/
    private String template_id;

    /*点击消息后跳转的页面*/
    private String page;

    /*跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版*/
    private String miniprogram_state="developer";

    /*进入小程序查看”的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值