微信公众号服务号推送模板消息设置方法(后端java)

 更新时间:2023年02月21日 14:07:00   作者:TaoCap  
公众号时经常会需要写推送消息,从网上找了一大堆,都不是很全,所以这篇文章主要介绍了微信公众号服务号推送模板消息设置方法的相关资料,需要的朋友可以参考下

模板消息文档

公众号的类型分为服务号、订阅号和企业号,其中服务号和订阅号比较常见。要想实现公众号推动消息给指定的用户,其类型必须为服务号。

推送的模板消息示例如下 :

模板消息Demo-正式

设置模板消息

此处为正式环境的设置,开发环境可使用微信测试平台提供的测试账号体验和测试公众平台的所有高级接口,无需提前申请审核,详情见本文最后章节。

首次设置需要开启模板消息功能,登录公众号后台: mp.weixin.qq.com ,在左侧导航栏最下方有「添加新的功能」,打开,在「广告与服务」一类中找到「模板消息」,开通即可。

打开「模板消息」,选择模板库,需先选择所在行业(一个月只能修改一次),之后在下方的行业模板中选择合适的模板(可以搜索模板关键字)。

添加完选择的模板后在「我的模板」中可以查看模板的详细信息,此处的模板ID后面代码中会用到。

编码

1. 添加依赖

// Gradle
dependencies {
	// ...
	compile "com.github.binarywang:weixin-java-mp:3.3.0"
	// ...
}


// Maven
<dependency>
  <groupId>com.github.binarywang</groupId>
  <artifactId>weixin-java-mp</artifactId>
  <version>3.0.0</version>
</dependency>

2. SubscriptionMessageUtil.java

import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;

import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.List;

public class SubscriptionMessageUtil {

    /**
     * 下单后通知供货商
     */
    public static void sendOrderMsg(String appid,
                                    String appSecret,
                                    String userOpenid,
                                    String orderId,
                                    String serviceName) {

        // 模板消息 ID
        // {{first.DATA}}
        // 订单编号:{{keyword1.DATA}}
        // 订货终端:{{keyword2.DATA}}
        // 下单时间:{{keyword3.DATA}}
        // {{remark.DATA}}
        String OrderMsgTemplateId = "Th5MwuyqSjfADUDOJ5PSGDf1swr1-nHmOtLYlVX8n_8";

        // 卡片详情跳转页,设置此值,当点击消息时会打开指定的页面
//        String detailUrl = "https://bing.com";

        SimpleDateFormat sdf = new SimpleDateFormat();
        sdf.applyPattern("yyyy-MM-dd HH:mm");
        Date date = new Date();
        String timeNow = sdf.format(date);

        WxMpInMemoryConfigStorage wxStorage = new WxMpInMemoryConfigStorage();
        wxStorage.setAppId(appid);
        wxStorage.setSecret(appSecret);

        WxMpService wxMpService = new WxMpServiceImpl();
        wxMpService.setWxMpConfigStorage(wxStorage);

      	// 此处的 key/value 需和模板消息对应
        List<WxMpTemplateData> wxMpTemplateDataList = Arrays.asList(
                new WxMpTemplateData("first", "您有一个新的订货单", "#000000"),
                new WxMpTemplateData("keyword1", orderId),
                new WxMpTemplateData("keyword2", serviceName),
                new WxMpTemplateData("keyword3", timeNow),
                new WxMpTemplateData("remark", "请登录系统查看订单详情并及时配货")
        );

        WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
                .toUser(userOpenid)
                .templateId(OrderMsgTemplateId)
                .data(wxMpTemplateDataList)
//                .url(detailUrl)
                .build();

        try {
            wxMpService.getTemplateMsgService().sendTemplateMsg(templateMessage);
        } catch (Exception e) {
            System.out.println("推送失败:" + e.getMessage());
        }

    }

}

3. 配置参数

xx.properties

wx:
  mp:
    appid: xxx
    appSecret: xxx

