微信企业号接入(使用SpringMVC)

企业号简介:

企业号是公众平台为企业客户提供的微信移动应用入口。它帮助企业建立与员工、上下游供应链及企业应用间的连接。利用企业号,企业或第三方合作伙伴可以帮助企业快速、低成本的实现移动轻应用的部署与应用,实现生产、管理、协作、运营的移动化。

当你成功申领一个企业号后,你可以登录企业号的管理页面,导入通讯录,配置应用,邀请成员关注该企业号,也可以通过应用向成员发送文本、图文、文件、视频、音频等多媒体消息。通过简单的配置,你就可以自动并回复成员发送的消息,实现公告通知、知识管理、企业文化建设、手机企业通讯录等基本的企业应用。

你还可以通过本接口文档所描述的接口,建立企业号同企业应用间的连接,实现更多丰富且个性化的企业移动应用。

建立连接:

企业应用同微信企业号间的连接有以下三种方式:

1、企业应用调用企业号提供的接口,管理或查询企业号后台所管理的资源、或给成员发送消息等,以下称主动调用模式。

2、企业号把用户发送的消息或用户触发的事件推送给企业应用,由企业应用处理,以下称回调模式。

3、用户在微信中阅读企业应用下发的H5页面,该页面可以调用微信提供的原生接口,使用微信开放的终端能力,以下称JSAPI模式。

通过这三种连接方式的结合,企业可以在微信企业号中建立功能强大的移动轻应用,并依托微信数亿活跃用户,帮助企业方便、快捷地实现应用的部署,并确保应用的活跃度。

每一种连接的实现机制不同,以下各节分别描述三种连接机制。

接入(回调模式):

具体实现方法(Java):

首先下载腾讯提供的加密解密包,地址是:微信加密解密地址

Java:http://qydev.weixin.qq.com/java.zip

php:http://qydev.weixin.qq.com/php.zip

C#:http://qydev.weixin.qq.com/csharp.zip

把下次好的文件解压并添加到项目中:

记得添加:commons-codec-1.9.jar

编写核心接入类代码如下:

<span style="font-size:14px;">package org.oms.qiye.web;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.oms.qiye.aes.AesException;
import org.oms.qiye.aes.WXBizMsgCrypt;
import org.oms.qiye.service.CoreService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
 * 注解方式打开链接
 *
 * @author Sunlight
 *
 */
@Controller
public class CoreController {
	private String token = "sunlight";
	private String encodingAESKey = "s8vFF4f6AWay3uAdJh79WD6imaam4BV6Kl4eL4UzgfM";
	private String corpId = "xxxxxxxxxx"; //你的企业号ID

	@RequestMapping(value = { "/coreJoin.do" }, method = RequestMethod.GET)
	public void coreJoinGet(HttpServletRequest request,
			HttpServletResponse response) throws 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;
		}
		out.print(result);
		out.close();
		out = null;
	}

	@RequestMapping(value = { "/coreJoin.do" }, method = RequestMethod.POST)
	public void coreJoinPost(HttpServletRequest request,
			HttpServletResponse response) throws IOException {
		// 调用核心业务类接收消息、处理消息
		String respMessage = CoreService.processRequest(request);
		System.out.println("respMessage=" + respMessage);
		// 响应消息
		PrintWriter out = response.getWriter();
		out.print(respMessage);
		out.close();

	}

}
</span>

CoreService.java 此类目前没有内容,后面编写消息回复功能!

web.xml文件配置:

<span style="font-size:14px;"><?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>QiyeProject</display-name>
  <welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>

	<servlet>
		<servlet-name>mvc</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<!-- 不写,使用默认值:/WEB-INF/<servlet-name>-servlet.xml -->
			<param-value>/WEB-INF/mvc-servlet.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>mvc</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>

	<!-- 表单处理乱码 -->
	<filter>
		<filter-name>CharacterFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>CharacterFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
</web-app></span>

mvc-servlet.xml 文件配置:

<span style="font-size:14px;"><?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
	http://www.springframework.org/schema/tx
	http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
	http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.2.xsd
	http://www.springframework.org/schema/mvc
    http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">

	<context:component-scan base-package="org.oms.qiye.web"></context:component-scan>
	<mvc:annotation-driven />

	<bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/jsp/"></property>
		<property name="suffix" value=".jsp"></property>
	</bean>

	<!-- 静态文件处理 -->
	<mvc:resources mapping="/resource/images/**" location="/resource/images/" />
	<mvc:resources mapping="/resource/js/**" location="/resource/js/" />
	<mvc:resources mapping="/resource/css/**" location="/resource/css/" />

</beans></span>

此处接入需要注意:

1.com\qq\weixin\mp\aes目录下是用户需要用到的接入企业微信的接口,其中WXBizMsgCrypt.java文件提供的WXBizMsgCrypt类封装了用户接入企业微信的三个接口,其它的类文件用户用于实现加解密,用户无须关心。sample.java文件提供了接口的使用示例。

2.WXBizMsgCrypt封装了VerifyURL, DecryptMsg, EncryptMsg三个接口,分别用于开发者验证回调url、接收消息的解密以及开发者回复消息的加密过程。使用方法可以参考Sample.java文件。

3.请开发者使用jdk1.5以上的版本。针对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

****请特别注意******

4.异常java.security.InvalidKeyException:illegal Key Size的解决方案:

在官方网站下载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目录下覆盖原来文件。

接入结果:

微信企业号开发交流加QQ群:89714226

转载请注明出处!

时间: 2024-12-19 20:18:39

微信企业号接入(使用SpringMVC)的相关文章

微信企业号接入JDK6和JDK7及JDK8加解密失败处理(Java)

