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

目录
  • 推送的模板消息示例如下 :
  • 设置模板消息
  • 编码
    • 1. 添加依赖
    • 2. SubscriptionMessageUtil.java
    • 3. 配置参数
    • 4. 使用
  • 微信测试号
  • 总结

模板消息文档

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

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

设置模板消息

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

首次设置需要开启模板消息功能,登录公众号后台: 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 ,代码中直接替换即可。

接收消息示例如下:

总结

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

(0)

相关推荐

  • java微信公众号发送消息模板

    本文实例为大家分享了java微信公众号发送消息模板的具体代码,供大家参考,具体内容如下 这段时间接触公众号开发,写下向用户发送消息模板的接口调用 先上接口代码 public static JSONObject sendModelMessage(ServletContext context,JSONObject jsonMsg) { System.out.println("消息内容:"+jsonMsg); boolean result = false; try { getWX_Acces

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

    目录 推送的模板消息示例如下 : 设置模板消息 编码 1. 添加依赖 2. SubscriptionMessageUtil.java 3. 配置参数 4. 使用 微信测试号 总结 模板消息文档 公众号的类型分为服务号.订阅号和企业号,其中服务号和订阅号比较常见.要想实现公众号推动消息给指定的用户,其类型必须为服务号. 推送的模板消息示例如下 : 设置模板消息 此处为正式环境的设置,开发环境可使用微信测试平台提供的测试账号体验和测试公众平台的所有高级接口,无需提前申请审核,详情见本文最后章节. 首

  • 微信服务号推送模板消息接口

    微信服务号现在用的比较火,用户可以通过微信号订阅信息,有时候会用到模板消息.下面贴上代码,有注释写的很详细.在此@access_token 请调用 https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=@appid&secret=@secret 接口获取. 具体代码: public static void Send() { dynamic postData = new ExpandoObject

  • Python编程之微信推送模板消息功能示例

    本文实例讲述了Python微信推送模板消息功能.分享给大家供大家参考,具体如下: 官方文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432 具体代码如下: #!/usr/bin/env python #-*- coding: utf-8 -*- import httplib import json import MySQLdb #从数据库中获取access_token access_token="&quo

  • C#微信接口之推送模板消息功能示例

    本文实例讲述了C#微信接口之推送模板消息功能.分享给大家供大家参考,具体如下: public string SendTempletMessge() { string strReturn = string.Empty; try { #region 获取access_token string apiurl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=你的appid&secr

  • C#微信公众号开发之接收事件推送与消息排重的方法

    本文实例讲述了C#微信公众号开发之接收事件推送与消息排重的方法.分享给大家供大家参考.具体分析如下: 微信服务器在5秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次.这样的话,问题就来了.有这样一个场景:当用户关注微信账号时,获取当前用户信息,然后将信息写到数据库中.类似于pc端网站的注册.可能由于这个关注事件中,我们需要处理的业务逻辑比较复杂.如送积分啊,写用户日志啊,分配用户组啊.等等--一系列的逻辑需要执行,或者网络环境比较复杂,无法保证5秒内响应当前用户的操作,那如果当操作尚未完

  • SpringBoot 实现微信推送模板的示例代码

    导读 由于最近手头上需要做个Message Gateway,涉及到:邮件(点我直达).短信.公众号等推送功能,网上学习下,整理下来以备以后使用. 添加依赖 在SpringBoot项目中添加依赖 <!--微信模版消息推送三方sdk--> <dependency> <groupId>com.github.binarywang</groupId> <artifactId>weixin-java-mp</artifactId> <ver

  • Java微信支付之服务号支付代码示例

    Java微信支付之服务号支付实现,网上的java微信支付sdk和Demo基本上是水的,看着头疼所以我决心自己开始写Java微信支付之公众号支付,多的不说见下面源码,为了方便使用我分别用了两个Servlet,一个是统一下单UnifiedorderServlet,一个是支付回调PayCallBackServlet,你们可以自己封装. 一是统一下单UnifiedorderServlet: import java.io.BufferedReader; import java.io.IOException

  • 升级nginx支持HTTP/2服务端推送的方法

    内容概览 NGINX从1.13.9版本开始支持HTTP/2服务端推送,上周找时间升级了下NGINX,在博客上试验新的特性. 升级工作主要包括: 升级NGINX 修改NGINX配置 修改wordpress主题 升级NGINX到1.14.0 1.配置nginx官方的yum源.创建配置文件 /etc/yum.repos.d/nginx.repo ,写入如下内容 [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/7/$bas

  • 在小程序中推送模板消息的实现方法

    前段时间剁手了 PS4,在浏览商店时,发现官方商店真的不好用,主要是网络原因,次要是页面设计.所以就想自己做一个游戏查询的小程序,可以关注某个游戏,然后在这个游戏打折的时候发送通知给用户.最后发现有个很大的问题是:小程序没法直接给用户推送消息(当时还不知道模板消息),服务号才能.然后就用邮箱实现了通知功能,但是邮箱的局限实在是太大了(各大免费邮箱每天的发件数都很小,自己搭建的邮件服务器虽然没有发件限制,但是大概率会被放到垃圾箱). 然后某天在微信小程序的管理后台发现了模板消息这个东西,查了会资料

  • 微信公众平台开发关注及取消关注事件的方法

    本文实例讲述了微信公众平台开发关注及取消关注事件的方法.分享给大家供大家参考.具体分析如下: 用户在关注与取消关注公众号时,微信会把这个事件推送到开发者填写的URL,方便开发者给用户下发欢迎消息或者做帐号的解绑. 下面是一个微信公众平台关注和取消关注的实例,代码如下: 复制代码 代码如下: define("TOKEN", "w3note");//定义识别码 $wechatObj = new wechatCallbackapiTest();//实例化wechatCal

随机推荐