微信公众平台火的已经是大红大紫,笔者所在的一个微信开发群众非常的活跃,简直可以匹敌淘宝打折的群了!微信官方给出的代码示例都是php的,所以有不少人经常问到JAVA语言的如何跟微信公众平台对接,今天在这里我就把我写的JAVA版本挑些基本功能分享给大家,希望对大家有帮助!废话不多说了给大家贴代码:
功能1:开发者身份验证和自动回复(这个功能是大家申请到公众账号都会使用到的功能),这两个功能我写到了一个类中,流程在一个函数里做判断,请详细看代码。
开发者通过检验signature对网址接入合法性进行校验。
若此次GET请求原样返回echostr参数内容,则接入生效,否则接入失败。
验证signature将结合开发者填写的token参数、timestamp参数和nonce参数等,
加密流程:
将token、timestamp、nonce三个参数进行字典序排序 ,
将三个参数字符串拼接成一个字符串进行sha1加密 ,
开发者获得加密后的字符串可与signature对比,
标识该请求来源于微信
- */
- public boolean check(){
- String token=Token;
- String sn = request.getParameter('signature'); //取验证请求信息
- String ts = request.getParameter('timestamp'); //取验证请求信息
- String nonce = request.getParameter('nonce'); //取验证请求信息
- String[] tmpArray={token,ts,nonce};
- Arrays.sort(tmpArray);
- String tmpStr=this.ArrToStr(tmpArray);//数组转字符串
- tmpStr=this.SHA1Encoding(tmpStr); //调用sha1加密
- if(tmpStr.equalsIgnoreCase(sn)){ //将加密后的信息与服务器计算完的验证信息对比
- return true;
- }else{
- return false;
- }
- }
- //向请求端返回数据
- public void back(String outPut){
- try{
- response.getWriter().print(outPut);
- response.getWriter().flush();
- response.getWriter().close();
- }catch(Exception e){
-
- }
- }
- //数组转字符串
- public String ArrToStr(String [] arra){
- StringBuffer buffer = new StringBuffer();
- for(int i = 0; i < arra.length;="" i++){ ="">
- buffer.append(arra);
- }
- return buffer.toString();
- }
- //sha1加密
- public String SHA1Encoding(String str) {
- String finalString = null;
- try {
- finalString = new String(str);
- MessageDigest md = MessageDigest.getInstance('SHA-1');
- finalString = byteToString(md.digest(finalString.getBytes()));
- } catch (Exception ex) {
- }
- return finalString;
- }
- public final String byteToString(byte[] bytes) {
- StringBuffer buffer = new StringBuffer(bytes.length * 2);
- for (int i = 0; i < bytes.length;="" i++)="" { ="">
- if ((bytes & 0xff) <>0x10) {
- buffer.append('0');
- }
- buffer.append(Long.toString(bytes & 0xff, 16));
- }
- return buffer.toString().toUpperCase();
- }
- //从输入流读取参数
- public String readInputStreamParameter(ServletInputStream input){
- StringBuilder inputBuffer = new StringBuilder();
- BufferedReader inputReader=null;
- try{
- inputReader = new BufferedReader(new InputStreamReader(input));
- String line=null;
- while((line = inputReader.readLine())!=null){
- inputBuffer.append(line);
- }
- }catch(Exception e){
- e.printStackTrace();
- }finally{
- if(null!=inputReader){
- try {
- inputReader.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- return inputBuffer.toString();
- }
-
- }
上边这个类就是验证和自动回复功能的类,只要在和微信接口对接的页面调用响应的方法就可以完成验证和自动回复功能,可以看一下我调用这个类的页面,请看下边代码:
- <%@page import='java.util.Date'%>
- <%@page import='java.io.IOException'%>
- <%@page import='java.io.InputStreamReader'%>
- <%@page import='java.io.BufferedReader'%>
- <%@page import='java.io.Reader'%>
- <%@page import='java.security.MessageDigest'%>
- <%@page import='java.util.Arrays'%>
- <%@page import='cpbc.base.support'%>
- <%@ page language='java' contentType='text/html; charset=utf-8' pageEncoding='utf-8'%>
-
-
- <%
- String TOKEN='weixin';
- support handler=new support(TOKEN,request,response);
- handler.answer();
- %>
这个页面就是调用验证和自动回复的页面,也就是跟微信公众平台对接的页面。
接下来还有......
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。