申请成为微信开发者,申请消息接口

//
public class WeixinAction extends ActionSupport{
	private String signature;
	private String timestamp;
	private String nonce;
	private String echostr;
	private String token;
	
	ActionContext context = ActionContext.getContext();
	private HttpServletResponse response = ServletActionContext.getResponse();
	public void weiXinInfo() throws Exception{
		//1. 将token、timestamp、nonce三个参数进行字典序排序
		token = "weixin";
		String[] str = {token,timestamp,nonce};
		for(int i=0;i<str.length-1;i++){
			for (int j = i + 1; j < str.length; j++) {  
                if(str[i].compareTo(str[j])>0){//字符串比较用compareTo方法  
                    String temp = str[i];  
                    str[i] = str[j];  
                    str[j] = temp;  
                }   
            }  
		}
		StringBuilder sb = new StringBuilder();
		for(String str1 : str){
		    sb.append(str1);
		}
		String s = sb.toString();
		response.setContentType("text/html");
        response.setCharacterEncoding("UTF-8");
        PrintWriter out= response.getWriter();
		if(SHA1Util.encodeBySHA(s).equals(signature)){
			//LogUtil.logger.info("echo"+echostr);
			out.write(echostr);
		}else{
			//LogUtil.logger.info("fail"+echostr);
			out.write("false");
		}
		out.flush(); 
        out.close();
	}
	public String getToken() {
		return token;
	}
	public void setToken(String token) {
		this.token = token;
	}
	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;
	}
}



//进行SHA-1加密
public class SHA1Util {


    /**
    * 转换字节数组为十六进制字符串
    * @param b
    * @return
    */
	private final static String[] hexDigits = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"};
   public static String byteArrayToHexString(byte[] b){  
       StringBuffer stringBuffer = new StringBuffer();  
       for (int i = 0; i < b.length; i++){  
           stringBuffer.append(byteToHexString(b[i]));  
       }  
       return stringBuffer.toString();  
   }  
   
   /**
    * 将一个字节转化成十六进制形式的字符串
    * @param b
    * @return
    */
   public static String byteToHexString(byte b){  
       int n = b;  
       if (n < 0) {
           n = 256 + n;  
       }
       int d1 = n / 16;  
       int d2 = n % 16;  
       return hexDigits[d1] + hexDigits[d2];  
   } 
   
   /**     
    * 字符串SHA-1加密
    * @param string
    * @return
    */
   public static String encodeBySHA(String string){
       if(string != null && !string.isEmpty()){
           try {
               //创建具有指定算法名称的信息摘要  
               MessageDigest messageDigest = MessageDigest.getInstance("SHA-1");
               //使用指定的字节数组对摘要进行最后更新,然后完成摘要计算  
               byte[] bytes = messageDigest.digest(string.getBytes());
               //将得到的字节数组变成字符串返回  
               string = byteArrayToHexString(bytes);  
           } catch (Exception e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
           }
       }
       return string;
   }
}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值