【微信小程序】使用Java后端语言发送订阅(模板)消息

原创
02/24 11:54
阅读数 4.4K

代码所需JAR

需要安装lombok插件哦

        <!-- hutool -->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>4.5.13</version>
        </dependency>
        <!-- Lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.8</version>
        </dependency>
        <!-- fastjson -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.59</version>
        </dependency>

官方文档必须看一下哈

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

步骤一:获取模板 ID

在微信公众平台手动配置获取模板 ID:
登录 https://mp.weixin.qq.com 获取模板,如果没有合适的模板,可以申请添加新模板,审核通过后可使用。

这里就按官网要求来即可

步骤二:获取下发权限

小程序端消息订阅接口文档必看

https://developers.weixin.qq.com/miniprogram/dev/api/open-api/subscribe-message/wx.requestSubscribeMessage.html

在小程序实现小程序端消息订阅事件

在index.html增加一个按钮并绑定一个事件

<button class="up" bindtap="sendmsg">订阅更新消息
</button>

在index.js增加事件处理方法

  sendmsg:function(){
    wx.requestSubscribeMessage({
      tmplIds: ['模板ID'],
      success:function(res){
        console.info(res);
      },
      fail(res){
        console.info(res);
      }
    })
  },

演示用户订阅消息

允许成功返回的数据

{
    "模板ID":"accept",
    "errMsg":"requestSubscribeMessage:ok",
    "errCode":0
}

步骤三:调用接口下发订阅消息

服务端消息发送接口文档必看

https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/subscribe-message/subscribeMessage.send.html

开始Java编程

新建一个常量类代码

/**
 * @author 小帅丶
 * @className WXAPIConts
 * @Description 微信小程序API
 * @Date 2020/2/24-11:22
 **/
public class WXAPIConts {
    //发送订阅消息URL
    public static String SEND_URL = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN";
    //模板ID 多个则自行命名区分即可
    public static String TEMPLATE_ID = "";
}

新建订阅消息对象

import lombok.Data;

/**
 * @author 小帅丶
 * @className SubscribeBean
 * @Description 发送订阅消息对象
 * @Date 2020/2/24-11:23
 **/
@Data
public class SubscribeBean {
    /** 接收者(用户)的 openid */
    private String touser;
    /** 所需下发的订阅模板id */
    private String template_id;
    /** 点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数 该字段不填则模板无跳转。*/
    private String page;
    /** 模板|订阅内容 */
    private SubscribeDataBean data;
    /** 进入小程序查看”的语言类型 支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN返回值*/
    private String lang = "zh_CN";
    /** 跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版 */
    private String miniprogram_state;
}

新建订阅消息详情内容对象

import lombok.AllArgsConstructor;
import lombok.Data;

/**
 * @author 小帅丶
 * @className SubscribeDataBean
 * @Description 订阅消息具体内容对象 根据对象不同key不同
 * @Date 2020/2/24-11:23
 **/
@Data
public class SubscribeDataBean {
    //具体的订阅消息的key {{thing4.DATA}} 则key为thing4
    private Thing4 thing4;
    private Date1 date1;
    @Data
    @AllArgsConstructor
    public static class Thing4{
        private String value;
    }
    @Data
    @AllArgsConstructor
    public static class Date1{
        private String value;
    }
}

编写发送订阅消息代码

发送对象转JSON字符串

package cn.netand.wxlite.sample;

import cn.hutool.http.HttpUtil;
import cn.netand.wxlite.bean.SubscribeBean;
import cn.netand.wxlite.bean.SubscribeDataBean;
import cn.netand.wxlite.conts.WXAPIConts;
import com.alibaba.fastjson.JSON;

/**
 * @author 小帅丶
 * @className SendSubscriptionMessageSample
 * @Description 发送订阅消息示例代码
 * @Date 2020/2/24-11:29
 **/
public class SendSubscriptionMessageSample {
    public static void main(String[] args) {
        //小程序的ACCESS_TOKEN
        String ACCESS_TOKEN = "";

        //访问过小程序的openid
        String OPENID = "";

        String url = WXAPIConts.SEND_URL.replace("ACCESS_TOKEN", ACCESS_TOKEN);
        //模板ID
        String template_id = WXAPIConts.TEMPLATE_ID;
        //订阅消息内容组装
        SubscribeDataBean bean = new SubscribeDataBean();
        bean.setDate1(new SubscribeDataBean.Date1("2020年2月24日 10:42"));
        bean.setThing4(new SubscribeDataBean.Thing4("新增好多功能"));

        //组装接口所需对象
        SubscribeBean sendBean = new SubscribeBean();
        sendBean.setData(bean);//这里的订阅消息对象 不需要额外转json
        sendBean.setTouser(OPENID);
        sendBean.setTemplate_id(template_id);

        //对象转json
        String param = JSON.toJSONString(sendBean);

        String result = HttpUtil.post(url, param);
        System.out.println("发送返回的内容:" + result);
    }
}

微信收到的内容

 

以上就是微信小程序发送订阅消息的示例了

展开阅读全文
打赏
0
1 收藏
分享
加载中
更多评论
打赏
0 评论
1 收藏
0
分享
返回顶部
顶部