1. 前言:跟自己上一篇《FineReport 集成笔录》一样,因为FR提供的微信插件是针对FR自身系统的,所以试着跟公司WEB应用做企业集成,并记录下来以便自己后面忘了查看及给予部分朋友小小帮助(求不喷 ),有这方面兴趣的欢迎大家一起交流,QQ:254708913 2. 使用版本 :finereport8.0 3. 环境:Tomcat7.0/jdk 1.7 4. 工具:FR,Myeclipse10 5. ps: a. 前面FR跟WEB应用集成这里就不再写,如初次接触则请看我上一篇《FineReport 集成笔录》 b. 这里建立的是企业号的信息型回调模式应用 6. 步骤: 1〉打开finereport设计器,添加插件:"移动端Html5方式预览报表"及"报表自适应" 2〉 随便做一张报表,以H5方式预览(即URL添加参数op=h5_page)看是否正常 3> 在FR lib(ej:D:\FineReport_8.0\WebReport\WEB-INF\lib)目录下fr-core-8.0.jar;fr-platform-8.0.jar;fr-report-8.0.jar;fr-third-8.0.jar;plugin-com.fr.wei.plugin.h5report-0.jar;plugin-com.fr.plugin.reportfit-0.jar这6个文件同时一起copy到自己的web应用类路径下(一定要同时一起copy),同时将刚才的做的一个报表放到web应用目录下(ej:D:\Workspaces\MyEclipse Professional 2014\en\WebRoot\WEB-INF\reportlets 再说下这个笔录的前提是FR与跟WEB应用已集成,所以WEB-INF跟定还有其他几个文件,哪几个文件可以看我的上一篇笔录,此笔录只是关于集成微信企业号的); 4> 在FRplugins (D:\FineReport_8.0\WebReport\WEB-INF\plugins) 目录下将plugin-com.fr.plugin.reportfit;plugin-com.fr.wei.plugin.h5report两个文件夹copy到Web应用WEB-INF下(ej:D:\Workspaces\MyEclipse Professional 2014\en\WebRoot\WEB-INF)
5〉 在web应用中打开报表,确认H5浏览方式运行正常
------------------------------------------------至此微信需要的报表展示已完成-----------------------------------------------------
------------------------------------------------------- 微信与企业号,Web应用集成开始------------------------------------------------------------------------
7> 针对org.apache.commons.codec.binary.Base64,需要导入jar包commons-codec-1.9(或comm ons-codec-1.8等其他版本),官方下载地址:http://commons.apache.org/proper/commons-codec/download_codec.cgi并将其导入到web应用的lib目录下面(或者直接拷贝FR lib目录下的commons-codec-1.6.jar)
8〉 因为某些国家的进口管制限制,Java发布的运行环境包中的加解密有一定的限制。比如默认不允许256位密钥的AES加解密,而微信回调验证就需要用到AES加解密,因此:需要根据jdk版本,替换%JDK_HOME%\jre\lib\security目录下的local_policy.jar和US_export_policy.jar这两个JCE无限制权限策略jar包。如果不做这步操作,后面微信验证报表服务器时就会报错,类似如下:java.security.InvalidKeyException:illegalKey Size(直接百度jdk6 jce)
9〉 到微信企业号开发者文档里下载加解密库:地址http://qydev.weixin.qq.com/wiki/index.php?title=%E5%8A%A0%E8%A7%A3%E5%AF%86%E5%BA%93%E4%B8%8B%E8%BD%BD%E4%B8%8E%E8%BF%94%E5%9B%9E%E7%A0%81
并将其导入到Web应用里
----------------------------第一步,回调通讯--------------------------------------------
1> 申请企业号(步骤略…) 2> 进入企业号,点击应用中心,点击创建应用:
3> 选择消息型应用,并设置应用名字,功能,权限,保存。
4> 点击新建的应用,点击可信域名,将你的域名添加上去(没有可以直接用花生壳或金万维申请一个就可以了)
5> 在最下面的模式选择里默认的是普通模式,这里点击回调模式
6> 点击右上角的已关闭旁边按钮,启用回调模式,然后在回调URL及密钥里填写相应的信息(URL: http://XXXX/en/WeiXinQYServer?op=weixin&eid=4;Token/aes可以直接点接随机获取,URL添加op=weixin只是用于后台接收请求时知道是微信,eid表示web对应企业ID,可以不加。) 填写完了之后先不管,在web应用里添加相应的接收servlet后再回来保存
7> 修改WEB应用的web.xml,添加接收信息的servlet:
<servlet>
<servlet-name>WeiXinQYServer</servlet-name>
<servlet-class>en.fr.weixin.web.WeiXinQYServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>WeiXinQYServer</servlet-name>
<url-pattern>/WeiXinQYServer</url-pattern>
</servlet-mapping>
8> 新增servlet;(这里是根据自己需求写的,大家可以参考,)
9> ServletCommon(拿来将service驻入servlet)
10> WeiXinService()
11> 这里的corpid,token,aeskey就是在企业号那里设置的,我这里因为是系统里有多公司才加入这个
12> 回到刚才的企业号回调模式里,将刚才填写的信息进行保存
13> 点击下面的自定义菜单里的设置
14> 点击添加自定义菜单,事件类似为跳转到网页,并输入自己的网页地址(比如你要的页面跳转的网址是:http://XXXX/en/WeiXinQYServer?reportlet=wx/20402_wx_tj_cw_lr.cpt,则先将其URL编码并组装链接https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx937efba2f0b7d127&redirect_uri=你要跳转的URL(URL编码后)&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect)
15> 回到servlet,处理报表请求:
weiXinService.getParamForQYReport:1.处理AccessToken
2.获取请求人的userId以此获取系统关联用户 3.判断用户是否有相应权限查看报表 4.返回业务参数
16> 最后效果:
|