java微信开发API服务器接入的示例

  介绍

这篇文章将为大家详细讲解有关java微信开发API服务器接入的示例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

<强>一、说明

*本示例根据微信开发文档:http://mp.weixin.qq.com/wiki/home/index.html最新版(4/3/2016 5:34:36 PM)进行开发演示。

*编辑平台:myeclipse10.7 + win32 + jdk1.7 + tomcat7.0

*服务器:windows server 2008 64位
*平台要求:servlet使用注解方式,平台要求:j2ee6.0 + jdk6.0 + tomcat7.0 +
*演示更加注重于API解析。
*为了便于测试说明,每个测试用例为独立,不依赖于其它方法。对于封装,不多加考虑。
*演示尽可能按照API要求进行,目的:了解文档使用方式,达到举一反三的效果。
*知识要求:牢固的java基础,了解http网络通信知识,对于javaweb有足够了解,json解析
*当前时间:4/3/2016 5:32:57点,以该时间为准。

<强>二、文档原文(摘要)

文档地址:http://mp.weixin.qq.com/wiki/8/f9a0b8382e0b77d87b3bcc1ce6fbc104.html
接入微信公众平台开发,开发者需要按照如下步骤完成:

1,填写服务器配置
2,验证服务器地址的有效性,
3,依据接口文档实现业务逻辑

三、文档理解

验证服务器地址的有效性

<强> 1,api这样介绍:

开发者提交信息后,微信服务器将发送得到请求到填写的服务器地址URL上,得到请求携带四个参数:签名、时间戳、nonce, echostr
开发者通过检验签名对请求进行校验(下面有校验方式)。
若确认此次得到请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。
加密/校验流程如下:
1),将牌,时间戳,现时标志三个参数进行字典序排序
2),将三个参数字符串拼接成一个字符串进行sha1加密
3),开发者获得加密后的字符串可与签名对比,标识该请求来源于微信

<强> 2,理解

说明该请求是“获得”方式,并且访问该请求会返回四个参数:签名、时间戳、nonce, echostr。
我们需要接受这几个参数,然后进行处理。如果验证成功,返回接收到的“echostr”,否则验证失败。
验证方式是对接受到的令牌,时间戳,现时标志三个参数进行字典序排序,然后进行sha1加密,最后和签名对比。
*加密后的字符串可与签名对比,如果相等【该处api可能解释不是太明白,返回“echostr验证成功。

<强> 3,实现

创建一个servlet CoreServlet实现HttpServlet,重载doGet方法。
参数准备

//,设置一个全局的令牌,开发者自己设置.api这样解释:令牌可由开发者可以任意填写,//,用作生成签名(该令牌会和接口URL中包含的令牌进行比对,从而验证安全性)   String  token =,“wgyscsf";//,根据api说明,获取上述四个参数   String  signature =, req.getParameter (“signature");   String  timestamp =, req.getParameter (“timestamp");   String  nonce =, req.getParameter (“nonce");   String  echostr =, req.getParameter (“echostr");

根据api所说的三步骤进行操作

//,第一步:将牌,时间戳,现时标志三个参数进行字典序排序   时间=String [], parms  new  String[],{,令牌,时间戳,nonce },//,将需要字典序排列的字符串放到数组中   Arrays.sort(改);//,按照api要求进行字典序排序【百度:什么是字典序排序】//,第二步:将三个参数字符串拼接成一个字符串进行sha1加密【百度:java  sha1加密】//,拼接字符串   String  parmsString =,““//,注意,此处不能=零。   for  (int 小姐:=,0;,小姐:& lt;, parms.length;,我+ +),{   parmsString  +=,才能改(我);   }//,sha1加密   String  mParms =,零;//,加密后的结果      ……,//该地方是sha1加密的实现,不再贴代码,,,,      时间=mParms  hexString.toString();//,加密结果/*   ,* api要求:,若确认此次得到请求来自微信服务器,请原样返回echostr参数内容,,则接入生效,,成为开发者成功,否则接入失败。   ,*///,第三步:开发者获得加密后的字符串可与签名对比,标识该请求来源于微信接入成功。   System.out.println (TAG  +,“:“, +, mParms  +,“- - - - -在“,+,签名);   if  (mParms.equals(签名),{//才能,System.out.println (TAG  +,“:“, +, mParms  +,“- - - - -在“,+,签名);   printWriter.write才能(echostr);   },{else //,才能接入失败,不用回写//才能,System.out.println(时间+ TAG “接入失败“);   }

java微信开发API服务器接入的示例