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微信公众号开发完整项目
共61个文件
java:22个
class:22个
xml:4个
3星 · 超过75%的资源 需积分: 39 180 下载量 104 浏览量
2018-04-25
16:02:13
上传
评论 9
收藏 65KB ZIP 举报
温馨提示
Java开发微信公众号。
资源详情
资源评论
资源推荐
收起资源包目录
WeChat.zip (61个子文件)
WeChat
.project 1KB
src
test
resources
java
main
webapp
WEB-INF
web.xml 490B
index.jsp 57B
resources
java
com
model
picAndTextMess.java 846B
button
Button.java 123B
Matchrule.java 2KB
clickButton.java 884B
Menu.java 502B
sumButton.java 517B
viewButton.java 520B
tuLing
tuLingRobbt.java 419B
news.java 1KB
tuLingMessage.java 946B
Media.java 326B
AccessToken.java 1KB
TextMessage.java 5KB
controller
WeChatController.java 5KB
util
Ckeckutil.java 4KB
Main.java 496B
MessageUtil.java 3KB
Json.java 2KB
SHA1.java 8KB
Service
tuLingService.java 2KB
WeChatService.java 4KB
WeChatMessageService.java 9KB
target
m2e-wtp
web-resources
META-INF
MANIFEST.MF 105B
maven
WX
WeChat
pom.properties 205B
pom.xml 2KB
classes
com
model
TextMessage.class 5KB
button
clickButton.class 961B
Menu.class 1KB
Button.class 277B
sumButton.class 1KB
Matchrule.class 2KB
viewButton.class 957B
tuLing
news.class 2KB
tuLingMessage.class 1KB
tuLingRobbt.class 773B
AccessToken.class 1KB
picAndTextMess.class 1KB
Media.class 529B
controller
WeChatController.class 5KB
util
Main.class 1KB
Json.class 3KB
Ckeckutil.class 4KB
SHA1.class 5KB
MessageUtil.class 3KB
Service
tuLingService.class 2KB
WeChatService.class 4KB
WeChatMessageService.class 7KB
test-classes
.settings
org.eclipse.wst.jsdt.ui.superType.container 49B
org.eclipse.wst.common.project.facet.core.xml 252B
org.eclipse.m2e.core.prefs 90B
org.eclipse.jdt.core.prefs 430B
org.eclipse.wst.validation.prefs 50B
org.eclipse.wst.jsdt.ui.superType.name 6B
org.eclipse.core.resources.prefs 269B
org.eclipse.wst.common.component 832B
.jsdtscope 639B
pom.xml 2KB
.classpath 861B
共 61 条
- 1
浅淡028
- 粉丝: 4
- 资源: 18
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论3