API地址:http://mp.weixin.qq.com/wiki/7/12a5a320ae96fecdf0e15cb06123de9f.html
发送消息请求接口地址:https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=ACCESS_TOKEN
微信公众号向用户发送消息,根据类型可以分为文本消息、图片消息、语言消息、视频消息、音乐消息、图文消息。这里已文本消息为例,发送其他类型消息,需先将消息文件上传至公众号。
创建一个base实体:CustomMsg,给CustomMsg类一个空的toJSON方法。具体消息实体继承CustomMsg即可。
//所有消息类型父类 public class CustomMsg { private String touser; private MsgTypeEnum msgtype;//消息类型 //省略getter、setter方法 public String toJSON(){ return ""; } } //消息类型枚举 public enum MsgTypeEnum { TEXT("文本","green","text"), IMAGE("图片","green","image"), VOICE("语言","green","voice"), VIDEO("视频","green","video"), MUSIC("音乐","green","music"), NEWS("图文","green","news"), WXCARD("卡券","green","wxcard"); private String label; private String color; private String value; private MsgTypeEnum(String label,String color,String value) { this.setLabel(label); this.setColor(color); this.setValue(value); } //省略getter、setter方法 }
文本消息实体继承CustomMsg,重写toJSON方法
public class TextMsg extends CustomMsg{ private String content; //指定消息类型 public TextMsg(){ this.setMsgtype(MsgTypeEnum.TEXT); } public String getContent() { return content; } public void setContent(String content) { this.content = content; } //重写父类方法 public String toJSON() { StringBuffer buffer = new StringBuffer(); buffer.append("{"); buffer.append(String.format(""touser":"%s"", this.getTouser())).append(","); buffer.append(String.format(""msgtype":"%s"", this.getMsgtype().getValue())).append(","); buffer.append(String.format(""%s":{",this.getMsgtype().getValue())); buffer.append(String.format(""content":"%s"", this.content)); buffer.append("}"); buffer.append("}"); return buffer.toString(); } }
发送消息,httpsRequestToJsonObject在前面的工具类中
TextMsg textMsg = new TextMsg(); String content = "hello! custom message!"; textMsg.setContent(content); textMsg.setTouser("oRKn_jnBnfKC7bqU6YBPb-3FS8DE"); JSONObject jsonObject = customMessageService.sendCustomMsg(textMsg);
public JSONObject sendCustomMsg(CustomMsg customMsg){ //获取token String token = accessTokenService.getAccessToken(); String requestUrl = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=ACCESS_TOKEN"; requestUrl=requestUrl.replace("ACCESS_TOKEN", token); if (log.isDebugEnabled()) { log.debug(customMsg.toJSON()); } JSONObject jsonObject = CommonUtil.httpsRequestToJsonObject(requestUrl, "POST", customMsg.toJSON(),false); return jsonObject; }
实现效果: