声明 : 本系列纯属自己为了学习而编写,均已测试号为例,如果不正之处,恳请指正,谢谢!
接入微信公众平台开发,开发者需要按照如下步骤完成:
1、填写服务器配置
由于只是接入,只需要一个Controller的方法路径 和 定义一个token,可以写在配置文件里
2、验证服务器地址的有效性
/** * 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); }
3、依据接口文档实现业务逻辑
略