标签:调用 请求 style 服务器配置 地址 sha1 描述 sign param
由于只是接入,只需要一个Controller的方法路径 和 定义一个token,可以写在配置文件里
/** * FileName: CoreController * Author: Phil * Date: 8/1/2018 15:52 * Description: 接入微信并处理消息事件 * History: * <author> <time> <version> <desc> * 作者姓名 修改时间 版本号 描述 */ package com.phil.wechat; import com.phil.modules.util.SignatureUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; /** * 〈一句话功能简述〉 * 〈接入微信并处理消息事件〉 * * @author Phil * @create 8/1/2018 15:52 * @since 1.0.0 */ @RestController @RequestMapping("api/core/weixin/V1") @Slf4j public class CoreController { /** * 处理微信服务器发来的get请求,进行签名的验证 * <p> * signature 微信端发来的签名 * timestamp 微信端发来的时间戳 * nonce 微信端发来的随机字符串 * echostr 微信端发来的验证字符串 */ @GetMapping(value = "wechat") public String validate(@RequestParam(value = "signature") String signature, @RequestParam(value = "timestamp") String timestamp, @RequestParam(value = "nonce") String nonce, @RequestParam(value = "echostr") String echostr) { log.warn("validate"); return SignatureUtil.checkSignature(signature, timestamp, nonce) ? echostr : null; } /** * 此处是处理微信服务器的消息转发的 */ @PostMapping(value = "wechat") public String processMsg(HttpServletRequest request) { // // 调用核心服务类接收处理请求 return ""; } }
/** * SHA1加密 验证签名 * * @param signature * @param timestamp * @param nonce * @return */ public static boolean checkSignature(String signature, String timestamp, String nonce) { String[] arr = new String[]{token, timestamp, nonce}; Arrays.sort(arr); String str = StringUtils.join(arr); String sign = DigestUtils.sha1Hex(str); return Objects.equals(signature, sign); }
略
标签:调用 请求 style 服务器配置 地址 sha1 描述 sign param
原文地址:https://www.cnblogs.com/phil_jing/p/10010550.html