• 技术文章 >Java >java教程

    Java+微信公众号开发过程步骤详解

    php是最好的语言php是最好的语言2018-08-10 14:44:45原创10345
    这两天自己想学习微信公众号开发,于是在网上搜索并上手练习,在这个过程中因为各种问题,(描述不完整,有的文章不知道怎么就蹦出个新的常量,也没说在哪定义的,还有jar包版本的问题坑了我一天的时间)所以特此在这记录。

    1.首先,先得注册一个微信公众号,上度娘搜索微信公众平台,进入这个页面注册(已有账号的跳过这个步骤):

    1.png

    2.然后用Eclipse新建一个项目,这里我建的是web项目,jdk是1.8,tomcat是8.5.

    1.png

    3.为了和微信建立连接,建好工程后先新建一个类,命名为:CheckUtil,它的作用是作为和微信连接的校验工具,代码如下:

    import java.security.MessageDigest;
    import java.util.Arrays;
    
    public class CheckUtil {
    	public static final String  tooken = "自行定义"; //开发者自行定义Tooken
    	public static boolean checkSignature(String signature,String timestamp,String nonce){
    		//1.定义数组存放tooken,timestamp,nonce
    		String[] arr = {tooken,timestamp,nonce};
    		//2.对数组进行排序
    		Arrays.sort(arr);
    		//3.生成字符串
    		StringBuffer sb = new StringBuffer();
    		for(String s : arr){
    			sb.append(s);
    		}
    		//4.sha1加密,网上均有现成代码
    		String temp = getSha1(sb.toString());
    		//5.将加密后的字符串,与微信传来的加密签名比较,返回结果
    		return temp.equals(signature);
    	}
    
    	public static String getSha1(String str){
            if(str==null||str.length()==0){
                return null;
            }
            char hexDigits[] = {'0','1','2','3','4','5','6','7','8','9',
                    'a','b','c','d','e','f'};
            try {
                MessageDigest mdTemp = MessageDigest.getInstance("SHA1");
                mdTemp.update(str.getBytes("UTF-8"));
                byte[] md = mdTemp.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++] = hexDigits[byte0 >>> 4 & 0xf];
                    buf[k++] = hexDigits[byte0 & 0xf];      
                }
                return new String(buf);
            } catch (Exception e) {
                // TODO: handle exception
                return null;
            }
        }
    }

    4.然后新建一个servlet,重写doGet方法接收微信发来的GET请求,部分代码如下:

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    		response.setContentType("text/html");
    		String signature = request.getParameter("signature");
    		String timestamp = request.getParameter("timestamp");
    		String nonce = request.getParameter("nonce");
    		String echostr = request.getParameter("echostr");
    		PrintWriter out = response.getWriter();
    		if(CheckUtil.checkSignature(signature, timestamp, nonce)){
    			//如果校验成功,将得到的随机字符串原路返回
    			out.print(echostr);
    		}
    	}

    5.代码写完后,这里需要一个工具将我们的内网链接映射为公网,这样微信才能访问到我们的后台,这里我采用的是一款免费的映射工具ngrok,去度娘搜索下载即可,下载完后解压放在一个指定位置,同时按住win键+R键,输入cmd,回车进入dos环境,切换到ngrock所在盘符,输入ngrock http 8080 回车(在这之前先启动tomcat):

    1.png

    6.回车后等待一会,即可得到公网链接,下图所示阴影区域给出的链接,即可直接访问本机127.0.0.1:8080下的链接内容,分别是http协议和https协议对应的地址:

    1.png

    7.登录微信公众号平台,滑到最下面,点击左下角的开发——基本配置:

    1.png

    点击提交按钮,提示提交成功就说明微信能访问到我们自己的后台了。

    相关推荐:

    Java实现微信公众平台开发的图文代码实例

    微信公众号支付开发(java)实例详解

    以上就是Java+微信公众号开发过程步骤详解的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:Java 微信公众号
    上一篇:Java基本理论及编程语言分类 下一篇:Java+微信公众号开发过程步骤详解2
    大前端线上培训班

    相关文章推荐

    • 理解java8中java.util.function.*pojo反射新方法(附代码)• 浅析安卓app和微信授权登录及分享完整对接(代码分享)• 教你一招搞定时序数据库在Spring Boot中的使用• 一招教你使用java快速创建Map(代码分享)• 一文讲解Java中初始化List集合的8种方式(附代码)

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网