[Go]GO語言實戰-小程序或公眾號接口gin框架驗證微信服務器消息簽名-開源WEB客服


在開發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驗證失敗")
    }
}

在公眾號后台驗證時 , 彈出來綠色的驗證成功標識后就可以了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM