700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 微信企业号回调 java_微信公众平台企业号回调模式的URL验证——Java

微信企业号回调 java_微信公众平台企业号回调模式的URL验证——Java

时间:2023-12-18 14:08:08

相关推荐

微信企业号回调 java_微信公众平台企业号回调模式的URL验证——Java

最近在做微信企业号的相关应用,原因是以前没有接触过微信方面的东西,因此在开启回调模式的时候感觉无从下手,找不到门路,在网上找了教程,最后也是没有结果。

逼不得已,只能硬着头皮就着官方的文档一步步的往下做,最终终于实现是回调模式的第一步:URL验证。现将代码共享出来,供各位新手借鉴,同时的后续开发,可以共同交流、学习。

1.要开启企业号的回调模式,首先要进行URL验证,也就是说,你必须要有一个服务器,来保证在公网环境下能够访问你的这个URL,然后才能接着往下走。(假如没有服务器的话,建议使用BAE比较好)。

2.创建一个web项目,(注意必须是DynamicWebProject项目),然后创建一个servlet类,来处理企业号发送的请求,命名任意,代码如下:

packageorg.yhxz.weixin.servlet;

importjava.io.IOException;

importjava.io.PrintWriter;

importjavax.servlet.ServletException;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

importcom.qq.weixin.mp.aes.AesException;

importcom.qq.weixin.mp.aes.WXBizMsgCrypt;

/**

*核心请求处理类

*

*@authorheqian

*

*/

publicclassCoreServletextendsHttpServlet{

privatestaticfinallongserialVersionUID=4440739483644821986L;

StringsToken="5XaQ8cG6x2pULd";//这个Token是随机生成,但是必须跟企业号上的相同

StringsCorpID="wx4edd47d3a6r4r991";//这里是你企业号的CorpID

StringsEncodingAESKey="jWmYm7qjusnxu65ZRjGtBxmz3KA1tkAj3ykkR6q2B2C";//这个EncodingAESKey是随机生成,但是必须跟企业号上的相同

/**

*确认请求来自微信服务器

*@throwsIOException

*/

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException{

//微信加密签名

StringsVerifyMsgSig=request.getParameter("msg_signature");

//时间戳

StringsVerifyTimeStamp=request.getParameter("timestamp");

//随机数

StringsVerifyNonce=request.getParameter("nonce");

//随机字符串

StringsVerifyEchoStr=request.getParameter("echostr");

StringsEchoStr;//需要返回的明文

PrintWriterout=response.getWriter();

WXBizMsgCryptwxcpt;

try{

wxcpt=newWXBizMsgCrypt(sToken,sEncodingAESKey,sCorpID);

sEchoStr=wxcpt.VerifyURL(sVerifyMsgSig,sVerifyTimeStamp,sVerifyNonce,sVerifyEchoStr);

//验证URL成功,将sEchoStr返回

out.print(sEchoStr);

}catch(AesExceptione1){

e1.printStackTrace();

}

}

/**

*处理微信服务器发来的消息

*/

publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{

//TODO消息的接收、处理、响应

}

}

3.接下来就要导入官方的业务类了,然后将其导入到你的项目中。这个可以在官方文档上下载到(注意,虽然官方下载的实例代码中也有验证的代码,但是不建议使用哪个Sample.java,假如不信的可以试试看,反正本人用这个是没通)

下载地址是:

http://qydev./java.zip,

请开发者使用jdk1.6或以上的版本。针对mons.codec.binary.Base64,需要导入jar包commons-codec-1.9(或commons-codec-1.8等其他版本),我们有提供,官方下载地址:

/proper/commons-codec/download_codec.cgi。

4.假如出现异常java.security.InvalidKeyException:illegalKeySize的解决方案:

在官方网站下载JCE无限制权限策略文件(JDK7的下载地址:

/technetwork/java/javase/downloads/jce-7-download-432124.html

下载后解压,可以看到local_policy.jar和US_export_policy.jar以及readme.txt。假如安装了JRE,将两个jar文件放到%JRE_HOME%\lib\security目录下覆盖原来的文件,假如安装了JDK,将两个jar文件放到%JDK_HOME%\jre\lib\security目录下覆盖原来文件。

5.下来就是对web.xml文件的配置,代码如下:

xmlns:xsi="/2001/XMLSchema-instance"

xsi:schemaLocation="/xml/ns/javaee

/xml/ns/javaee/web-app_2_5.xsd">

coreServlet

org.yhxz.course.servlet.CoreServlet

coreServlet

/coreServlet

index.html

6.然后将你的项目发布到服务器上,在浏览器中输入URL,假如在你的Tomcat的控制台上出现NullPointException异常,就说明没有问题(出现的原因是:请求的数据为空,这个你懂得)。

7.接下来就在企业号后台上的操作了,开启回调模式,输入你的URL,随机生成token和EncodingAESKey,点击提交就可以验证通过,注意一定要代码中的和企业号上的token和EncodingAESKey是要一致的。

8.通过结果图示:

9.接下来的还在继续研究,QQ463066721

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。