From bac6ac448858222999e44609b8ac2f19be5a4227 Mon Sep 17 00:00:00 2001 From: taoshihan1991 <630892807@qq.com> Date: Mon, 14 Sep 2020 13:43:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E5=B0=8F=E7=A8=8B=E5=BA=8FAP?= =?UTF-8?q?I=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/config.go | 2 ++ controller/weixin.go | 35 +++++++++++++++++++++++++++++++++++ router/api.go | 2 ++ 3 files changed, 39 insertions(+) create mode 100644 controller/weixin.go diff --git a/config/config.go b/config/config.go index 3baac2c..a3bd66c 100644 --- a/config/config.go +++ b/config/config.go @@ -18,6 +18,8 @@ const MysqlConf = Dir + "mysql.json" const MailConf = Dir + "mail.json" const LangConf=Dir+"language.json" const MainConf = Dir + "config.json" +const WeixinToken="taoshihan1" + type Mysql struct{ Server string Port string diff --git a/controller/weixin.go b/controller/weixin.go new file mode 100644 index 0000000..dac4fda --- /dev/null +++ b/controller/weixin.go @@ -0,0 +1,35 @@ +package controller + +import ( + "crypto/sha1" + "encoding/hex" + "github.com/gin-gonic/gin" + "github.com/taoshihan1991/imaptool/config" + "log" + "sort" +) + +func PostCheckWeixinSign(c *gin.Context){ + token:=config.WeixinToken + signature:=c.PostForm("signature") + timestamp:=c.PostForm("timestamp") + nonce:=c.PostForm("nonce") + echostr:=c.PostForm("echostr") + //将token、timestamp、nonce三个参数进行字典序排序 + var tempArray = []string{token, timestamp, nonce} + sort.Strings(tempArray) + //将三个参数字符串拼接成一个字符串进行sha1加密 + var sha1String string = "" + for _, v := range tempArray { + sha1String += v + } + h := sha1.New() + h.Write([]byte(sha1String)) + sha1String = hex.EncodeToString(h.Sum([]byte(""))) + //获得加密后的字符串可与signature对比 + if sha1String == signature { + c.Writer.Write([]byte(echostr)) + } else { + log.Println("微信API验证失败") + } +} diff --git a/router/api.go b/router/api.go index 98917ba..8862c87 100644 --- a/router/api.go +++ b/router/api.go @@ -52,4 +52,6 @@ func InitApiRouter(engine *gin.Engine){ engine.POST("/ipblack",middleware.JwtApiMiddleware,controller.PostIpblack) engine.DELETE("/ipblack",middleware.JwtApiMiddleware,controller.DelIpblack) engine.GET("/ipblacks_all",middleware.JwtApiMiddleware,controller.GetIpblacks) + //微信接口 + engine.GET("/micro_program",controller.PostCheckWeixinSign) } \ No newline at end of file