4. 使用

在需要的 Controller 中直接引用即可

@Controller
@RequestMapping("/order")
public class XXController {
  
	@Value("${wx.mp.appid}")
	private String APPID;

	@Value("${wx.mp.appSecret}")
	private String APP_SECRET;
  
  @RequestMapping(value = "/create", method = RequestMethod.POST)
  public CommonResult create() {
    
    String openid = "";		// 发送给指定的用户
    String serviceName = "";
    String orderNo = "";
    
    SubscriptionMessage.sendOrderMsg(APPID, APP_SECRET, openid, orderNo, serviceName);
  }
  
}

微信测试号

开发过程中直接使用正式微信号、公众号可能会有诸多不便,所以微信公众平台提供接口测试账号,可直接体验和测试公众平台所有高级接口。

地址: 微信公众平台测试账号

登录后可查看测试账号的 appid、appsecret

可以使用微信扫描页面下方的测试公众号二维码关注,关注后可获取当前微信号的测试 openid(非公众账号的 openid),可用于代码中临时指定模板消息接收用户,方便开发。

该测试平台还提供测试用模板消息,可自定义模板消息,创建完成后会临时生成模板 ID ,代码中直接替换即可。

接收消息示例如下:

接收消息 demo

总结 

到此这篇关于微信公众号服务号推送模板消息设置方法的文章就介绍到这了,更多相关公众号推送模板消息内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!

相关文章

  • Spring Cloud Gateway + Nacos 实现动态路由

    Spring Cloud Gateway + Nacos 实现动态路由

    这篇文章主要介绍了Spring Cloud Gateway + Nacos 实现动态路由的方法,帮助大家实现路由信息的自动更新,感兴趣的朋友可以了解下
    2020-10-10
  • java性能优化之代码缓存优化

    java性能优化之代码缓存优化

    这篇文章主要介绍了java性能优化之代码缓存优化,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-07-07
  • Spring框架十一种常见异常的解决方法汇总

    Spring框架十一种常见异常的解决方法汇总

    今天小编就为大家分享一篇关于Spring框架十一种常见异常的解决方法汇总,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • java利用jieba进行分词的实现

    java利用jieba进行分词的实现

    本文主要介绍了在Java中使用jieba-analysis库进行分词,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-03-03
  • Java中ResponseBodyEmitter的实现

    Java中ResponseBodyEmitter的实现

    这篇文章主要介绍了Java中ResponseBodyEmitter的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Java中final与继承操作实例分析

    Java中final与继承操作实例分析

    这篇文章主要介绍了Java中final与继承操作,结合实例形式分析了Java中使用final阻止继承的相关原理与操作注意事项,需要的朋友可以参考下
    2019-09-09
  • IDEA 2020.2 +Gradle 6.6.1 + Spring Boot 2.3.4 创建多模块项目的超详细教程

    IDEA 2020.2 +Gradle 6.6.1 + Spring Boot 2.3.4 创建多模块项目的超详细教程

    这篇文章主要介绍了IDEA 2020.2 +Gradle 6.6.1 + Spring Boot 2.3.4 创建多模块项目的教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • 使用EasyPoi实现word文档生成和段落循环

    使用EasyPoi实现word文档生成和段落循环

    EasyPoi是一个Java的Excel和Word处理库,主要用于将Java对象转换为Excel或Word文档,本文主要介绍了如何使用EasyPoi实现word文档生成和段落循环,有需要的可以了解下
    2025-04-04
  • SpringBoot图文并茂带你掌握devtools热启动

    SpringBoot图文并茂带你掌握devtools热启动

    这篇文章主要介绍springBoot插件工具热部署Devtools,本文分步骤给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • java虚拟机学习高级篇

    java虚拟机学习高级篇

    在本篇文章里小编给大家整理了关于java虚拟机学习高级篇的相关内容,有兴趣的朋友们跟着学习参考下。
    2019-06-06

最新评论