企业级微信公众号开发框架(spring+hibernate+springmvc)-01
2015-12-10 16:30
751 查看
这两年随着腾讯推出的微信公众号这个玩意,衍生了不少的专门搞这块的互联网公司,其中不少的公司都发展的很不错了。
本人从13年就开始从事这块的开发,对微信开发这块已有还算可以的了解吧!微信公众号的开发其实都不难,就是接口的配置了。不过腾讯是个坑,有时候接口本身就有问题,这样会搞死一大片的开发者。就像之前微信支付的接口一样,我被它整了两个星期,靠,后面才知道官方接口问题。不说了,说多了都是泪啊!
从事软件开发几年以来,一直在想网上怎么没有一个一整套的开发的框架源码呢?搞的每天不是活在业务里就是活在百度里。百度里也是醉了,这么大的一个收索引擎,居然都没
有真正的技术牛人来解决我们这些小白的问题,基本上是大白对小白的一些零零碎碎的指导。废话不多说了,开始吧,我发现跟小学写作文似的,写不下去了。
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/sleep.gif)
一。微信后台对接
1.1 URL是什么?
很多同学刚开始开发的时候都不知道这连接是啥玩意?其实就是访问你的接口的那个方法。
如 你的服务器域名加你的方法名
Tocken又是什么鬼?
就是你自己定义的一个密钥,如你要设成99999就可以了
最后那个随机生成就可以了。不多解释。
这玩意怎么搞呢?
就是你要写代码根据他的协议来进行接口对接了。
下面我先引用网上的一段代码
package org.liufeng.course.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.liufeng.course.util.SignUtil;
/**
* 核心请求处理类
*
* @author liufeng
* @date 2013-05-18
*/
public class CoreServlet extends HttpServlet {
private static final long serialVersionUID = 4440739483644821986L;
/**
* 确认请求来自微信服务器
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 微信加密签名
String signature = request.getParameter("signature");
// 时间戳
String timestamp = request.getParameter("timestamp");
// 随机数
String nonce = request.getParameter("nonce");
// 随机字符串
String echostr = request.getParameter("echostr");
PrintWriter out = response.getWriter();
// 通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败
if (SignUtil.checkSignature(signature, timestamp, nonce)) {
out.print(echostr);
}
out.close();
out = null;
}
/**
* 处理微信服务器发来的消息
*/
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO 消息的接收、处理、响应
}
}
package org.liufeng.course.util;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
/**
* 请求校验工具类
*
* @author liufeng
* @date 2013-05-18
*/
public class SignUtil {
// 与接口配置信息中的Token要一致
private static String token = "weixinCourse";
/**
* 验证签名
*
* @param signature
* @param timestamp
* @param nonce
* @return
*/
public static boolean checkSignature(String signature, String timestamp, String nonce) {
String[] arr = new String[] { token, timestamp, nonce };
// 将token、timestamp、nonce三个参数进行字典序排序
Arrays.sort(arr);
StringBuilder content = new StringBuilder();
for (int i = 0; i < arr.length; i++) {
content.append(arr[i]);
}
MessageDigest md = null;
String tmpStr = null;
try {
md = MessageDigest.getInstance("SHA-1");
// 将三个参数字符串拼接成一个字符串进行sha1加密
byte[] digest = md.digest(content.toString().getBytes());
tmpStr = byteToStr(digest);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
content = null;
// 将sha1加密后的字符串可与signature对比,标识该请求来源于微信
return tmpStr != null ? tmpStr.equals(signature.toUpperCase()) : false;
}
/**
* 将字节数组转换为十六进制字符串
*
* @param byteArray
* @return
*/
private static String byteToStr(byte[] byteArray) {
String strDigest = "";
for (int i = 0; i < byteArray.length; i++) {
strDigest += byteToHexStr(byteArray[i]);
}
return strDigest;
}
/**
* 将字节转换为十六进制字符串
*
* @param mByte
* @return
*/
private static String byteToHexStr(byte mByte) {
char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
char[] tempArr = new char[2];
tempArr[0] = Digit[(mByte >>> 4) & 0X0F];
tempArr[1] = Digit[mByte & 0X0F];
String s = new String(tempArr);
return s;
}
}
这是servlet的获取。后续会写上spring mvc 的写法,需要strutr2的写法的朋友请加qq2219609637私聊
第二期将搭建框架的内容写上
请允许打个小广告
企业级微信开发后台通用框架
相关文章推荐
- Java排序之排序大综合
- Java学习----数组
- Java IO流详解
- 启动工程时总会报一些奇葩的问题,Failed to read candidate component class,Caused by: java.lang.IncompatibleClassChang
- MyEclipse 优化
- spring+atomikos+JTA完整例子
- Spring详解
- Spring没有对ORM模块提供自己的实现,只对JDBC和其他ORM框架进行了封装。
- 另类的package-info.java文件探讨
- Spring注解@Component、@Repository、@Service、@Controller区别
- Spring4+SpringMVC4+Mybatis3框架整合
- spring 注解
- Java开发中的23种设计模式详解(转)
- myeclipse10 如何把代码预览的窗口去掉
- Java文件操作(一)按照字节读写
- Java编程中常见的单词翻译 Mutator Methods Accessor Methods
- Java NIO使用及原理分析 (一)
- java反射机制提供的功能
- JAVA语言的几种数组复制方法
- Java编程思想之this关键字和static关键字