(摘) 微信小程序,服务器信息推送验证

声明:内容源自网络,版权归原作者所有。若有侵权请在网页聊天中联系我

虽然之前也用过,但偶尔用,总忘,记下来。
用于微信小程序设置推送信息服务器时,进行服务器验证。

package main

import (
	"crypto/sha1"
	"encoding/hex"
	"log"
	"sort"

	"github.com/gin-gonic/gin"
)

func main() {
	r := gin.Default()
	r.GET("/wx", GetCheckWeixinSign)
	r.Run()
}

func GetCheckWeixinSign(c *gin.Context) {
	token := "" //自己填的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验证失败")
	}
}

相关文章