因爲只是接入,只須要一個Controller的方法路徑 和 定義一個token,能夠寫在配置文件裏java
/** * 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 params token,timestamp,nonce
* @return 是否符合
*/
public static boolean checkSignature(String signature, String... params) {
Arrays.sort(params);
String str = StringUtils.join(params);
String sign = DigestUtils.sha1Hex(str);
return Objects.equals(signature, sign);
}
略web