微信企业号开发部分总结

企业号开发主要参考企业号开发者中心的接口文档。

注意主动调用需要AccessToken(代表权限的Secret以及公司的CoprID)

验证URL


这里尤其注意回调模式需要在企业号后台--应用中心,然后点击应用进去之后选择回调模式(开启之后普通模式自动关闭),企业号的每个应用都有自己的回调模式开关,必须在后台配置好“回调URL及密钥”,这里的URL是一个什么样的URL接口文档有介绍。

需要特别注意①:这个URL只有正确响应了微信的验证请求,点击“保存”按钮的时候才能保存成功。

②:我这里写的是用一个传统的Servlet来相应微信的验证,如下:

package servlet;

import java.io.IOException;
import java.util.Arrays;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
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;

/**
 * Servlet implementation class AuthServlet
 */
@WebServlet("/AuthServlet")
public class AuthServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public AuthServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		
		System.out.println(request.getContextPath());
		Map
   
   
    
     map = request.getParameterMap();
//		System.out.println(request.getParameterMap());
		for(Map.Entry
    
    
     
      e:map.entrySet()){
			System.out.println(e.getKey()+Arrays.toString(e.getValue()));
		}

//msg_signature[3db13de8b678a25c0aadf18364f7f99c4c60f2ff]
//timestamp[1456417469]
//nonce[1515742856]
//echostr[jwU04ODU0Zajy6RMfRsisVtEY+BJ6L7ZP0n+KXH32+15GsntU3C2XwEt9OFgeDpL/IUP8l3KvTpoPjSnFLu5+Q==]
		String signature = map.get("msg_signature")[0];
		
		String timestamp = map.get("timestamp")[0];
		
		String nonce = map.get("nonce")[0];
		
		String echostr = map.get("echostr")[0];
		
		String sToken = "0UPNyJNJBmXgNiX";
		String sCorpID = "wx72b763ed1662b0a0";
		String sEncodingAESKey = "6YBWPjqQlOMzTmYRt5SiVN83WnGmlLWH6IO4DMeQUki";
		
		String sEchoStr;

		try {
			WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(sToken, sEncodingAESKey, sCorpID);
			sEchoStr = wxcpt.VerifyURL(signature, timestamp,
					nonce, echostr);
			System.out.println("verifyurl echostr: " + sEchoStr);
			response.getWriter().append(sEchoStr);
		} catch (AesException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

    
    
   
   
关于Servlet
VerifyURL需要response给返回来让微信企业号去校验正确与否,通过了就可以保存成功
此Servlet引用了很多微信官方提供的jar包以及Java文件,接口文档--回调模式--接收消息时的加解密一栏有提到,要去 附录去找方案。附录--加解密库下载与示例一栏下载demo以及lib、sample等文件。同时需要下载无限制策略文件,根据demo叙述的,替换掉本机(服务器)的已经安装的jdk中的相应文件(另外需要注意,如果启动了tomcat,并且tomcat自己安装了一个jdk,那么不要忘记去替换tomcat对应的那两个文件)

关于管理端配置的回调URL
成员在企业号上的某些操作行为,比如关注,取消关注,点击菜单,事件等都会被推送到每个应用在管理端设置的URL,这里可以参考接口文档里接收消息与事件一栏。(每次用户在某一个开启了回调模式并且配置好回调URL的应用里面发文字消息或者表情以及点击菜单栏时,最初被配置的回调URL每次都会被微信服务器呼起,(手机客户端呼起微信服务器,微信服务器呼起当初配置的url对应的比如AuthServlet等))

关于企业号中的用户ID

通过https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=ACCESS_TOKEN&code=CODE  获取到的用户信息中的UserId就是企业号后台中---通讯录中--成员的“账号”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值