微信公众号开发,遇见了45015错误,只能通过模板消息来解决了

在使用客服发送消息的时候,发现会报45015错误

{"errcode":45015,"errmsg":"response out of time limit or subscription is canceled hint: [8dH7Wa04478630]"}

问题原因:由于长时间用户OpenId未和微信公众号做互动消息,微信公众号会停止对用户进行消息推送。

解决办法:1、是我们主动的发送消息,来保证会话。

                  2、是通过模板消息(这样要改代码)

2种情况是实际情况而定

如何开发模板消息

1、配置模板(测试号) 正式需要申请在配置

 2、配置好后,写java代码

 我们可以看看发送格式

如图的json格式,而我的模板中不是这么定义的

我定义的是account_name,err_info,time字段,

封装bean

最外层bean

public class TemplateSend {

	private String touser;
	
	private String template_id;
	
	private String url;
	
	private DataObject 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 DataObject getData() {
		return data;
	}
	public void setData(DataObject data) {
		this.data = data;
	}
}

DataObject

public class DataObject {
	
	private Map<String,Object> account_name;
	
	private Map<String,Object> err_info;
	
	private Map<String,Object> time;
	
	private Map<String,Object> first;
	
	private Map<String,Object> keyword1;
	
	private Map<String,Object> keyword2;
	
	private Map<String,Object> keyword3;
	
	private Map<String,Object> keyword4;
	
	private Map<String,Object> remark;
	

	public Map<String, Object> getAccount_name() {
		return account_name;
	}

	public void setAccount_name(Map<String, Object> account_name) {
		this.account_name = account_name;
	}

	public Map<String, Object> getErr_info() {
		return err_info;
	}

	public void setErr_info(Map<String, Object> err_info) {
		this.err_info = err_info;
	}

	public Map<String, Object> getTime() {
		return time;
	}

	public void setTime(Map<String, Object> time) {
		this.time = time;
	}

	public Map<String, Object> getFirst() {
		return first;
	}

	public void setFirst(Map<String, Object> first) {
		this.first = first;
	}

	public Map<String, Object> getKeyword1() {
		return keyword1;
	}

	public void setKeyword1(Map<String, Object> keyword1) {
		this.keyword1 = keyword1;
	}

	public Map<String, Object> getKeyword2() {
		return keyword2;
	}

	public void setKeyword2(Map<String, Object> keyword2) {
		this.keyword2 = keyword2;
	}

	public Map<String, Object> getKeyword3() {
		return keyword3;
	}

	public void setKeyword3(Map<String, Object> keyword3) {
		this.keyword3 = keyword3;
	}

	public Map<String, Object> getKeyword4() {
		return keyword4;
	}

	public void setKeyword4(Map<String, Object> keyword4) {
		this.keyword4 = keyword4;
	}

	public Map<String, Object> getRemark() {
		return remark;
	}

	public void setRemark(Map<String, Object> remark) {
		this.remark = remark;
	}
	
}

bean封装好,我们就是写测试数据了

模板消息发送链接:

https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN
@Test
	public void sendTemplateText(){
		// 模板消息
		String url = SystemConstant.TEMPLATESEND+token;
		TemplateSend templateSend = new TemplateSend();
		templateSend.setTouser("oV60x1QqydV9g2aYhyJTn6vBNscc");
		templateSend.setTemplate_id("R3jVHnKRXBxtX7ATqIAnV40ZOP35F3aTcjCJqvf_J-Q");
		DataObject data = new DataObject();
		Map<String,Object> account_name = new HashMap<>();
		account_name.put("value", "中华万年历");
		account_name.put("color", "#173177");
		data.setAccount_name(account_name);
		
		Map<String,Object> err_info = new HashMap<>();
		err_info.put("value", "xxxx账户登录失败");
		err_info.put("color", "#173177");
		data.setErr_info(err_info);
		
		Map<String,Object> time = new HashMap<>();
		time.put("value", DateUtils.timeStamp2DateYmdhms(new Date()));
		time.put("color", "#173177");
		data.setTime(time);
		
		templateSend.setData(data);
		String spmMessage = gson.toJson(templateSend);
		System.out.println(spmMessage);
		try {
			String result = HttpClientUtils.sendPost(url,spmMessage);
			System.out.println(result);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值