微信服務(wù)器配置 go

直接上代碼

package main

import (
    "crypto/sha1"
    "encoding/hex"
    "fmt"
    "net/http"
    "sort"
)

func main() {
    // 綁定路由
    http.HandleFunc("/", sign)
    // 啟動(dòng)監(jiān)聽(tīng)
    err := http.ListenAndServe(":9999", nil)
    if err != nil {
        fmt.Println("服務(wù)器啟動(dòng)失??!")
    }
}
func sign(response http.ResponseWriter, request *http.Request) {
    //解析參數(shù)
    err := request.ParseForm()
    if err != nil {
        return
    }
    var token string = "Wingbow"
    // 獲取參數(shù)
    signature := request.FormValue("signature")
    timestamp := request.FormValue("timestamp")
    nonce := request.FormValue("nonce")
    echostr := request.FormValue("echostr")
    //將token、timestamp、nonce三個(gè)參數(shù)進(jìn)行字典序排序
    var tempArray = []string{token, timestamp, nonce}
    sort.Strings(tempArray)
    //將三個(gè)參數(shù)字符串拼接成一個(gè)字符串進(jìn)行sha1加密
    var sha1String string = ""
    for _, v := range tempArray {
        sha1String += v
    }
    h := sha1.New()
    h.Write([]byte(sha1String))
    sha1String = hex.EncodeToString(h.Sum([]byte("")))
    //獲得加密后的字符串可與signature對(duì)比
    if sha1String == signature {
        _, err := response.Write([]byte(echostr))
        if err != nil {
            fmt.Println("響應(yīng)失敗。。。")
        }
    } else {
        fmt.Println("驗(yàn)證失敗")
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容