兵车未动,粮草先行,首先你得有台服务器,80端口未被占用~
想必这里的api大家都看过的
说明:URL填写你服务器80端口的URL,比如楼主的是(http://******/weixinTest.jspx),这里还需要与微信握手,以确保次连接有效;
Token数字和英文组成的字符串,最大长度为32字符,比如楼主的是xb12369;
EncodingAESKey直接用后面的随机生成,到目前为止还没用用到这个;
刚才也说过,微信会校验你的URL是否有效,那么接下来开始正式握手!!!
说明:1,字典排序
ArrayList list = new ArrayList(); list.add(token); list.add(timestamp); list.add(nonce); Collections.sort(list, new SpellComparator()); /** * 汉字拼音排序比较器 */ static class SpellComparator implements Comparator{ public int compare(Object o1, Object o2) { try { // 取得比较对象的汉字编码,并将其转换成字符串 String s1 = new String(o1.toString().getBytes("GB2312"), "ISO-8859-1"); String s2 = new String(o2.toString().getBytes("GB2312"), "ISO-8859-1"); // 运用String类的 compareTo()方法对两对象进行比较 return s1.compareTo(s2); } catch (Exception e) { e.printStackTrace(); } return 0; } }
//将三个参数字符串拼接成一个字符串进行sha1加密 String digest = new SHA1Utils().getDigestOfString(temp.getBytes());
之前就一直卡在这里,没有搞清楚啥叫原样返回,后面终于弄明白了,然来是要printwriter到微信
if(digest.equalsIgnoreCase(signature)){ try{ System.out.println("我成功了~~~~"); //开发者通过检验signature对请求进行校验(下面有校验方式)。 //若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。 PrintWriter out = response.getWriter(); out.print(echostr); out.flush(); out.close(); System.out.println("这次你再改成功改了吧~~~"); }catch (Exception e) { e.printStackTrace(); } }else{ System.out.println("sha1加密后:" +digest+ "微信返回的是:"+signature); }
认证通过后,微信公共平台将会得到一个AppID,AppSecret,有了这两个你就可以往下高更深入的东西了!!!