微信企业号回调模式配置详细讲解

对于微信企业号,我相信很多人都不陌生了,今天跟大家一起来探讨一下用java怎么去实现微信企业号回调模式配置。

为什么需要开启回调模式?

对于这点,我相信官方文档中说得比我更清楚,但是我还是想大家熟悉一下什么是回调模式,说白了就是当你有一个属于自己的企业应用,通过用户关注这个微信企业号,希望用户发送的消息或者用户触发的事件都推送到你这个企业应用中处理,此时的你就会用到回调模式,只有开发人员开启了回调模式之后才能正式使用官方提供的一些接口对数据进行处理

那么想要完成开启回调模式,我们需要先注意以下几点:

1.      必须使用外网能够访问得到的URL(不能是本地服务器)

2.      JDK版本必须要1.7以上

3.      jec加解密包必须与JDKversion一致

4.      微信企业号开启回调模式默认只支持80或443端口

 

以上几点是开启回调模式之前需要知道的一些基本情况,接下来,我将会为大家详细讲解如何开启企业号的回调模式

1.      第一步:下载官方的加解密包,根据自己的开发语言下载不同的加解密包,这个官方有提供压缩文件的,下载地址如下:

http://qydev.weixin.qq.com/wiki/index.php?title=加解密库下载和返回码

2.      第二步:下载一个jar包,其实不下也无所谓,因为下载了官方的加解密包会包含了这个jar,也就是 commons-codec-1.9。

需要注意的是:jec包要与环境的JDK版本一致

另附上如何查看jDK版本

Linux java Path  键入命令:which java

Windows java Path :  java -verbose
Linux示例图:


Windows示例图:

通过cmd控制台输入:java –version即可查看


3      第三步:替换文件(很重要的一步

将下载之后的jec加解密文件替换掉原来的jdk里面的文件(注意备份原来的替换文件,以防万一),JCE-7(此为JDK7适用)下载地址:

http://www.oracle.com/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目录下覆盖原来文件 

通过以上的步骤之后,就可以开始进行我们的代码编写了

1.      新建web项目,这个大家很熟悉的啦,这不说了

2.      导入我们刚刚下载的加解密包到新建的项目中

3.      Web.xml的配置文件如下:

    <servlet>  
        <servlet-name>WXServlet</servlet-name>  
        <servlet-class>com.weixin.servlet.WXServlet</servlet-class>  
    </servlet>  
    <servlet-mapping>  
        <servlet-name>WXServlet</servlet-name>  
        <url-pattern>/WXServlet</url-pattern>  
    </servlet-mapping>  

4.      WXServlet.class核心操作文件
    public class WXServlet extends HttpServlet{  
        private String token = "xxxxxxx";  //需应用与后台一致  
        private String encodingAESKey = "xxxxxxx";  //自动生成密钥  
        private String corpId = "xxxxxxx"; //企业号ID    
        private static final long serialVersionUID = 4440739483644821986L;  
        @Override  
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
                // 微信加密签名(微信传递过来的参数,我们只需要获取)  
            String msg_signature = request.getParameter("msg_signature");    
            // 时间戳(微信传递过来的参数,我们只需要获取)  
            String timestamp = request.getParameter("timestamp");    
            // 随机数(微信传递过来的参数,我们只需要获取)  
            String nonce = request.getParameter("nonce");    
            // 随机字符串(微信传递过来的参数,我们只需要获取)  
            String echostr = request.getParameter("echostr");    
                //打印看看我们自己获取到的地址是怎么样的。  
            System.out.println("request=" + request.getRequestURL());    
            
            PrintWriter out = response.getWriter();    
            // 通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败    
            String result = null;    
            try {    
                 WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(token,encodingAESKey,corpId);    
                 result = wxcpt.VerifyURL(msg_signature, timestamp, nonce, echostr);    
            } catch (AesException e) {    
                 e.printStackTrace();    
            }    
            if (result == null) {    
                 result = token;  
            }  
      
            String str = msg_signature+" "+timestamp+" "+nonce+" "+echostr;  
            System.out.println("Exception:"+result+" "+ request.getRequestURL()+" "+"FourParames:"+str);  
       
            out.print(result);  
            out.close();    
            out = null;    
        }  
        @Override  
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
               // 调用核心业务类接收消息、处理消息    
        }  
    }   

5.    编写完核心代码之后,去到微信企业号应用的回调模式,填写完信息之后点击提交,如无意外,你将会很开心看到这个页面

回调配置结果:


