博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微信公众号
阅读量:5805 次
发布时间:2019-06-18

本文共 4675 字,大约阅读时间需要 15 分钟。

前期准备

准备如下

个人只能申请订阅号,而且不能进行微信认证,但是可以申请公众平台测试账号,拥有全部的权限,(首页—>开发者工具—>公众平台测试账号)

接入

在公网部署好一个web项目,一定是80或者443端口。

pom.xml

4.0.0
com.wx.aeolian
com.wx.aeolian
1.0-SNAPSHOT
javax.servlet
javax.servlet-api
3.1.0
provided
javax.servlet.jsp
jsp-api
2.2
provided
javax.servlet
jstl
1.2
runtime
commons-codec
commons-codec
1.12
UTF-8
D:\ProgramFiles_QY\IdeaProjects\WxAeolian
org.apache.maven.plugins
maven-compiler-plugin
3.3
1.7
1.7
org.apache.maven.plugins
maven-surefire-plugin
2.18.1
true
org.apache.tomcat.maven
tomcat7-maven-plugin
2.2
/${project.artifactId}

核心Servlet

package com.aeolian.core;import org.apache.commons.codec.digest.DigestUtils;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.util.*;@WebServlet("/wxCore")public class WxServlet extends HttpServlet{    @Override    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {        try {            doPost(req,resp);        } catch (ServletException e) {            e.printStackTrace();        }    }    /*1)将token、timestamp、nonce三个参数进行字典序排序     *2)将三个参数字符串拼接成一个字符串进行sha1加密     *3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信*/    @Override    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        String signature = req.getParameter("signature");        String timestamp = req.getParameter("timestamp");        String nonce = req.getParameter("nonce");        String echostr = req.getParameter("echostr");        String token = "微信公众平台中设置的token";    //微信公众平台中配置        /*1)将token、timestamp、nonce三个参数进行字典序排序*/        String[] str = { token, timestamp, nonce };        Arrays.sort(str); // 字典序排序        String sortStr = str[0] + str[1] + str[2];  //排序后拼接        /*2)将三个参数字符串拼接成一个字符串进行sha1加密*/        String digest = DigestUtils.sha1Hex(sortStr);        /*System.out.println("signature: "+signature);        System.out.println("timestamp: "+timestamp);        System.out.println("nonce: "+nonce);        System.out.println("echostr: "+echostr);        System.out.println("nosha1: "+sortStr);        System.out.println("digest: "+digest);*/        /*3)校验*/        String result = "";        if (digest.equals(signature)){   //与signature对比,标识该请求来源于微信            result = echostr;  //如果是,返回echostr        }        resp.resetBuffer();        resp.setContentType("text/html;charset=utf-8");        resp.getOutputStream().write(result.getBytes("utf-8"));        resp.getOutputStream().flush();    }}

打成war包是注意事项,在Artifacts中右击Available Elements-》put into /WEB-INF/lib,否则打成的包中没有pom引入的jar

 

转载于:https://www.cnblogs.com/aeolian/p/10373046.html

你可能感兴趣的文章
如何使用Python3.4连接MySQL
查看>>
【转】OS X Mavericks: 防止 Mac 进入睡眠 -- 不错
查看>>
通达信版F10检索工具下载
查看>>
零基础学python-2.17 文件、open()、file()
查看>>
菜鸟学Java(二十二)——又一次认识泛型
查看>>
也谈设计模式,架构,框架和类库的区别
查看>>
Qt——布局管理器
查看>>
RIP协议
查看>>
[Android基础]Android中使用HttpURLConnection
查看>>
grid网格的流动一
查看>>
python---------匿名函数
查看>>
android:Notification实现状态栏的通知
查看>>
DbHelper.ttinclude 更新,查询视图和表
查看>>
20170814 新鲜:EChart新增了日历图,要想办法用起来
查看>>
Lighttpd1.4.20源代码分析 笔记 状态机之错误处理和连接关闭
查看>>
具体解释MVP矩阵之ViewMatrix
查看>>
构建之法读书笔记 (1)
查看>>
table合并单元格colspan和rowspan
查看>>
Windows和Linux下查看Apache、MySQL、PHP版本
查看>>
centOs6.9服务器版本安装图解(包含java和mysql)
查看>>