Java实现发送微信模板消息


申请微信模板成功后,我们应该怎样封装和发送消息到微信,让它推送到公众号。在本文中将会介绍封装和发送模板消息到微信,包括:“将需要发送的消息内容放到hashmap中存储”、“封装详细信息模板”、“拼接json格式数据”、“向微信发送POST请求”、“检查微信返回结果”。

1、将需要发送的消息内容放到hashmap中存储。

			Map<String, Object> param = new HashMap<>();
			SimpleDateFormat sdf = new SimpleDateFormat(DATETIME_FORMAT_Default_Chinese);
			param.put(WxTemplateData.field.getFIELD_NAME_first(), new WxTemplateData("【提醒】你好,你有新的采购订单需要审核", WxTemplateData.backgroundColor));
			param.put(WxTemplateData.field.getFIELD_NAME_keyword1(), new WxTemplateData(staff.getName(), WxTemplateData.backgroundColor));
			param.put(WxTemplateData.field.getFIELD_NAME_keyword2(), new WxTemplateData(company.getName(), WxTemplateData.backgroundColor));
			param.put(WxTemplateData.field.getFIELD_NAME_keyword3(), new WxTemplateData(sdf.format(new Date()), WxTemplateData.backgroundColor));
			param.put(WxTemplateData.field.getFIELD_NAME_keyword4(), new WxTemplateData("采购审核", WxTemplateData.backgroundColor));
			param.put(WxTemplateData.field.getFIELD_NAME_remark(), new WxTemplateData("请及时审批!", WxTemplateData.backgroundColor));

2、封装详细信息模板。

			JSONObject jsData = WxUtils.toJsonObject(param);

	public static JSONObject toJsonObject(Map<String, Object> param) {
		JSONObject jsonObject = new JSONObject();
		for (Map.Entry<String, Object> entry : param.entrySet()) {
			JSONObject keyJson = new JSONObject();
			WxTemplateData templateData = (WxTemplateData) entry.getValue();
			keyJson.put(WxTemplateData.field.getFIELD_NAME_value(), templateData.getValue());
			keyJson.put(WxTemplateData.field.getFIELD_NAME_color(), templateData.getColor());
			jsonObject.put(entry.getKey(), keyJson);
		}
		return jsonObject;
	}

3、拼接json格式数据。

			JSONObject json = new JSONObject();
			json.put(WxTemplate.field.getFIELD_NAME_touser(), openid);// openid
			json.put(WxTemplate.field.getFIELD_NAME_template_id(), templateID);// 模板id
			json.put(WxTemplate.field.getFIELD_NAME_url(), BaseAction.DOMAIN + "wx/isLogin.bx?identify=purchasingOrder&ID=" + purchasingOrder.getID());// 跳转页面
			json.put(WxTemplate.field.getFIELD_NAME_topcolor(), WxTemplateData.backgroundColor);
			json.put(WxTemplate.field.getFIELD_NAME_data(), jsData.toString());// 模板数据

4、向微信发送POST请求。

			String newurl = String.format(templateUrl, accessToken.getAccessToken());
			JSONObject result = WxUtils.postToWxServer(newurl, json.toString());

5、检查微信返回结果。

			int errcode = (int) result.get(BaseWxModel.WX_ERRCODE);
			if (errcode == BaseWxModel.WX_ERRCODE_InvalidToken && MAX_retryCount >= retryCount) {
				logger.error("发送消息到WX服务器时发现Token失效,正在重新申请Token和发送...\r\n此消息为:\r\n" + msg);
				bDeleteOldToken = true;
				retryCount++;
				continue;
			} else if (MAX_retryCount < retryCount) {
				logger.error("发送消息到WX服务器重试次数过大,终止重试");
			}
			String errmsg = (String) result.get(BaseWxModel.WX_ERRMSG);
			params.put(BaseWxModel.WX_ERRCODE, errcode);
			params.put(BaseWxModel.WX_ERRMSG, errmsg);


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM