在開發GO小程式或者公眾號介面的時候,需要對接微信訊息的token簽名驗證 , 這時候需要開發者驗證來自微信 , 并回傳指定的字串
微信檔案里給的是PHP版本的代碼 , 下面這個是go版本的代碼 , 使用的gin框架
這個是入口的路由 ,根據自己的代碼來寫就可以 , 注意發來的是GET請求
package router import ( "github.com/gin-gonic/gin" "github.com/taoshihan1991/imaptool/controller" ) func InitApiRouter(engine *gin.Engine){ engine.GET("/micro_program",controller.GetCheckWeixinSign) }
驗證代碼 , 這里只有一個需要把微信公眾號后臺填寫的token , 自己換上 , 其他都是對方發來的訊息
package controller import ( "crypto/sha1" "encoding/hex" "github.com/gin-gonic/gin" "github.com/taoshihan1991/imaptool/config" "log" "sort" ) func GetCheckWeixinSign(c *gin.Context){ token:="xxxxxxxx"//自己填的token signature:=c.Query("signature") timestamp:=c.Query("timestamp") nonce:=c.Query("nonce") echostr:=c.Query("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驗證失敗") } }
在公眾號后臺驗證時 , 彈出來綠色的驗證成功標識后就可以了
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/37641.html
標籤:Go
下一篇:星濤:javaEE學習路線一覽
