博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA折腾微信公众平台(Token验证)
阅读量:6993 次
发布时间:2019-06-27

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

hot3.png

最近微信的公众平台比较火,于是我也想弄个微信来玩玩。点击之后就可以看到官方的答案了(额,比较坑爹)。

注册之后,可以选择编辑模式和开发模式,这里要说的是开发模式。

首先要开启开发模式必须要进行Token的一个验证,你给出一个地址,微信发送请求,然后你给出相应,就这么简单。虽然说是简单,但是这是事后才说的,官方只有PHP的DEMO,我用JAVA开发的时候各种蛋疼不会弄,不过好在还是弄出来了。

上传代码

以下代码是校验Token的关键代码,其中还有一个SHA1加密的类在附件中,这里就不贴出来了。需要注意的是,这里的类我是继承的HttpServlet,也就是说要进行web.xml的配置,这个就不多说了。

无问题后上传到你的空间,我用的是BAE,大家也可以试试。

package net.binjoo.wechat;import java.io.IOException;import java.util.Arrays;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import net.binjoo.utils.SHA1;@SuppressWarnings("serial")public class WechatCallbackApi extends HttpServlet {        // 自定义 token    private String TOKEN = "这个地方由你自己定义";            public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {                // 微信加密签名        String signature = request.getParameter("signature");        // 随机字符串        String echostr = request.getParameter("echostr");        // 时间戳        String timestamp = request.getParameter("timestamp");        // 随机数        String nonce = request.getParameter("nonce");        String[] str = { TOKEN, timestamp, nonce };        Arrays.sort(str); // 字典序排序        String bigStr = str[0] + str[1] + str[2];        // SHA1加密        String digest = new SHA1().getDigestOfString(bigStr.getBytes()).toLowerCase();                // 确认请求来至微信        if (digest.equals(signature)) {            response.getWriter().print(echostr);        }    }}

开启消息接口

进入微信公众平台,选择导航菜单栏中的【高级设置 - 开发模式 - 成为开发者】或者点击进入,进入后填写网址URL和Token,其中Token可由可以任意填写,用作生成签名,但必须与WechatCallbackApi类中的常量TOKEN一致,否则不能通过校验,成不了开发者。

一切填写无问题之后,点击提交就可以了。是否通过的结果马上就可以得到响应,希望大家都能够看到【提交成功】的提示。

09144012_poxh.png

下载地址

  • |

转载于:https://my.oschina.net/CraneHe/blog/191711

你可能感兴趣的文章