您的位置:首页 > 编程语言 > Java开发

企业级微信公众号开发框架(spring+hibernate+springmvc)-01

2015-12-10 16:30 751 查看

这两年随着腾讯推出的微信公众号这个玩意,衍生了不少的专门搞这块的互联网公司,其中不少的公司都发展的很不错了。

本人从13年就开始从事这块的开发,对微信开发这块已有还算可以的了解吧!微信公众号的开发其实都不难,就是接口的配置了。不过腾讯是个坑,有时候接口本身就有问题,这

样会搞死一大片的开发者。就像之前微信支付的接口一样,我被它整了两个星期,靠,后面才知道官方接口问题。不说了,说多了都是泪啊!

从事软件开发几年以来,一直在想网上怎么没有一个一整套的开发的框架源码呢?搞的每天不是活在业务里就是活在百度里。百度里也是醉了,这么大的一个收索引擎,居然都没

有真正的技术牛人来解决我们这些小白的问题,基本上是大白对小白的一些零零碎碎的指导。废话不多说了,开始吧,我发现跟小学写作文似的,写不下去了。


一。微信后台对接



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私聊

第二期将搭建框架的内容写上
请允许打个小广告

企业级微信开发后台通用框架
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: