博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微信企业公众号开发之回调模式
阅读量:6413 次
发布时间:2019-06-23

本文共 3499 字,大约阅读时间需要 11 分钟。

这几天申请了一个企业公众号玩一玩。当我们想在基于微信平台再次开发时,首先需要解决的是开启开发者模式。

1.怎样申请企业公众号,请见相关参考文献,网上有很多。

2.进入开启企业公众号开发者模式时,首先要开启回调模式。

3.在开启回调模式时,我们先要在应用中心创建一个应用中心。

 
 
4.点击回调模式
 
 
5、验证自己的URL是否能够接受微信服务器的消息(保证自己有一个可以公网访问的服务器)
 
6、关键是验证代码:本文是以java 项目来实现的,PHP项目的网上有很多,相对来说也很简单。
 
7、创建一个web 项目
 

8.当你开启应用的回调模式时,企业号会要求你填写应用的URL、Token、EncodingAESKey三个参数。   URL是企业应用接收企业号推送请求的访问协议和地址,支持http或https协议。   Token可由企业任意填写,用于生成签名。EncodingAESKey用于消息体的加密,是AES密钥的Base64编码。验证URL、Token以及加密的详细处理请参考后续'接收消息时的加解密处理'的章节。企业可以直接使用微信提供的库进行加解密的处理,目前提供的有c++/python/php/java/c#等语言版本。代码提供了解密、加密、验证URL三个接口,可根据自身需要下载 ()。项目中的com.qq.weixin.mp.aes中的.java文件就是从官方下载。

然后自己再编写一个servlet来接受微信服务器回调时调用的GET方法。项目中是CoreServlet.java。它的GET方法如下:

1 public void doGet(HttpServletRequest request, HttpServletResponse response) 2             throws ServletException, IOException { 3  4         // 设置编码 5         response.setContentType("text/html;charset=utf-8"); 6         // response.setCharacterEncoding("utf-8"); 7         request.setCharacterEncoding("utf-8"); 8  9         // 企业号的基本信息,配置时填写10         String sToken = "weixin";11         String sCorpID = "sCorpID";12         String sEncodingAESKey = "sEnCodingAESKey";13 14         try15         {16             WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(sToken, sEncodingAESKey,17                     sCorpID);18 19             // 解析出url上的参数值如下:20 21             String sVerifyMsgSig = URLDecoder.decode(22                     request.getParameter("msg_signature"), "utf-8");23             String sVerifyTimeStamp = URLDecoder.decode(24                     request.getParameter("timestamp"), "utf-8");25             String sVerifyNonce = URLDecoder.decode(26                     request.getParameter("nonce"), "utf-8");27             String sVerifyEchoStr = URLDecoder.decode(28                     request.getParameter("echostr"), "utf-8");29 30             // String sVerifyMsgSig =31             // "5c45ff5e21c57e6ad56bac8758b79b1d9ac89fd3";32             // String sVerifyTimeStamp = "1409659589";33             // String sVerifyNonce = "263014780";34             // String sVerifyEchoStr =35             // "P9nAzCzyDtyTWESHep1vC5X9xho/qYX3Zpb4yKa9SKld1DsH3Iyt3tP3zNdtp+4RPcs8TgAE7OaBO+FZXvnaqQ==";36 37             PrintWriter out = response.getWriter();38             String sEchoStr; // 需要返回的明文39             try40             {41                 sEchoStr = wxcpt.VerifyURL(sVerifyMsgSig, sVerifyTimeStamp,42                         sVerifyNonce, sVerifyEchoStr);43                 System.out.println("verifyurl echostr: " + sEchoStr);44                 // 验证URL成功,将sEchoStr返回45                 out.print(sEchoStr);46                 out.close();47                 out = null;48             }49             catch (Exception e)50             {51                 e.printStackTrace();52             }53 54         }55         catch (AesException e1)56         {57             e1.printStackTrace();58         }59     }

注意:代码中的sCorpID是你自己企业的sCorpID,sEncodingAESKey和你在输入验证URL时的sEncodingAESKey保持一致。

完成以上步骤,然后打成war部署到云服务器上,这样基本就可以了。

总结下自己在验证时出现的问题:

1、myeclipse编译器的jdk和tomcat服务器的jdk不同,导致项目不能在本地服务器跑Windows=>preference=>Java=>Compiler / windows=>preference=>myeclipse=>servers

 

2、特别注意的是:jdk版本必须是1.6及以上;需要替换JCE无限制权限策略文件,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目录下覆盖原来文件。这里我耽搁了比较久。

 

 
 
 
 

 

转载于:https://www.cnblogs.com/hoojjack/p/4676779.html

你可能感兴趣的文章
中国北方国际五金城硬件选型
查看>>
php.exe启动时提示缺少MVCR110.dall 64位 window系统 解决
查看>>
判断是否为数字方法
查看>>
[翻译] EF Core in Action 关于这本书
查看>>
js Uncaught TypeError: undefined is not a function
查看>>
数据库存储引擎
查看>>
[2019.2.13]BZOJ4318 OSU!
查看>>
版本号带两个小数点的,如何比较大小?( NSStringCompareOptions )
查看>>
QCustomplot使用分享(三) 图
查看>>
什么是java?
查看>>
WPF路径动画(动态逆向动画)
查看>>
Low Level Reader Protocol (LLRP) 简介
查看>>
[Micropython]TPYBoard v10x NRF24L01无线通讯模块使用教程
查看>>
mysql中show processlist过滤和杀死线程
查看>>
最新Sublime Text 2 激活 汉化
查看>>
基础数据类型之字典
查看>>
第七次作业
查看>>
Oracle中NVARCHAR2与VARCHAR2的区别
查看>>
php debug
查看>>
Ubuntu构建LVS+Keepalived高可用负载均衡集群【生产环境部署】
查看>>