微信公众号接入

Step1:微信公众平台注册账号,登录
微信公众号接入_第1张图片
Step2:在左边栏最底端点击开发者中心,进入配置界面
微信公众号接入_第2张图片
Step3:修改自己的配置后点击提交,如果在最顶端显示提交成功那么说明就OK了!
      Tips1:前提是服务器后台已经可以对微信的接入提供业务处理,不论使用什么框架,根据URL映射到位就好
      Tips2:  微信首次接入服务用的是GET方式,接入成功后以后用的都是POST方式
      Tips3:微信服务器首次接入时会以get方式传递一个Wechat类型的Model,后台接收该model后获取其中的signature,timestamp,nonce,echostr
      Tips4:通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败
      Tips5:校验时首先将token,timestamp,nonce进行字典排序,然后进行sha1加密得到加密排序后的字符串,与微信服务器传进来的signature比较是否相等
      Tips6:关键代码如下:
/**
 * 微信验证实体类
 * 
 * @author herosky
 * 
 */
public class WeChat {
	// 包含token的字符串
	private String signature;
	// 时间戳
	private String timestamp;
	// 随机数
	private String nonce;
	// 随机字符串
	private String echostr;

	public String getSignature() {
		return signature;
	}

	public void setSignature(String signature) {
		this.signature = signature;
	}

	public String getTimestamp() {
		return timestamp;
	}

	public void setTimestamp(String timestamp) {
		this.timestamp = timestamp;
	}

	public String getNonce() {
		return nonce;
	}

	public void setNonce(String nonce) {
		this.nonce = nonce;
	}

	public String getEchostr() {
		return echostr;
	}

	public void setEchostr(String echostr) {
		this.echostr = echostr;
	}

}

public String wechatInterface(WeChat wc) {

        String signature = wc.getSignature(); // 微信加密签名
	String timestamp = wc.getTimestamp(); // 时间戳
	String nonce = wc.getNonce(); // 随机数
	String echostr = wc.getEchostr(); // 随机字符串

	// 通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败
	if (SignUtil.checkSignature(signature, timestamp, nonce)) {
		return echostr;
	} else{
		System.out.println("不是微信服务器发来的请求,请小心!");
		return null;
	}
}
/** 
     * 验证签名 
     *  
     * @param signature 
     * @param timestamp 
     * @param nonce 
     * @return 
     */  
    public static boolean checkSignature(String signature, String timestamp, String nonce) {  
        String[] arr = new String[] { token, timestamp, nonce };  
        // 将token、timestamp、nonce三个参数进行字典序排序  
        Arrays.sort(arr);  
        StringBuilder content = new StringBuilder();  
        for (int i = 0; i < arr.length; i++) {  
            content.append(arr[i]);  
        }  
        MessageDigest md = null;  
        String tmpStr = null;  
  
        try {  
            md = MessageDigest.getInstance("SHA-1");  
            // 将三个参数字符串拼接成一个字符串进行sha1加密  
            byte[] digest = md.digest(content.toString().getBytes());  
            tmpStr = byteToStr(digest);  
        } catch (NoSuchAlgorithmException e) {  
            e.printStackTrace();  
        }  
  
        content = null;  
        System.out.println("加密排序后的字符串:"+tmpStr);
        // 将sha1加密后的字符串可与signature对比,标识该请求来源于微信  
        return tmpStr != null ? tmpStr.equals(signature.toUpperCase()) : false;  
    } 

微信公众号接入_第3张图片微信公众号接入_第4张图片

Step4:提交显示成功之后就可以启用了
微信公众号接入_第5张图片
微信公众号接入_第6张图片

你可能感兴趣的:(Wechat)