package com.Service;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.model.Media;
import com.model.TextMessage;
import com.model.picAndTextMess;
import com.util.Ckeckutil;
import com.util.MessageUtil;
/**
* 微信消息处理
* @author nwz
*
*/
public class WeChatMessageService {
/**
* 微信公众号配置服务器验证
* @param request servlet原生request
* @param response servlet原生response
* @throws IOException IO异常
*/
public void initWX(String Token,HttpServletRequest request,HttpServletResponse response){
//由request中取得校验信息
/**
* 开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下:
1)将token、timestamp、nonce三个参数进行字典序排序
2)将三个参数字符串拼接成一个字符串进行sha1加密
3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
*/
String signature=request.getParameter("signature");//获取微信加密签名
String timestamp=request.getParameter("timestamp");//获取时间戳
String nonce=request.getParameter("nonce");//获取随机数
String echostr=request.getParameter("echostr");//获取随机字符串
//准备打印流
PrintWriter out=null;
try {
//从response中获取打印流
out = response.getWriter();
//进行校验
if(Ckeckutil.doGet(Token, nonce, timestamp, signature)){
//校验正确,返回echostr
out.print(echostr);
}
} catch (IOException e) {
System.out.println("WeChatMessageService_initWX()出错;异常类型:IOException");
e.printStackTrace();
}
//关闭打印流
out.close();
}
/**
* 事件类型处理方法
* @param textmessage 消息
* @return
*/
public String event(TextMessage textmessage){
System.out.println("进入事件类型处理方法");
//关注微信公众号的事件
if("subscribe".equals(textmessage.getEvent())){
return returnText(textmessage,"欢迎加入我们的公众号");
}
//取消订阅微信公众号的事件
if("unsubscribe".equals(textmessage.getEvent())){
}
//点击事件
if("CLICK".equals(textmessage.getEvent())){
return returnText(textmessage,"您点击的按钮为:"+textmessage.getEventKey());
}
//view类型事件
if("VIEW".equals(textmessage.getEvent())){
}
return "";
}
/**
* 文本类型处理方法
* @param textmessage 消息
* @return
*/
public String text(TextMessage textmessage){
System.out.println("进入文本类型处理方法");
return returnText(textmessage,"您发送的消息为:"+textmessage.getContent());
}
/**
* 图片类型处理方法
* @param textmessage 消息
* @return
*/
public String image(TextMessage textmessage){
System.out.println("进入图片类型处理方法");
//写需要返回的消息
TextMessage text=new TextMessage();
text.setToUserName(textmessage.getFromUserName());
text.setFromUserName(textmessage.getToUserName());
text.setMsgType("image");//返回图片信息
text.setCreateTime(""+(new Date().getTime()));
Media m=new Media();
m.setMediaId(textmessage.getMediaId());
text.setImage(m);
//将返回的类信息转换为xml字符串
return MessageUtil.textMessageToXml(text);
}
/**
* 地理位置处理方法
* @param textmessage 消息
* @return
*/
public String location(TextMessage textmessage){
System.out.println("进入地理位置处理方法");
return returnText(textmessage,"您刚才发送的地址为:"+textmessage.getLabel()+"\n北纬:"+textmessage.getLocation_X()+"\n东经:"+textmessage.getLocation_Y());
}
/**
* 语音处理方法
* @param textmessage 消息
* @return
*/
public String voice(TextMessage textmessage){
System.out.println("进入语音处理方法");
return returnText(textmessage,textmessage.getRecognition());
}
/**
* 视频类型处理方法
* @param textmessage 消息
* @return
*/
public String video(TextMessage textmessage) {
System.out.println("进入视频类型处理方法");
return returnText(textmessage,"视频类型");
}
/**
* 小视频类型处理方法
* @param textmessage 消息
* @return
*/
public String shortvideo(TextMessage textmessage) {
System.out.println("进入小视频类型处理方法");
return returnText(textmessage,"小视频类型");
}
/**
* 链接类型处理方法
* @param textmessage 消息
* @return
*/
public String link(TextMessage textmessage) {
System.out.println("进入链接类型处理方法");
return returnText(textmessage,"链接类型");
}
/**
* 未知类型处理方法
* @param textmessage 消息
* @return
*/
public String elseMessage(TextMessage textmessage) {
System.out.println("进入未知类型处理方法");
return returnText(textmessage, "未知类型");
}
/**
* 返回文本消息
* @param textmessage 消息
* @return
*/
public String returnText(TextMessage textmessage,String message){
//写需要返回的消息
TextMessage text=new TextMessage();
text.setToUserName(textmessage.getFromUserName());
text.setFromUserName(textmessage.getToUserName());
text.setMsgType("text");//返回文本信息
text.setCreateTime(""+(new Date().getTime()));
//根据文本调用机器人方法
text.setContent(message);
//将返回的类信息转换为xml字符串
return MessageUtil.textMessageToXml(text);
}
/**
* 返回图文消息
* @param textmessage 消息
* @return
*/
public String returnNews(TextMessage textmessage){
System.out.println("进入返回图文消息方法");
//写需要返回的消息
TextMessage text=new TextMessage();
text.setToUserName(textmessage.getFromUserName());
text.setFromUserName(textmessage.getToUserName());
text.setMsgType("news");//返回图文消息
text.setCreateTime(""+(new Date().getTime()));
picAndTextMess patm1=new picAndTextMess();
patm1.setTitle("测试1");
patm1.setDescription("进入百度");
patm1.setPicUrl("https://www.baidu.com/img/bd_logo1.png");
patm1.setUrl("https://www.baidu.com/");
picAndTextMess patm2=new picAndTextMess();
patm2.setTitle("测试2");
patm2.setDescription("微信测试");
patm2.setPicUrl("微信图片_20170816104311.jpg");
patm2.setUrl("http://47.92.90.44/mf/main.html");
picAndTextMess patm3=new picAndTextMess();
patm3.setTitle("测试3");
patm3.setDescription("时间");
patm3.setPicUrl("http://www.css88.com/demo/jquery_colorpicker/wheel.png");
patm3.setUrl("http://47.92.90.44/time/time.html");
picAndTextMess patm4=new picAndTextMess();
patm4.setTitle("测试4");
patm4.setDescription("时间");
patm4.setPicUrl("http://www.css88.com/demo/jquery_colorpicker/wheel.png");
patm4.setUrl("http://47.92.90.44/time/time.html");
picAndTextMess patm5=new picAndTextMess();
patm5.setTitle("测试5");
patm5.setDescription("时间");
patm5.setPicUrl("http://www.css88.com/demo/jquery_colorpicker/wheel.png");
patm5.setUrl("http://47.92.90.44/time/time.html");
picAndTextMess patm6=new picAndTextMess();
patm6.setTitle("测试6");
patm6.setDescription("时间");
patm6.setPicUrl("http://www.css88.com/demo/jquery_colorpicker/wheel.png");
patm6.setUrl("http://47.92.90.44/time/time.html");
picAndTextMess patm7=new picAndTextMess();
patm7.setTitle("测试7");
patm7.setDescription("时间");
patm7.setPicUrl("http://www.css88.com/demo/jque
没有合适的资源?快使用搜索试试~ 我知道了~
Java微信公众号开发完整项目

Java开发微信公众号。
资源详情
资源评论
资源推荐
收起资源包目录
































































































共 61 条
- 1
- 2
- 3
- 4
- 5
- 6
- 13











浅淡028
- 粉丝: 4
- 资源: 18

上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助

会员权益专享
安全验证
文档复制为VIP权益,开通VIP直接复制

评论3