验证来自微信服务器的消息
内容来自微信官方文档。
接入微信公众平台开发,开发者需要按照如下步骤完成:
- 填写服务器配置
- 验证服务器地址的有效性
- 依据接口文档实现业务逻辑
微信官方的文档已经写得很详细,官方给出的例子是基于php的,这里给出go实现的消息验证,http框架使用的是gin。
type WeChatVerify struct { Signature string Timestamp string Nonce string Echostr string } func (p *WeChatVerify) Verify() bool { s := []string{token, p.Timestamp, p.Nonce} sort.Strings(s) str := strings.Join(s, "") hashs := sha1.New() hashs.Write([]byte(str)) signature := hex.EncodeToString(hashs.Sum(nil)) log.Infof("calc signature on local: %s", signature) if signature == p.Signature { return true } else { return false } } func wx(ctx *gin.Context) { log.Infof("get request : %s", ctx.Request.URL) verify := &WeChatVerify{ Signature: ctx.Query("signature"), Timestamp: ctx.Query("timestamp"), Nonce: ctx.Query("nonce"), Echostr: ctx.Query("echostr"), } verifyBytes, _ := sonic.Marshal(verify) log.Infof("Get WeChatVerify from wechat server: %s", string(verifyBytes)) if verify.Verify() { ctx.Writer.WriteString(verify.Echostr) } else { log.Error("WeChat Verify failed") ctx.JSON(http.StatusBadRequest, gin.H{"error": "WeChat Verify failed"}) } }
声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。
Author: mengbin92
Github: mengbin92
cnblogs: 恋水无意
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具