• 微信公众号配置消息接口


    服务器代码,内网穿透

    package io.renren.modules.generator.controller;

    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;

    import java.io.IOException;
    import java.io.PrintWriter;
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    import java.util.Arrays;
    import java.util.Collections;
    import java.util.List;

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


    @RestController
    public class Test extends HttpServlet
    {
    private static final long serialVersionUID = 1L;

    public static final String TOKEN = "majie";


    @GetMapping("/checkToken")
    protected void doget(HttpServletRequest request, HttpServletResponse response) throws IOException
    {

    String signature = request.getParameter("signature");
    // 时间戳
    String timestamp = request.getParameter("timestamp");
    // 随机数
    String nonce = request.getParameter("nonce");
    // 随机字符串
    String echostr = request.getParameter("echostr");
    System.out.println(signature + timestamp + nonce);

    PrintWriter out = response.getWriter();
    // 通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败
    if (checkSignature(signature, timestamp, nonce).equals(signature)) {
    out.write(echostr);
    System.out.println("微信服务验证成功!"+echostr);
    }else {
    out.print(echostr);
    System.out.println("微信服务验证失败!"+echostr);
    }
    out.flush();
    out.close();
    }

    public static String checkSignature(String signature ,String timestamp, String nonce)
    {
    String[] src = {TOKEN,timestamp,nonce};
    List<String> list =Arrays.asList(src);
    Collections.sort(list);

    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < list.size(); i++)
    {
    sb.append(list.get(i));
    }
    return SHA1(sb.toString());

    }

    /**
    *
    * @param decript
    * @return
    */
    public static String SHA1(String decript) {
    try {
    MessageDigest digest = MessageDigest.getInstance("SHA-1");
    digest.update(decript.getBytes());
    byte messageDigest[] = digest.digest();
    // Create Hex String
    StringBuffer hexString = new StringBuffer();
    // 字节数组转换为 十六进制 数
    for (int i = 0; i < messageDigest.length; i++) {
    String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);
    if (shaHex.length() < 2) {
    hexString.append(0);
    }
    hexString.append(shaHex);
    }
    return hexString.toString();

    } catch (NoSuchAlgorithmException e) {
    e.printStackTrace();
    }
    return "";
    }
    }
  • 相关阅读:
    Lua 脚本限制访问频率过高的IP
    h2:无法自动建库解决(H2 Database Engine)
    在保留所有列的pandas中获取每个类别的前n个值...
    python中使用多进程multiprocessing并获取子进程的返回值
    openresty nginx http状态码
    python process返回值_在多处理Python中从multiprocessing.Queue()返回值
    修改nginx的http响应头server字段
    mysql 保留两位小数
    Nginx location模块整理
    Python量化分析,计算KDJ (使用如下方法计算与国内财经软件显示一致)
  • 原文地址:https://www.cnblogs.com/a1304908180/p/14302459.html
Copyright © 2020-2023  润新知