使用文章 http://blog.csdn.net/omsvip/article/details/39926493 提供的接入代码,可以根据自己jdk版本编译,如jdk7或者jdk6 ,此时部署后提示报错:java.security.InvalidKeyException:illegal Key Size jdk7: 微信开发者文档提供了下载JCE无限制权限策略文件UnlimitedJCEPolicyJDK7.zip(JDK7的下载地址: http://www.oracle.com/techne

微信企业号OAuth2验证接口实例(使用SpringMVC)

微信企业号OAuth2验证接口(使用SpringMVC) 企业应用中的URL链接(包括自定义菜单或者消息中的链接),可以通过OAuth2.0来获取员工的身份信息. 注意,此URL的域名,必须完全匹配企业应用设置项中的'可信域名',否则获取用户信息时会返回50001错误码. 可信域名设置不包含"http://",只需域名或IP即可. OAuth2验证可以使用多种方式,此处使用注解方式.设计思路是在需要获取用户信息的GET请求上添加注解,然后在调用的时候判断是否包含此注解,然后做处理流程.

微信企业号简单的OAuth2验证接口实例(使用SpringMVC非注解方式)

目前企业号只提供了scope为"snsapi_base"的应用授权作用域,也就是不会跳转到让用户授权的页面. 之前写了使用注解方式验证并获取用户信息的实例,大家不是很理解,问题很多,现在附上简单的验证获取用户信息的实例! 微信企业号OAuth2验证接口实例(使用SpringMVC) OAuth2.0验证需要注意: 1.redirect_uri参数是授权回调地址,也就是说这个地址外网是可以访问的,所以如果使用本地映射服务器的猿们请修改为外网可以访问的地址! 2.配置可信域名,可信域名是1

[转载]微信企业号开发如何建立连接

连接将使你的企业号更具价值,你可以使用以下三种方式,连接你的企业号及企业应用: 1.企业应用调用企业号提供的接口,管理或查询企业号后台所管理的资源.或给成员发送消息等,以下称主动调用模式. 2.企业号把用户发送的消息或用户触发的事件推送给企业应用,由企业应用处理,以下称回调模式. 3.用户在微信中阅读企业应用下发的H5页面,该页面可以调用微信提供的原生接口,使用微信开放的终端能力,以下称JSAPI模式. 通过这三种连接方式的结合,你可以在企业号中建立功能强大的移动轻应用,并依托微信数亿活跃用户,

C#开发微信门户及应用(25)-微信企业号的客户端管理功能

我们知道,微信公众号和企业号都提供了一个官方的Web后台,方便我们对微信账号的配置,以及相关数据的管理功能,对于微信企业号来说,有通讯录中的组织架构管理.标签管理.人员管理.以及消息的发送等功能,其中微信企业号的组织架构和标签可以添加相应的人员,消息发送可以包含文本.图片.语音.视频.图文.文件等内容.对于企业号来说,官方的接口几乎可以无限的发送消息,因此构建一个管理后台,管理企业号的人员,以及用来给企业成员发送消息就是一个很好的功能亮点,有时候可以提高我们企业内部的消息通讯效率和日常工作管理效

微信企业号第三方应用开发[一]——创建套件

注:文中绿色部分为摘自微信官方文档 第三方应用提供给企业的是一个应用,但是应用必须在套件下创建,所以第一步是要创建套件. 注册成为应用提供商,必须输入以下信息: 信息项 要求及说明 企业Logo 应用提供商的企业Logo,小于2M,640*640,背景为白色 企业简称 使用对外宣传的企业简称,能代表企业的名字,2-16个字 企业简介 描述企业所提供的服务,4-120个字 企业官网 应用服务商的企业官网 注册条件:a)拥有一个已经过认证的企业号 b)用系统管理员身份进行申请 摘自http://qy

微信企业号在企业中的应用(1):功能概述

微信企业号是腾讯面向企业用户推出的一项功能,企业号与服务号.订阅号的不同在于企业号只能被企业通讯录内的员工所关注.由于微信的普及率和企业号充分开放了接口,企业号真正实现了微信的“连接一切”的目标.微信企业号可以方便而安全的连接企业的任何系统,不仅对于中小企业,对于大企业意义也十分重大.大企业尽管有实力定制开发APP,也需要考虑匹配Android.IOS两个操作系统.分发问题和设备的兼容性问题,成本也非常高.而大家普遍都安装了微信,现在连二维码都不需要知道,微信主动提示,员工一键关注,非常的方便快

微信企业号公测开启OA红海模式

之前就有传出消息说腾讯要出微信企业号,百度直达号的发布间接敦促了微信企业号的开发进度,这不,企业号开始公测了.以下是微信π的消息. 今日,微信正式开启微信企业号公测,目前公测版本面向所有用户,企业.政府及事业单位.社会化组织均可申请.企业进入http://qy.weixin.qq.com页面完成注册即可开通. 据微信企业号相关负责人介绍,微信企业号是微信为企业提供的移动应用入口,旨在帮助企业建立员工.上下游供应链与企业IT系统间的连接,从而快速.低成本实现高质量的移动轻应用,实现生产.管理.协作

引领移动协同需求Cnskype结合微信企业号推出企业办公、通讯整合方案

微信企业号的推出,堪比屠龙宝刀重出江湖,一时间企业级市场风云再起,或许还将引发一轮腥风血雨.为了抢占市场先机,诸多第三方开发商和企业级软件厂商闻风而动,以冲刺的步伐,争先推出企业号的集成应用服务和解决方案,为移动办公市场"添柴加火". 有着"连接一切"野心的企业号,通过统一工作入口,将企业需要的各种移动办公应用整合在一起,从而实现企业员工内部.上下游供应链间的协作.从目前市场上推出的企业号的应用和服务来看,微信企业号承载的基础应用便是协同办公,部分业内人士认为,这绝