验证来自微信服务器的消息

验证,来自,服务器,消息 · 浏览次数 : 112

小编点评

**Go 消息验证** ```go import ( "crypto/sha1" "encoding/hex" "fmt" "github.com/gin-gonic/gin" ) type WeChatVerify struct { Signature string Timestamp string Nonce string Echostr string } func (p *WeChatVerify) Verify() bool { // 计算签名 s := []string{p.Signature, p.Timestamp, p.Nonce} str := strings.Join(s, "\") hashs := sha1.New() hashs.Write([]byte(str)) signature := hex.EncodeToString(hashs.Sum(nil)) // 验证签名是否正确 if signature == p.Signature { return true } 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, err := sonic.Marshal(verify) if err != nil { log.Error("Get WeChatVerify from wechat server: ", err) ctx.JSON(http.StatusBadRequest, gin.H{"error": "Get WeChatVerify failed"}) return } 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)进行许可,使用时请注明出处。

正文

内容来自微信官方文档

接入微信公众平台开发,开发者需要按照如下步骤完成:

  1. 填写服务器配置
  2. 验证服务器地址的有效性
  3. 依据接口文档实现业务逻辑

微信官方的文档已经写得很详细,官方给出的例子是基于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: 恋水无意


与验证来自微信服务器的消息相似的内容:

验证来自微信服务器的消息

内容来自微信官方文档。 接入微信公众平台开发,开发者需要按照如下步骤完成: 填写服务器配置 验证服务器地址的有效性 依据接口文档实现业务逻辑 微信官方的文档已经写得很详细,官方给出的例子是基于php的,这里给出go实现的消息验证,http框架使用的是gin。 type WeChatVerify st

【asp.net core】自定义模型绑定及其验证

引言 水此篇博客,依旧是来自群里的讨论,最后说到了,在方法参数自定义了一个特性,用来绑定模型,优先从Form取,如果为空,或者不存在,在从QueryString中获取并且绑定,然后闲着无聊,就水一篇博客,如果大家有什么需求或者问题,可以找我,很高兴能为你们带来帮助。 IModelBinderFact

Python第三方库pydash功能介绍

# Python第三方库pydash功能介绍 > 本文来自ChatGPT的回答整理 > > demo部分都验证过ok # 介绍 `pydash` 是一个 Python 库,用于提供类似于 JavaScript 库 `lodash` 的功能。`lodash` 是一个在 JavaScript 中广泛使用

ASP.NET Core如何禁用模型验证(或者从模型状态中移除某些属性)?

这是一篇4年前的文章:【经验分享】在ASP.NET Core中,如果禁用某个请求的模型验证? 事隔多年,又有网友问到这个问题。我就来重新整理一下,顺便扩展一下之前的解决办法。 这是一个来自网友【David】的提问。在 AppBoxCore 项目的新增用户页面,新增一个上传按钮:

[转帖]即插即用安全验证模块-使用pam模块

https://www.cnblogs.com/hongjinping/p/13174272.html 可插入式验证模块(PAM) 。可插入式验证木块 。应用程序调用libpam函数来验证和授权用户 。libpam基于应用程序的PAM配置文件做检测 。可以通过libc在NSS中检查 。共享的,动态可

算法金 | 必会的机器学习评估指标

构建机器学习模型的关键步骤是检查其性能,这是通过使用验证指标来完成的。 选择正确的验证指标就像选择一副水晶球:它使我们能够以清晰的视野看到模型的性能。 在本指南中,我们将探讨分类和回归的基本指标和有效评估模型的知识。 学习何时使用每个指标、优点和缺点以及如何在 Python 中实现它们 1 分类指标

Jmeter进行HTTPS接口压测及SSL证书验证

一、前言 使用JMeter压测HTTPS接口比较简单,只需要预先处理SSL证书认证,后面就是压测HTTP接口的通用步骤。 HTTPS连接证书来验证浏览器和WEB服务器之间的连接。通过HTTP连接时,服务器会将证书提供给浏览器。为 了对证书进行身份验证,浏览器会检查服务器证书是否链接到其内置根CA之一

[转帖]openGauss与PostgreSQL对比测试SSL之自签名CA证书单向认证测试

https://zhuanlan.zhihu.com/p/367697233 本文测试自签名CA证书的单向认证: 客户端只验证服务器证书的有效性,而服务器端不验证客户端证书的有效性。服务器加载证书信息并发送给客户端,客户端使用根证书来验证服务器端证书的有效性。 服务端证书的客户端认证模式 客户端SS

基于WebSocket的modbus通信(一)- 服务器

ModbusTcp协议是基于tcp的,但不是说一定要通过tcp协议才能传输,只要能传输二进制的地方都可以。比如WebSocket协议。 但由于目前我只有tcp上面的modbus服务器实现,所以我必须先用tcp连接借助已有工具来验证我的服务器是否写正确。 效果 ModBusTCP协议报文 ModBus

[转帖]架构真经

1 大道至简 1.1 规则1 避免过度设计 【内容】在设计中警惕复杂的解决方案 【应用场景】适用于任何项目,应用所有大型项目和复杂系统或项目设计过程中 【用法】通过测试同事是否轻松的理解解决方案,来验证是否存在过度设计 【原因】复杂的解决方案实时成本过高,而且长期维护费用昂贵 【要点】过于复杂的系统