微信公众号接入

Step1:微信公众平台注册账号,登录

Step2:在左边栏最底端点击开发者中心,进入配置界面

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;  
    } 



Step4:提交显示成功之后就可以启用了


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值