- 添加模板插件
等待微信服务器审批通过
- 添加模板
- 封装模板消息数据
package com.skynet.wechat.po; import java.util.HashMap; import com.alibaba.fastjson.JSONObject; public class TemplateData { private String touser; private String template_id; private String url; private String topcolor; private TemplateItem data;
public static TemplateData New() { return new TemplateData(); }
private TemplateData() { this.data = new TemplateItem(); }
public String getTouser() { return touser; }
public TemplateData setTouser(String touser) { this.touser = touser; return this; }
public String getTemplate_id() { return template_id; }
public TemplateData setTemplate_id(String template_id) { this.template_id = template_id; return this; }
public String getUrl() { return url; }
public TemplateData setUrl(String url) { this.url = url; return this; }
public String getTopcolor() { return topcolor; }
public TemplateData setTopcolor(String topcolor) { this.topcolor = topcolor; return this; }
public TemplateItem getData() { return data; }
public TemplateData add(String key, String value, String color){ data.put(key, new Item(value, color)); return this; }
/** * 直接转化成jsonString * @return {String} */ public String build() { return JSONObject.toJSONString(this); }
public class TemplateItem extends HashMap<String, Item> {
private static final long serialVersionUID = -3728490424738325020L;
public TemplateItem() {}
public TemplateItem(String key, Item item) { this.put(key, item); } }
public class Item { private Object value; private String color;
public Object getValue() { return value; } public void setValue(Object value) { this.value = value; } public String getColor() { return color; } public void setColor(String color) { this.color = color; }
public Item(Object value, String color) { this.value = value; this.color = color; } } }
|
建议用这种方式封装数据,注意我的代码不是的。
- 发送消息
/** * 发送模板消息 * @param tplMsg 消息内容 * @param accessToken * @return */ public static JSONObject sendTemplateMessage(String tplMsg, String accessToken) throws WxErrorException { if (tplMsg != null) { JSONObject jsonObject = HttpClientUtils.httpPost(SEND_TEMPLATE_MESSAGE.replace("ACCESS_TOKEN", accessToken), tplMsg); if (isWxError(jsonObject)) { throw new WxErrorException(WxError.fromJson(jsonObject)); } return jsonObject; } return null; } |
- 控制器调用
//4. 发送微信客服消息,一般满足特定条件 if(result >0 ) { logger.info("提交加油订单成功=="+result); String accessToken = wechatService.getToken(); String remark = "恭喜你,订单已提交请在2小时之内支付。"; String openid = record.getOpenId(); //4.1 创建模板消息对象封装数据 TemplateMessage tplMsg = new TemplateMessage(); tplMsg.setOpenid(openid); tplMsg.setTemplateId("bt7ArrMK_VZc8nU2FTXpR6OkhfFEDQamuSDJUkWA2Vg"); tplMsg.setUrl("http://www.hnjindouyun.com/views/payment/pay.html?order="+orderNo); Map<String, String> dataMap = new HashMap<String, String>(); dataMap.put("first", "订单提交成功"); dataMap.put("keyword1", "油品" + record.getOilName()); dataMap.put("keyword2", orderNo); dataMap.put("keyword3",DateUtil.timeToString(new Date())); try { dataMap.put("keyword4", BigDecimalUtil.fen2YuanAnother(record.getRealAmount().toString())+"元"); } catch (Exception e) { e.printStackTrace(); logger.info(String.format("分转换成元异常: %s",e.getMessage())); } dataMap.put("remark", remark); tplMsg.setDataMap(dataMap); logger.info(String.format("提交加油订单成功参数信息: token=%s, tplMsg=%s==",accessToken,tplMsg)); //4.1 发送客服模板消息 JSONObject json = WeixinUtil.sendTemplateMessage(tplMsg, accessToken); logger.info("提交加油订单成功,发送客服消息执行结果==="+json); return SkynetResult.success(orderNo); }else { logger.info("提交加油订单失败=="+result); return SkynetResult.fail(); } /** * 发送模板消息 WeixinUtil * @param tplMsg 消息内容 * @param accessToken * @return */ public static JSONObject sendTemplateMessage(TemplateMessage tplMsg, String accessToken) throws WxErrorException { if (tplMsg != null) { JSONObject jsonObject = HttpClientUtils. httpPost(SEND_TEMPLATE_MESSAGE.replace("ACCESS_TOKEN", accessToken), tplMsg.toString()); if (isWxError(jsonObject)) { throw new WxErrorException(WxError.fromJson(jsonObject)); } return jsonObject; } return null; } |
- 执行效果
有问题留言,或者加微信: fuzi_it 。