100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > java企业号回调模式 微信公众平台企业号开发—开启回调模式

java企业号回调模式 微信公众平台企业号开发—开启回调模式

时间:2021-10-17 11:26:35

相关推荐

java企业号回调模式 微信公众平台企业号开发—开启回调模式

9月17日,微信发布了期待已久的企业号。网上关于企业号的教程几乎还是0,所以这里分享一下的我的开发经验。

对比于订阅号和服务号的开发,企业号的开发显得更加复杂一点。这大概也是腾讯考虑到企业信息安全性要求比较高的缘故,在消息的收发和一些验证上都增加了加密解密的操作。这就需要开发者认真去阅读官方说明(其实通过官方说明你可以解决几乎所有问题),接下来我开启回调模式的步骤:

1、申请企业号:这个步骤这里就不详细赘述了,可以参考外链网址已屏蔽;

2、设置通讯录:这是开启回调模式必须的

3、在应用中心增加应用:增加完之后点开应用你就可以看到开启回调模式的入口了,然后就是按它的提示输入相关参数。这里也不赘述了。

4、准备远程服务器:这一步其实应该是最早做的,你可以自己申请域名空间,也可以用新浪百度的云空间。

5、进入后台程序开发阶段:核心QYCoreServlet 代码如下,该类中引用的一些工具类都是腾讯官方提供的

官方工具类下载链接:外链网址已屏蔽,找到对应java的即可

特别注意的是:jdk版本必须是1.6及以上;需要替换JCE无限制权限策略文件,JDK7的下载地址:

外链网址已屏蔽,可以看到local_policy.jar和US_export_policy.jar以及readme.txt。如果安装了JRE,将两个jar文件放到%JRE_HOME%\lib\security目录下覆盖原来的文件,如果安装了JDK,将两个jar文件放到%JDK_HOME%\jre\lib\security目录下覆盖原来文件。这里我耽搁了比较久。

package com.hotbuysell.servlet;

import java.io.IOException;

import java.io.InputStream;

import java.io.PrintWriter;

import .URLDecoder;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.qq.weixin.mp.aes.AesException;

import com.qq.weixin.mp.aes.WXBizMsgCrypt;

public class QYCoreServlet extends HttpServlet {

/*

------------验证回调URL---------------

*企业开启回调模式时,企业号会向验证url发送一个get请求

接收到该请求时,企业应

1.解析出Get请求的参数,包括消息体签名(msg_signature),时间戳(timestamp),随机数字串(nonce)以及公众平台推送过来的随机加密字符串(echostr),这一步注意作URL解码。

2.验证消息体签名的正确性

3. 解密出echostr原文,将原文当作Get请求的response,返回给公众平台

第2,3步可以用公众平台提供的库函数VerifyURL来实现。

*/

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//设置编码

response.setContentType("text/html;charset=utf-8");

//response.setCharacterEncoding("utf-8");

request.setCharacterEncoding("utf-8");

//企业号的基本信息,配置时填写

String sToken = "your token";

String sCorpID = "your CorpID";

String sEncodingAESKey = "your EncodingAESKey";

try {

WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(sToken, sEncodingAESKey, sCorpID);

// 解析出url上的参数值如下:

//URLDecoder.decode(request.getParameter("echostr"),"utf-8");

String sVerifyMsgSig = URLDecoder.decode(request.getParameter("msg_signature"),"utf-8");

String sVerifyTimeStamp = URLDecoder.decode(request.getParameter("timestamp"),"utf-8");

String sVerifyNonce = URLDecoder.decode(request.getParameter("nonce"),"utf-8");

String sVerifyEchoStr = URLDecoder.decode(request.getParameter("echostr"),"utf-8");

PrintWriter out = response.getWriter();

String sEchoStr; //需要返回的明文

try {

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

System.out.println("verifyurl echostr: " + sEchoStr);

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

out.print(sEchoStr);

out.close();

out = null;

} catch (Exception e) {

//验证URL失败,错误原因请查看异常

e.printStackTrace();

}

} catch (AesException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

}

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO 接收用户信息后的操作

}

}

6、将程序发布到远程服务器。

到这里基本就成功了,希望对大家有帮助。

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