微信公众号开发之模板消息

微信公众号开发之详细教程

很多时候开发服务器都是被动回复用户消息的,像关键词回复,模板消息这些,那我们如何实现像成绩推送,课程推送这样的需求呢。这就需要我们主动发送消息给用户。因为我实现过成绩推送需求。所以下面我以成绩推送说明。

什么是模板消息:模板消息仅用于公众号向用户发送重要的服务通知.在测试号中我们可以自定义模板消息,但是在公众号平台中,我们只能从模板库中查找我们所需要的的模板,可以自己自定义模板,但是需要微信审核。

公众号模板消息样式:

模板消息格式:

参数是否必填说明
touser接收者openid
template_id模板ID
url模板跳转链接(海外帐号没有跳转能力)
miniprogram跳小程序所需数据,不需跳小程序可不用传该数据
appid所需跳转到的小程序appid(该小程序appid必须与发模板消息的公众号是绑定关联关系,暂不支持小游戏)
pagepath所需跳转到小程序的具体页面路径,支持带参数,(示例index?foo=bar),要求该小程序已发布,暂不支持小游戏
data模板数据
color模板内容字体颜色,不填默认为黑色

直接上代码

微信公众号开发工具包依赖

        <!-- 微信开发工具包 -->
        <dependency>
            <groupId>me.chanjar</groupId>
            <artifactId>weixin-java-mp</artifactId>
            <version>1.3.3</version>
        </dependency>
        <dependency>
            <groupId>me.chanjar</groupId>
            <artifactId>weixin-java-common</artifactId>
            <version>1.3.3</version>
        </dependency>

开发代码

public class WXTest {
    @Test
    public void courseTemplateTest(){

      //创建配置对象
      WxMpInMemoryConfigStorage wxMpInMemoryConfigStorage=new WxMpInMemoryConfigStorage();
      //微信公众号的appid
      wxMpInMemoryConfigStorage.setAppId("");
      //微信公众号的密钥
      wxMpInMemoryConfigStorage.setSecret("");
      //创建服务对象
      WxMpService service=new WxMpServiceImpl();
      //将配置对象注入服务对象中
      service.setWxMpConfigStorage(wxMpInMemoryConfigStorage);
      //创建模板消息对象
      WxMpTemplateMessage templateMessage=new WxMpTemplateMessage();
      //微信公众平台中我的模板库中的 模板id
      templateMessage.setTemplateId("");
      //用户接收到的模板消息 点击跳转的页面
      templateMessage.setUrl("http://www.baidu.com");
        /**
         *  需要发送到某一个用户 opneid是微信公众号用户的唯一标识 我做的是成绩推送 
         *  所以在之前 用户绑定的时候在数据库中存储用户的openid
         */
      templateMessage.setToUser("");
      //设置需要发送的消息
        List<WxMpTemplateData> datas = templateMessage.getDatas();

        // 参数1 name必须和模板消息中的key值相对应
        // 参数2 value是需要显示的值
        // 参数3 color代表字体的颜色
        WxMpTemplateData dataName=new WxMpTemplateData("first","哈喽,\n又公布了一门成绩,快来看看吧!\n","#173177");
        WxMpTemplateData dataCourse=new WxMpTemplateData("keyword1","高等数学","#173177");
        WxMpTemplateData dataScore=new WxMpTemplateData("keyword2","99","#173177");
        WxMpTemplateData dataEnd=new WxMpTemplateData("remark","点击查看全部成绩","#173177");
        datas.add(dataCourse);
        datas.add(dataName);
        datas.add(dataScore);
        datas.add(dataEnd);
        try {
            //发送模板消息
            service.templateSend(templateMessage);
        } catch (WxErrorException e) {
            e.printStackTrace();
        }
    }
}

微信公众号的appid和密钥的获取

微信公众平台->开发->基本配置。

注意:正式环境中,需要在ip白名单里配置服务器的ip地址,不然消息会被拦截,这也是为了安全考虑

开发的代码很简单,重要的是理解过程,可能我写的不够详细,等我以后再详细补充。

 

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页