好了,以上就是开启回调模式的所有步骤,只要你细心耐心的去走完每一个步骤,我相信问题不大的,,祝你好运。
### 回答1: 为了验证微信企业回调模式的URL,您可以按照以下步骤进行亲测。 首先,您需要在微信企业的后台设置回调模式的URL地址。这个URL地址需要指向您的服务器上的一个接收微信回调的脚本。 在服务器上,您可以使用PHP等编程语言编写一个处理微信回调的脚本。下面是一个PHP脚本的例子: ```php <?php $token = "your_token"; // 替换为您设置的Token值 $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $echostr = $_GET["echostr"]; $tmpArr = array($token, $timestamp, $nonce); sort($tmpArr, SORT_STRING); $tmpStr = implode($tmpArr); $tmpStr = sha1($tmpStr); if($tmpStr == $signature){ echo $echostr; exit; } ?> ``` 在上面的示例代码中,您需要将`your_token`替换为您在微信企业后台设置的Token值。 然后,您可以将这个脚本上传到您的服务器上,并使用浏览器访问该脚本的URL,例如:`http://your_domain.com/callback.php?signature=xxxx&timestamp=xxxx&nonce=xxxx&echostr=xxxx`,其中`your_domain.com`替换为您的域名,`xxxx`替换为实际的参数值。 如果您在微信企业后台设置的URL验证通过,则浏览器会返回一个由微信服务器发送的`echostr`参数值。 通过以上操作,您可以完成对微信企业回调模式URL的验证。 ### 回答2: 亲测微信企业回调模式的URL验证代码如下: 1. 首先,获得微信企业后台提供的Token,用于加密验证。可以在配置页面或者开发页面找到该信息。 2. 创建一个URL接口用于接受微信企业发来的URL验证请求。接收到请求后,取出请求参数中的`echostr`值。 3. 将token、timestamp(请求时间戳)、nonce(随机数)和echostr按照字典序排序并拼接成一个字符串。 4. 将拼接后的字符串进行SHA-1加密。 5. 将加密后的字符串与微信企业发来的`msg_signature`进行比较,如果一致,则说明URL验证通过。 下面是一个示例代码(使用Python语言): ``` import hashlib import time from flask import Flask, request app = Flask(__name__) @app.route('/wechat', methods=['GET', 'POST']) def handle_wechat(): if request.method == 'GET': token = 'your_token' # 替换成微信企业后台提供的Token signature = request.args.get('signature') timestamp = request.args.get('timestamp') nonce = request.args.get('nonce') echostr = request.args.get('echostr') # 将token、timestamp、nonce按字典序排序并拼接 sorted_str = ''.join(sorted([token, timestamp, nonce])) # 对拼接后的字符串进行SHA-1加密 hashcode = hashlib.sha1(sorted_str.encode()).hexdigest() if hashcode == signature: return echostr else: return 'URL验证失败' if __name__ == '__main__': app.run() ``` 以上就是使用Python编写的微信企业回调模式的URL验证代码。当收到微信企业的URL验证请求时,会对请求参数进行验证,如果验证成功,则返回`echostr`作为响应内容。 ### 回答3: 亲测微信企业回调模式的URL验证代码如下: 在接收微信企业回调请求的URL页面中,需要编写一个方法来处理微信回调验证的逻辑。以下是一个简单的示例代码: ```php <?php $token = "your_token"; // 填写你在微信企业后台设置的Token // 验证URL的方法 function verifyURL($token) { // 接收微信服务器发送过来的参数 $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $echostr = $_GET["echostr"]; // 将Token、timestamp和nonce按照字典序排序 $tmpArr = array($token, $timestamp, $nonce); sort($tmpArr, SORT_STRING); // 将排序后的三个参数拼接成一个字符串 $tmpStr = implode($tmpArr); // 对拼接后的字符串进行SHA1加密 $tmpStr = sha1($tmpStr); // 将加密后的字符串与接收到的signature进行比对 if($tmpStr == $signature) { // 验证通过,返回随机字符串用于校验 echo $echostr; } else { // 验证失败,返回错误信息 echo "URL验证失败"; } } // 调用验证URL的方法 verifyURL($token); ?> ``` 以上代码会先获取微信服务器发送过来的参数,然后对Token、timestamp和nonce进行排序,并拼接成一个字符串进行SHA1加密。最后将加密后的结果与接收到的signature进行比对,如果一致,则表示验证通过,返回随机字符串用于校验;如果不一致,则返回失败信息。 此代码可以在你编写的回调URL页面上直接使用,通过访问该URL来进行URL验证。请注意将代码中的"your_token"替换为你在微信企业后台设置的Token。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值