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

这两年随着腾讯推出的微信公众号这个玩意,衍生了不少的专门搞这块的互联网公司,其中不少的公司都发展的很不错了。
本人从13年就开始从事这块的开发,对微信开发这块已有还算可以的了解吧!微信公众号的开发其实都不难,就是接口的配置了。不过腾讯是个坑,有时候接口本身就有问题,这

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

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

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

一。微信后台对接




1.1 URL是什么? 

很多同学刚开始开发的时候都不知道这连接是啥玩意?其实就是访问你的接口的那个方法。
如 你的服务器域名加你的方法名
Tocken又是什么鬼?
就是你自己定义的一个密钥,如你要设成99999就可以了

最后那个随机生成就可以了。不多解释。


这玩意怎么搞呢?

就是你要写代码根据他的协议来进行接口对接了。
下面我先引用网上的一段代码

  1. package org.liufeng.course.servlet;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.PrintWriter;  
  5.   
  6. import javax.servlet.ServletException;  
  7. import javax.servlet.http.HttpServlet;  
  8. import javax.servlet.http.HttpServletRequest;  
  9. import javax.servlet.http.HttpServletResponse;  
  10.   
  11. import org.liufeng.course.util.SignUtil;  
  12.   
  13. /** 
  14.  * 核心请求处理类 
  15.  *  
  16.  * @author liufeng 
  17.  * @date 2013-05-18 
  18.  */  
  19. public class CoreServlet extends HttpServlet {  
  20.     private static final long serialVersionUID = 4440739483644821986L;  
  21.   
  22.     /** 
  23.      * 确认请求来自微信服务器 
  24.      */  
  25.     public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
  26.         // 微信加密签名  
  27.         String signature = request.getParameter("signature");  
  28.         // 时间戳  
  29.         String timestamp = request.getParameter("timestamp");  
  30.         // 随机数  
  31.         String nonce = request.getParameter("nonce");  
  32.         // 随机字符串  
  33.         String echostr = request.getParameter("echostr");  
  34.   
  35.         PrintWriter out = response.getWriter();  
  36.         // 通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败  
  37.         if (SignUtil.checkSignature(signature, timestamp, nonce)) {  
  38.             out.print(echostr);  
  39.         }  
  40.         out.close();  
  41.         out = null;  
  42.     }  
  43.   
  44.     /** 
  45.      * 处理微信服务器发来的消息 
  46.      */  
  47.     public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
  48.         // TODO 消息的接收、处理、响应  
  49.     }  
  50.   
  51. }  



  1. package org.liufeng.course.util;  
  2.   
  3. import java.security.MessageDigest;  
  4. import java.security.NoSuchAlgorithmException;  
  5. import java.util.Arrays;  
  6.   
  7. /** 
  8.  * 请求校验工具类 
  9.  *  
  10.  * @author liufeng 
  11.  * @date 2013-05-18 
  12.  */  
  13. public class SignUtil {  
  14.     // 与接口配置信息中的Token要一致  
  15.     private static String token = "weixinCourse";  
  16.   
  17.     /** 
  18.      * 验证签名 
  19.      *  
  20.      * @param signature 
  21.      * @param timestamp 
  22.      * @param nonce 
  23.      * @return 
  24.      */  
  25.     public static boolean checkSignature(String signature, String timestamp, String nonce) {  
  26.         String[] arr = new String[] { token, timestamp, nonce };  
  27.         // 将token、timestamp、nonce三个参数进行字典序排序  
  28.         Arrays.sort(arr);  
  29.         StringBuilder content = new StringBuilder();  
  30.         for (int i = 0; i < arr.length; i++) {  
  31.             content.append(arr[i]);  
  32.         }  
  33.         MessageDigest md = null;  
  34.         String tmpStr = null;  
  35.   
  36.         try {  
  37.             md = MessageDigest.getInstance("SHA-1");  
  38.             // 将三个参数字符串拼接成一个字符串进行sha1加密  
  39.             byte[] digest = md.digest(content.toString().getBytes());  
  40.             tmpStr = byteToStr(digest);  
  41.         } catch (NoSuchAlgorithmException e) {  
  42.             e.printStackTrace();  
  43.         }  
  44.   
  45.         content = null;  
  46.         // 将sha1加密后的字符串可与signature对比,标识该请求来源于微信  
  47.         return tmpStr != null ? tmpStr.equals(signature.toUpperCase()) : false;  
  48.     }  
  49.   
  50.     /** 
  51.      * 将字节数组转换为十六进制字符串 
  52.      *  
  53.      * @param byteArray 
  54.      * @return 
  55.      */  
  56.     private static String byteToStr(byte[] byteArray) {  
  57.         String strDigest = "";  
  58.         for (int i = 0; i < byteArray.length; i++) {  
  59.             strDigest += byteToHexStr(byteArray[i]);  
  60.         }  
  61.         return strDigest;  
  62.     }  
  63.   
  64.     /** 
  65.      * 将字节转换为十六进制字符串 
  66.      *  
  67.      * @param mByte 
  68.      * @return 
  69.      */  
  70.     private static String byteToHexStr(byte mByte) {  
  71.         char[] Digit = { '0''1''2''3''4''5''6''7''8''9''A''B''C''D''E''F' };  
  72.         char[] tempArr = new char[2];  
  73.         tempArr[0] = Digit[(mByte >>> 4) & 0X0F];  
  74.         tempArr[1] = Digit[mByte & 0X0F];  
  75.   
  76.         String s = new String(tempArr);  
  77.         return s;  
  78.     }  
  79. }  
这是servlet的获取。后续会写上spring mvc 的写法,需要strutr2的写法的朋友请加qq2219609637私聊


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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小海聊智造

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值