java 模板接口开发_微信公众平台 发送模板消息(Java接口开发)

前言:最近一直再弄微信扫码推送图文消息和模板消息发送,感觉学习到了不少东西。今天先总结一下微信公众平台模板消息的发送。因为这个自己弄了很久,开始很多地方不明白,所以今天好好总结一下。

微信公众平台技术文档:模板消息接口

一、概述

模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通知,商品购买成功通知等。不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息。

关于使用规则,请注意:

1

关于接口文档,请注意:

1、模板消息调用时主要需要模板ID和模板中各参数的赋值内容;

2、模板中参数内容必须以”.DATA”结尾,否则视为保留字;

3、模板保留符号”{{ }}”。

看微信公众平台接口文档最开始我的内心是崩溃的,因为目录列表一开始就是设置所属行业,获取所属行业信息等。后来整理思路,我们主要负责的功能的实现,就不去考虑那么多其他的内容,直接弄模板消息的发送。但是发送模板之前有一个很重要的步骤,就是模板ID(template_id)。微信公众平台发送模板消息有严格的要求,参考模板消息运营规范。

二、模板消息的设计

这里是依靠微信公众平台测试公众号的模板消息接口来设计消息模板,通过行业类型来获取模板的同学还是参考微信公众平台的官方文档来学习。

1 新增模板消息

4b4a8b486db49080098b8452b006cbf4.png

微信的测试公众号为我们提供了测试的消息模板,最多可添加10个(感觉够用,毕竟只是测试),新增测试模板。

90fb541a39613ab7aa45462f0477abf5.png

(1)添加模板标题和模板内容

64f54ce4f53e78c7e85a95736f881b0c.png

模板标题比较好理解,模板内容需要设计参数,参数需以{{开头,以.DATA}}结尾。

例如:{{first.DATA}}

first就是我们接口传的参数。

{{first.DATA}}

商品:{{keynote1.DATA}}

价格:{{keynote2.DATA}}

日期:{{keynote3.DATA}}

{{remark.DATA}}

新增之后就可以看到模板记录,就有我们需要的模板ID了。有了模板ID我们就可以按照编程客栈接下来的微信公众平台发送模板消息接口来实现我们的功能。

1602630782e1fb6fa40092a13904d1ac.png

三、发送模板消息

1 接口调用请求说明

http请求方式: POST

https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN

2 POST数据说明

POST数据示例如下:

{

"touser":"OPENID",

"template_id":"ngqIpbwh8bUfcssECmogfXcV14J0tQlEpBO27izEYtY",

"url":"http://weixin.qq.com/download",

"miniprogram":{

"appid":"xiaochengxuappid12345",

"pagepath":"index?foo=bar"

},

"data":{

"first": {

"value":"恭喜你购买成功!",

"color":"#173177"

},

"keynote1":{

"value":"巧克力",

"color":"#173177"

},

"keynote2": {

"value":"39.8元",

"color":"#173177"

},

"keynote3": {

"value":"2014年9月22日",

"color":"#173177"

},

"remark":{

"value":"欢迎再次购买!",

"color":"#173177"

}

}

}

3 参数说明

参数

是否必填

说明、

touser

接收者openid

template_id

模板ID

url

模板跳转链接

miniprogram

跳小程序所需数据,不需跳小程序可不用传该数据

appid

所需跳转到的小程序appid(该小程序appid必须与发模板消息的公众号是绑定关联关系)

pagepath

编程客栈 所需跳转到小程序的具体页面路径,支持带参数,(示例index?foo=bar)

data

模板数据

注:url和miniprogram都是非必填字段,若都不传则模板无跳转;若都传,会优先跳转至小程序。开发者可根据实际需要选择其中一种跳转方式即可。当用户的微信客户端版本不支持跳小程序时,将会跳转至url。

4 java接口开发

(1)封装请求参数Demo

public class TemplateData {

private String value;

private String color;

public String getValue() {

return value;

}

public void setValue(String value) {

this.value = value;

}

public String getColor() {

return color;

}

public void setColor(String color) {

this.color = color;

}

}

public class WechatTemplate {

private String touser;

private String template_id;

private String url;

private Map data;

public String getTouser() {

return touser;

}

public void setTouser(String touser) {

this.touser = touser;

}

public String getTemplate_id() {

return template_id;

}

public void setTemplate_id(String template_id) {

this.template_id = template_id;

}

public String getUrl() {

return url;

}

public void setUrl(String url) {

this.url = url;

}

public Map getData() {

return data;

}

public void setData(Map data) {

this.data = data;

}

}

(2)发送模板消息方法

public class TemplateMessageServiceImpl implements TemplateMessageService{

private RestTemplate restTemplate ;

private String serviceHost = "https://api.weixin.qq.com";

public TemplateMessageServiceImpl() {

restTemplate = RestTemplateFactory.makeRestTemplate();

}

@Override

public WeixinResponse sendTemplateMessage(String accessToken, WeixinTemplate weixinTemplate) {

WeixinResponse weixinResponse = null;

String url = new StringBuffer(serviceHost).append("/cgi-bin/message/template/send?access_token=")

.append(accessToken).toString();

weixinResponse = restTemplate.postForObject(url, weixinTemplate, WeixinResponse.class,new HashMap());

return weixinResponse;

}

}

说明:简单理解模板消息发送,首先是获取accessToken,(如何获取请参考:微信公众平台 获取access_token)。其次是模板消息的参数封装,最后就是http的post请求。我的http请求是使用Spring的restTemplate进行请求,就不用我单独写一个http请求方法,如果没有使用可以写一个http请求的工具类。

(3)封装响应参数Demo

package com.plateno.weixin.编程客栈message.model;

public class WeixinResponse {

private String msgid;

private int errcode;

private String errmsg;

public String getMsgid() {

return msgid;

}

public void setMsgid(String msgid) {

this.msgid = msgid;

}

public int getErrcode() {

return errcode;

}

public void setErrcode(int errcode) {

this.errcode = errcode;

}

public String getErrmsg() {

return errmsg;

}

public void setErrmsg(String errmsg) {

this.errmsg = errmsg;

}

@Override

public String toString() {

StringBuffer buf = new StringBuffer("WeixinResponse[msgid=");

buf.append(msgid)

.append(",errcode=").append(errcode)

.append(",errmsg=").append(errmsg)

.append("]");

return buf.toString();

}

}

模板消息发送效果:

e076798301dc66ad1c0c87ad6fe2e76f.png

四、事件推送

在模版消息发送任务完成后,微信服务器会将是否送达成功作为通知,发送到开发者中心中填写的服务器配置地址中。

1 送达成功时

(1)推送的XML如下

1395658920

200163836

(2)参数说明

参数

说明

ToUserName

公众号微信号

FromUserName

接收模板消息的用户的openid

CreateTime

创建时间

MsgType

消息类型是事件

Event

事件为模板消息发送结束

MsgID

消息id

Status

发送状态为成功

2 送达由于用户拒收(用户设置拒绝接收公众号消息)而失败时

(1)推送的XML如下

1395658984

200163840

(2)参数说明

参数

说明

ToUserName

公众号微信号

FromUserName

接收模板消息的用户的openid

CreateTime

创建时间

MsgType

消息类型是事件

Event

事件为模板消息发送结束

MsgID

消息id

Status

发送状态为用户拒绝接收

3 送达由于其他原因失败时

(1)推送的XML如下

1395658984

200163840

(2)参数说明

参数

说明

ToUserName

公众号微信号

FromUserName

接收模板消息的用户的openid

CreateTime

创建时间

MsgType

消息类型是事件

Event

事件为模板消息发送结束

MsgID

消息id

Status

发送状态为发送失败(非用户拒绝)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

本文标题: 微信公众平台 发送模板消息(Java接口开发)

本文地址: http://www.cppcns.com/wangluo/javascript/257296.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Java 程序中集成微信公众模板消息功能,您需要按照以下步骤进行: 1. 在微信公众平台上申请并获取您的公众号的 appid 和 appsecret。 2. 使用 appid 和 appsecret 调用微信公众平台接口,获取调用模板消息 API 所需的 access_token。 3. 在微信公众平台上添加您的模板消息,并获取模板消息模板 ID。 4. 使用 Java 程序调用微信公众平台模板消息 API,向用户发送模板消息。 为了方便调用微信公众平台接口,您可以使用第三方的 Java 类库,比如微信官方的微信开发工具包、第三方的项目等。 示例代码(使用微信官方的微信开发工具包): ```java import com.github.binarywang.wxpay.bean.template.WxTemplate; import com.github.binarywang.wxpay.bean.template.WxTemplateData; import com.github.binarywang.wxpay.bean.template.WxTemplateMessage; import com.github.binarywang.wxpay.exception.WxPayException; import com.github.binarywang.wxpay.service.WxPayService; public void sendTemplateMessage(WxPayService wxPayService, String openid, String templateId, String url, Map<String, String> data) throws WxPayException { WxTemplate template = new WxTemplate(); template.setTemplateId(templateId); template.setUrl(url); template.setTopColor("#00DD00"); List<WxTemplateData> templateDataList = new ArrayList<>(); for (Map.Entry<String, String> entry : data.entrySet()) { templateDataList.add(new WxTemplateData(entry.getKey(), entry.getValue())); } template.setData(templateDataList); WxTemplateMessage
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值