`
knight_black_bob
  • 浏览: 850998 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

weichat 开发入门 微信

阅读更多

微信开发入门

 

ngrok 下载

 http://download.csdn.net/download/knight_black_bob/9121979

 

 

ngrok 公网映射
 ngrok -config ngrok.cfg -subdomain curiousby 8080
获得 公网地址
http://curiousby.tunnel.mobi
http://www.tunnel.mobi/  这个网站停止运行了,所以连不上,请下载2.0.17或者2.0.19的版本,直接用ngrok的服务器,命令为:ngrok http 8080

  

 

 

 

 web.xml

  <servlet>
  	<servlet-name>weichatServlet</servlet-name>
  	<servlet-class>com.curiousby.cn.WeichatServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>weichatServlet</servlet-name> 
  	<url-pattern>/weichat.do</url-pattern>
  </servlet-mapping>

 

 WeichatServlet.java

package com.curiousby.cn;

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

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.curiousby.cn.util.WeichatCheckUtils;
 

/**
 * @author baoyou  E-mail:curiousby@163.com
 * @version 创建时间:2015年9月20日 下午2:06:42 
 * des:
 */
public class WeichatServlet extends HttpServlet{

	 
	private static final long serialVersionUID = 1L;
	private String signature; //微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
	private String timestamp; // 时间戳
	private String nonce; //随机数
	private String echostr; //随机字符串
	
	

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException { 
		signature = req.getParameter("signature");
		timestamp = req.getParameter("timestamp");
		nonce = req.getParameter("nonce");
		echostr = req.getParameter("echostr");
		System.out.println("signature timestamp  nonce  echostr  " + signature +" " + timestamp +" " + nonce  + " " + echostr ); 
		PrintWriter out = resp.getWriter();
        if (WeichatCheckUtils.checkSignature(signature, timestamp, nonce)) {
            out.print(echostr);
        }

	}
	 
}

 

 

 

CommonUtils.java

 

public class CommonUtils {

	public static String ArrayToString (String [] arr){
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < arr.length; i++) {
			sb.append(arr[i]);
		}
		return sb.toString();
	}
}

 

ShaUtils.java

package com.curiousby.cn.util;

import java.security.MessageDigest;

/**
 * @author baoyou  E-mail:curiousby@163.com
 * @version 创建时间:2015年9月20日 下午2:36:04 
 * des:
 */
public class ShaUtils {

	private static final char[] HEX_DIGITS = { '0', '1', '2', '3', '4', '5',
		'6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
	
	
	public static String getSha1(String str){
		if (str == null || str.length() ==0) {
			return null;
		}
		
		try{
			
			MessageDigest messageDigest = MessageDigest.getInstance("SHA1");
			messageDigest.update(str.getBytes("UTF-8"));
			
			byte[] md = messageDigest.digest(); 
			int j  = md.length;
			char [] buf  = new char[j*2];
			int k = 0;
			
			for (int i = 0; i < j; i++) {
				byte byte0 = md[i];
				buf[k++] =HEX_DIGITS[byte0 >>> 4 & 0xf ];
				buf[k++] =HEX_DIGITS[byte0  & 0xf ];
			}
			System.out.println(" before sha1 str :"+ str +"\r\n after sha1  string : "+new String(buf));
			return new String(buf);
		}catch(Exception e){
			return null;
		}
	}
}

 

 WeichatCheckUtils.java

package com.curiousby.cn.util;

import java.util.Arrays;

/**
 * @author baoyou  E-mail:curiousby@163.com
 * @version 创建时间:2015年9月20日 下午2:14:46 
 * des:
 */
public class WeichatCheckUtils {

	
	private static final String TOKEN ="xxxx";
	
	public  static boolean checkSignature(String signature, String timestamp,String nonce){
		String[] str = { TOKEN, timestamp, nonce };
		 Arrays.sort(str); // 字典序排序
		String string = CommonUtils.ArrayToString(str);
		
		String temp = ShaUtils.getSha1(string);
		
		
		 return temp.equals(signature);
	}
	
}

  

 

 

接入成功!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

捐助开发者

在兴趣的驱动下,写一个免费的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。



 
 
 谢谢您的赞助,我会做的更好!

 

 

  • 大小: 23.6 KB
  • 大小: 11.9 KB
  • 大小: 11.9 KB
分享到:
评论

相关推荐

    微信小程序开发入门教程&深入浅出,从理论到实践.pdf

    微信小程序开发入门教程&深入浅出,从理论到实践 微信小程序开发入门教程&深入浅出,从理论到实践 微信小程序开发入门教程&深入浅出,从理论到实践 微信小程序开发入门教程&深入浅出,从理论到实践 微信小程序开发...

    微信公众平台开发入门教程

    微信公众平台开发入门教程

    微信公众平台开发入门

    本资源包括ppt开发说明文档和详细的C#代码实现,借此代码可以迅速搭建一个可用的微信开发框架,并在此基础上进行具体业务逻辑的开发。 微信公众平台开发入门的入门知识,包括 : 1 公众账号的申请和配置; 2 公众平台...

    2020微信小程序开发入门期末真题期末复习题.docx

    2020微信小程序开发入门期末真题期末复习题.docx2020微信小程序开发入门期末真题期末复习题.docx2020微信小程序开发入门期末真题期末复习题.docx2020微信小程序开发入门期末真题期末复习题.docx2020微信小程序开发...

    微信开发入门教程.txt

    1. 微信开发概述 微信开发是指在微信平台上开发应用程序的过程。微信是一个以社交为主的移动应用程序,拥有庞大的用户群体和广泛的使用场景。微信开发可以帮助企业、个人或组织在微信平台上实现自己的业务需求,...

    翻倍工作室全能版微信开发入门教程代码

    翻倍工作室全能版微信开发入门教程代码

    微信公众平台开发入门详解(1)视频下载

    内容简介: 本视频由《微信公众平台应用开发:方法、技巧与案例》的作者刘运强(网名:柳峰)讲解微信公众平台开发入门级相关知识的系列视频之一。内容涵盖:1.微信公众平台基础知识(服务号/订阅号、公众账号注册的...

    微信小程序开发入门与实践.雷磊(详细书签)

    以Orange Can项目为主线,深入浅出地介绍微信小程序的基本结构、开发模式、组件应用、数据绑定方法、微信API使用、微信与设备硬件交互、微信支付等内容根据微信小程序公开上线新版本编写,总结小程序开发中踩过的“坑...

    微信小程序开发入门与实践.epub

    以Orange Can项目为主线,深入浅出地介绍微信小程序的基本结构、开发模式、组件应用、数据绑定方法、微信API使用、微信与设备硬件交互、微信支付等内容  根据微信小程序公开上线新版本编写,总结小程序开发中踩过的...

    java 微信公众号开发入门 DEMO 可直接跑起来的

    java 微信公众号开发入门 DEMO 可直接跑起来的 大家可以直接下载,然后练习一下。java 微信公众号开发入门 DEMO 可直接跑起来的 大家可以直接下载,然后练习一下。

    Java微信开发教程

    Java微信开发入门,主要介绍大微信公众号介绍、开发这环境的一个搭建、发送消息自定回复、企业实战中的微信开发

    微信小程序开发入门教程.pdf

    微信小程序开发.pdf

    ### 微信小程序开发知识点详解 #### 一、微信小程序账号注册与管理 - **注册账号**: - 访问微信官方的小程序管理后台(https://mp.weixin.qq.com/)。 - 选择注册类型为“小程序”,并填写相关信息(如邮箱、...

    微信开发入门手册,微信开发资源

    包括官方资源和支持第三方开发的框架或库

    C#微信开发教程.rar

    C#微信公众平台开发基础教程教程里附源码对微信开发入门者很有帮助,欢迎下载使用。 文中指导怎样申请微信开发的环境及部分源码可作为参考。

    实战 微信小程序入门

    微信小程序入门微信小程序入门微信小程序入门微信小程序入门

    微信小程序开发入门

    微信小程序开发入门文档。详细介绍了微信小程序开发语言的基本知识,并利用案例讲解开发流程,值得一看

    微信小程序开发入门.part3.rar

    微信小程序开发入门 - 3 .

Global site tag (gtag.js) - Google Analytics